ChrisKim
Do not go gentle into that good night.
颢天

从零开始使用云服务器搭建 Minecraft 服务器

视频

b 站在线观看:https://www.bilibili.com/video/BV1pa411G7zy

视频文件下载:https://www.aliyundrive.com/s/TNhChprmXWQ

视频与本文都采用 CC BY-NC-SA 4.0 许可,转载和二次创作请遵守该协议。请前往协议网站,或查看视频分享文件夹内的 LISENCE.txt 文件查看详细协议。

## 提问前请前往文章底部以及评论区,查看是否有相同问题已经被解答 ##

资料

P1 全套基本流程

① 服务器购买

② 远程登录服务器

Xshell 官网:https://www.xshell.com/zh/

③ 配置服务器环境

  1. 更新软件包列表:apt update
  2. 安装 Java 运行时环境:apt install openjdk-17-jre (数字即版本,可对照下表更改)
Minecraft 版本Java 版本
1.18 ~ 1.2017
1.1716
1.12 ~ 1.168+
1.11 以下8(再老则需要 7)
  1. 检查环境是否正常:java -version (若输出了安装的版本即正常)
  2. 安装 MCSManager:sudo wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | sudo bash

官方 Gitee 仓库:https://gitee.com/mcsmanager/MCSManager
官方 GitHub 仓库:https://github.com/mcsmanager/MCSManager

  1. 启用 MCSManager 服务:systemctl enable mcsm-{daemon,web}.service
  2. 运行 MCSManager 服务:systemctl start mcsm-{daemon,web}.service
  3. 检查 MCSManager 服务状态:systemctl status mcsm-{daemon,web}.service(绿色即正常,按 q 退出页面)
  4. 放通防火墙:需要放通 23333 与 24444 端口(TCP 协议)
  5. 访问 MCSManager 面板:浏览器打开 http://<公网IP>:23333/

warning 请记住你设置的账号密码
从教程发出到现在一直有人询问忘记密码怎么办,面板是没有可视化重置功能的。在此提醒请记住你设置的账号密码,如果忘记请自行查阅官方文档使用指令进行重置。

④ 配置 Minecraft 服务端

  1. Minecraft 官方原版服务端:https://run.sh.cn/mcs
  2. 放通防火墙:需要放通 25565 端口(TCP 协议)

配置文件重点:

  • gamemode
    • survival – 生存
    • creative – 创造
    • adventure – 冒险
  • difficulty
    • peaceful – 和平
    • easy – 简单
    • normal – 中等
    • hard – 困难
  • max-players
    • 最大玩家数量
  • online-mode
    • true – 只有正版能进服
    • false – 无正版验证
  • white-list
    • true – 只有白名单玩家能进服
    • false – 任何玩家能进服

warning 自行负责服务器安全
从教程发出到现在一直有人反馈服务器被恶意攻击破坏,在此提醒服务器安全自行负责,遭到破坏我不提供任何协助。以下配置是高风险的:正版服务器不开启白名单、盗版服务器不安装任何登陆插件(盗版服务器白名单无意义).

⑤ 尝试连接服务器

开启游戏,添加多人服务器,服务器地址填写服务器的公网 IP。

P2 域名购买和解析

① 域名购买

阿里云域名购买:https://wanwang.aliyun.com/

新用户域名一般都非常便宜,后缀对使用没有影响,选择便宜的即可。

购买后可能需要实名认证,认证完成后就可以进行解析了。

② 域名解析

阿里云域名列表:https://dc.console.aliyun.com/#/domain-list/all

进入解析后,点击添加记录:

  • 记录类型:A
  • 主机记录:任意,若填写 @ 则代表无前缀
  • 解析线路:默认
  • 记录值:填写服务器公网 IP
  • TTL:默认 10 分钟,意思是解析记录修改后的生效时间

P3 Java 版 Mod 服

① 下载安装并测试 Forge

注:我的云盘只收集了主流版本的目前最新版,想要最新请前往官网。

启动脚本示例:java -Xms1G -Xmx4G -jar forge-1.12.2-14.23.5.2859.jar nogui

参数解释(请根据自身情况修改,不可复制示例):

  • -Xms*G:虚拟机最低内存 *GB,不是很重要,设置 1G 即可。
  • -Xmx*G:虚拟机最高内存 *GB,不能超过服务器内存上限,根据自己调整。
  • -jar *:指定需要启动的 jar 文件,后面接文件名。
  • nogui:指定不需要可视化界面。

② 上传 Forge 服务端到服务器并测试启动

(视频中 Java 版本的卸载与安装内容移至另一个专题来讲解)

没啥其他要说的

③ 下载安装并测试 Fabric

注:我的云盘只收集了主流版本的目前最新版,想要最新请前往官网。

④ 上传 Fabric 服务端到服务器并测试启动

没啥其他要说的

P4 基岩版服务器

① 下载基岩版服务端

官网:https://www.minecraft.net/en-us/download/server/bedrock

② 上传到服务器

启动命令填写:./bedrock_server

③ 赋予服务端执行权限

  1. 复制当前服务器的工作路径,下文用 <Directory> 表示
  2. 使用 Xshell 连接到服务器,进行下面的操作。
  3. 进入服务器目录:cd <Directory>
  4. 查看当前目录的文件:ll
  5. 给服务端赋予执行权限:chmod +x bedrock_server
  6. 查看当前目录的文件:ll,若服务端变绿即拥有执行权限

④ 运行服务器

点击开启实例,正常运行。

放通防火墙:需要放通 19132 端口(UDP 协议

⑤ 尝试连接服务器

开启游戏,添加多人服务器,服务器地址填写服务器的公网 IP,端口默认 19132

P5 切换服务器 Java 版本

① 卸载旧的版本

  1. 检查当前安装的版本:java -version
  2. 卸载当前版本:apt remove openjdk-17-jre(以 Java 17 为例)
  3. 清理残留依赖包:apt autoremove
  4. 检查是否完全卸载:java -version(若报错则卸载成功)

② 安装新的版本

  1. 安装新的版本:apt install openjdk-8-jre(以 Java 8 为例)
  2. 检查当前安装的版本:java -version

P6 开启交换分区

对于 Linux 系统,如果出现系统内存不足的情况,内核会启用 OOM Killer 选择进程将其杀死,这就是为什么有时候服崩了/面板崩了。

开启交换分区后,若系统内存紧张,内核将会把内存中不活动的内存页面写入交换分区(磁盘)从而释放内存空间,缓解内存压力。可以一定程度防止进程被杀死。

注意:交换分区只是妥协方式,磁盘 I/O 性能和内存是天壤之别,内存不足会导致严重卡顿。

创建文件

指令结尾数字即 SWAP 大小,2048 即 2GB,一般 2~4G 就够用了。

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

设置权限

sudo chmod 600 /swapfile

设置文件为交换分区

sudo mkswap /swapfile

启用交换分区

sudo swapon /swapfile

启用自动挂载

echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

检查状态

swapon -s

FAQ (常见问题)

1. Unable to access jarfile xxx.jar

压缩包多了一层,正确的压缩包结构根目录就是服务端文件,而不是多了一层文件夹。具体解释在视频 P3 的 11:53 处。

2. MCSM 安装脚本报错 / 脚本装不上 Node 环境

使用错了脚本版本,MCSM 面板英文网站脚本是国外节点版,中文网站是国内节点版,因此若在国内安装请用国内节点版(gitee.com 开头),否则大概率因为网络问题装不上。本文的脚本便是正确版本。

3. MCSM 安装脚本权限不足,报 Please execute the MCSManager installation command with root permission!

命令需要使用 sudo 管理员权限运行,同时改命令内含有管道运算符,| 前后为两条指令,都得加 sudo,示例:sudo wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup.sh | sudo bash

4. 包含 OutOfMemoryErrorJava heap space 等字样崩服(这种情况常出现在加载地图时爆内存)

内存溢出导致崩服,说明服务器配置不够了,得加钱升级配置了。当然,升级前先看下自己启动脚本写的对不对,-Xmx 参数是否充分利用了服务器内存,别出现 8G 服务器写个 -Xmx4G 这种低级错误。

5. apt install openjdk-7-jre 装不上 Java 7

Java 7 太过于古董,目前的 Ubuntu 软件包仓库已经将其剔除了。如果你真必须得用 Java 7,可以百度下 Ubuntu 安装 Java 7 的教程(因为确实很少情况用得上所以不打算录视频说)

6. 怎么给服务器装插件?

装插件必须使用插件服务端,原版、forge、fabric 均不是插件服务端,不能装插件,后两者只能装 mod!若要装插件,需要自己配插件服务端,也可以找找有没有插件端整合包。

7. 正版连不上 / 盗版连不上

若不关正版验证盗版肯定连不上!若开启正版验证正版连不上,并显示身份验证服务器正在停机维护 / 无效会话 等等错误,说明你游戏的正版账号掉线了,去启动器退出重登正版账号。

8. Xshell 连不上服务器

请确认自己服务器镜像是 Linux 而不是 Windows,不要出现自己装个 Windows Server 连不上 SSH 过来浪费我时间的情况。装错了的话去重置系统镜像。

9. 没有 apt 指令,报错 -bash: apt: command not found

请确认自己服务器镜像是 Ubuntu 20.04 而不是其他 Linux 发行版比如 CentOS 7. 装错了的话去重置系统镜像。

10. 面板安装时 GitHub 连接异常

官方不知何时更换了国内安装脚本的链接,因此需要使用新安装脚本:
sudo wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | sudo bash

11. 每过一段时间 MC 服务器崩了 / 面板崩了打不开

系统内存严重不足,导致进程被 Linux 内核杀死。可以尝试启用 SWAP 分区,但是治标不治本。建议升级内存配置。

本文链接:https://www.zouht.com/2954.html
本文使用:CC BY-NC-SA 4.0 许可
# # #
首页      教程      从零开始使用云服务器搭建 Minecraft 服务器

回复 zstzst 取消回复

textsms
account_circle
email

  • Roanlan

    大佬,请问为啥我在MCSManger中重启实例后地图和玩家管理权限啥的都没了

    7月前 回复
  • HH

    原生启动命令:
    Java -Xmx4G -jar fabric-server-launch.jar nogui

    仿真终端中转命令:
    程序:/opt/mcsmanager/daemon/lib/pty_linux_x64
    参数:[“-dir”,”/opt/mcsmanager/daemon/data/InstanceData/0d84b1e6b6f844078ab16ea60da7fa48″,”-cmd”,”[\”Java\”,\”-Xmx4G\”,\”-jar\”,\”fabric-server-launch.jar\”,\”nogui\”]”,”-size”,”140,40″,”-color”,”-coder”,”UTF8″]

    请将此信息报告给管理员,技术人员或自行排查故障。
    如果您认为是面板仿真终端导致的问题,请在左侧终端设置中关闭“仿真终端”选项,我们将会采用原始输入输出流的方式监听程序。

    [MCSMANAGER] [Error] 实例启动失败,请检查启动命令,主机环境和配置文件等

    7月前 回复
  • Ryuhime

    算是很完整的一篇教程了,不过关于MCSManager有疑问,毕竟头一次见这个工具。早之前我搭建过服务器,1.18.1版本时,那时候没见过这个工具,按过去流程和up的流程相比,up的教程似乎没有关于screen去后台运行的部分,想问下MCSManager是有了类似功能所以不需要screen了是吗?

    7月前 回复
    • ChrisKim博主

      @Ryuhime: 不需要了,MCSM已经做好了进程守护,无需再用screen这种手动方式进行操作了。

      7月前 回复
      • Ryuhime

        @ChrisKim: 谢谢,原来如此,那这个工具确实好用,省掉了不少功夫

        7月前 回复
  • sns

    你好,非常感谢你的教程!我想问一下,安装完mcsm后提示登陆,可是我试过密码都不行,怎么重置密码吗?

    7月前 回复
  • sns

    楼上问题已经解决了,最后一个问题,BV1pa411G7zy用视频中的方法建设服务器如何设置内存?我用的2G内存服务器,看监控最多使用了1.1G就崩服了,

    7月前 回复
    • ChrisKim博主

      @sns: 不可能全用完的,你还得给系统留一点。另外因为进制转换,2G 的内存显示出来也不是整 2G,会少一点。

      7月前 回复
  • Shelrocx

    为什么我在mcs页面启动实例,preparing spawn area进度一直是0%哇??

    6月前 回复
  • Shelrocx

    楼上的问题尝试了各种方法都没能解决…. 希望博主大佬能帮帮忙T^T

    6月前 回复
  • sns

    开两个实例的话,同一个ip怎么样区分服务器进入不同实例?

    6月前 回复
  • Genshin-Lower

    java17 MC版本 1.20.1 forge 什么mod都没装 本地测试正常

    [MCSMANAGER] [INFO] 正在准备启动实例…

    [MCSMANAGER] [ERROR] 检测到实例进程/容器启动失败(PID 为空),其可能的原因是:
    1. 实例启动命令编写错误,请前往实例设置界面检查启动命令与参数。
    2. 系统主机环境不正确或缺少环境,如 Java 环境等。

    原生启动命令:
    @libraries/net/minecraftforge/forge/1.20.1-47.2.17/unix_args.txt “$@”

    仿真终端中转命令:
    程序:/opt/mcsmanager/daemon/lib/pty_linux_x64
    参数:[“-dir”,”/opt/mcsmanager/daemon/data/InstanceData/10cb4899259e44198c2911d30c045501″,”-cmd”,”[\”@libraries/net/minecraftforge/forge/1.20.1-47.2.17/unix_args.txt\”,\”$@\”]”,”-size”,”140,40″,”-color”,”-coder”,”utf8″]

    请将此信息报告给管理员,技术人员或自行排查故障。
    如果您认为是面板仿真终端导致的问题,请在左侧终端设置中关闭“仿真终端”选项,我们将会采用原始输入输出流的方式监听程序。

    [MCSMANAGER] [Error] 实例启动失败,请检查启动命令,主机环境和配置文件等

    这个怎么解决啊

    3月前 回复
  • aaaa

    原本在阿里云创服玩了差不多一个月,现在在腾讯云重新开了个服,并且把原来的存档移过来了,结果一直身份验证服务器处于宕机状态,重新登微软账号也没用,一个人都进不去,可以帮忙解答一下吗

    3月前 回复
  • super_laji

    因为本人是个铸币,纯净服被usa的人熊了,而上次存档是三天前,只能回档到三天前了吗?另外我想学习服务器装插件的放熊的相关知识,有推荐的教程吗

    3月前 回复
    • ChrisKim博主

      @super_laji: 你没装额外的插件那就只能回到三天前了。另外教程没有,得你自己找咯。还有个简单粗暴的方法就是提高备份频率。

      3月前 回复
  • 悠远之空

    大佬怎么卸载里云里的java8?

    2月前 回复
  • ep

    感谢教程让我把服务器搭起来了,但我现在服务器流量消耗越来越高了,现在10元只能用一个上午,不懂为什么消耗会这么大呀?问下您有没有什么解决办法

    2月前 回复
  • winter

    我在服务器上安装mcsm之后输入status后第二条web网页列表连接失败,请问有什么解决方案吗?

    2月前 回复
  • dyl

    博主你好,我想问一下 [18:07:05] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
    [18:07:08] [Forge Version Check/INFO] [forge.VersionCheck]: [forge] Found status: AHEAD Target: null 这种情况要怎么解决呢

    2月前 回复
    • ChrisKim博主

      @dyl: 它在请求 forge 官网进行版本检查,但是访问失败了,大概率是因为 forge 官网访问不通畅。

      2月前 回复
      • dyl

        @ChrisKim: 我还有一些模组也有一样的提示,请问有什么解决办法吗

        2月前 回复
  • wangba

    连接服务器出现io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostExcoetion:No route to host: no further information:
    电脑关闭防火墙修改DNS也没有
    其他人也进不去服务器
    我的服务器是1.12.2版本Forge服务器
    我该怎么修改

    2月前 回复
  • dyl

    博主你好,我想问一下我开Javamod服,前面的步骤一切正常,但是在游戏里连接服务器却怎么也连不上,这种情况该怎么办,望解答,感激不尽!!

    2月前 回复
  • daoiad

    博主你好,我自己运行实例时遇到这个问题
    Exception in thread “main”
    java.awt.HeadlessException:
    No X11 DISPLAY variable was set,
    or no headful library support was found,
    but this program performed an operation which requires it,
    at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:166)
    at java.desktop/java.awt.Window.(Window.java:553)
    at java.desktop/java.awt.Frame.(Frame.java:428)
    at java.desktop/java.awt.Frame.(Frame.java:393)
    at java.desktop/javax.swing.SwingUtilities$SharedOwnerFrame.(SwingUtilities.java:1919)
    at java.desktop/javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1995)
    at java.desktop/javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1696)
    at java.desktop/javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:875)
    at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:677)
    at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:648)
    at net.minecraftforge.installer.SimpleInstaller.launchGui(SimpleInstaller.java:191)
    at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:161)
    我不知道怎么解决,想像您请教一下

    1月前 回复
    • ChrisKim博主

      @daoiad: 没加 nogui 参数,服务端尝试弹出图形化窗口而报错。

      1月前 回复
      • daoiad

        @ChrisKim: 大佬我又遇到了一个报错,我在网上找了很多方法还是没解决
        JVM info: Oracle Corporation – 19.0.2 – 19.0.2+7-44
        java.net.preferIPv4Stack=true
        Current Time: 20/02/2024 16:40:34
        Exception in thread “main”
        joptsimple.UnrecognizedOptionException: n is not a recognized option
        at joptsimple.OptionException.unrecognizedOption(OptionException.java:108)
        at joptsimple.OptionParser.validateOptionCharacters(OptionParser.java:633)
        at joptsimple.OptionParser.handleShortOptionCluster(OptionParser.java:528)
        at joptsimple.OptionParser.handleShortOptionToken(OptionParser.java:523)
        at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:59)
        at joptsimple.OptionParser.parse(OptionParser.java:396)
        at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:93)
        想再请教您,感谢

        1月前 回复
        • ChrisKim博主

          @daoiad: 启动指令是不是写的有问题?它说 n 不是一个可用选项,你是不是指令里有 -n 这种参数

          1月前 回复
  • gugugu33

    大佬我想问下,我在mcsm里下载服务器存档,但是存档下载失败下不出来是为什么

    1月前 回复
  • skot

    请问重启了一下电脑之后Xshell服务器连接回去无法输入内容了,没有弹出来登录弹窗怎么办

    1月前 回复
  • skot

    重启电脑之后MCSManager也断开链接了,现在无法操作Xshell也无法重连MCSManager

    1月前 回复
  • crab

    按步骤把zip文件上传到MCSM的服务器上了 但是压缩文件不自动解压 而且点击解压也没有反应怎么解决

    2周前 回复
  • 619

    博主你好,我在上传fabric服务端的时候遇到了问题,每次上传进度跑到100%的时候都会显示request failed with staus 500。只有把服务端里的5个G的world文件去掉才能上传成功,world文件是从另一个也是我看着这个教程搭出来的服务器导出的,两个服不在一个节点下。想知道我的world文件是不是有什么问题,怎么样才能成功导入

    2周前 回复

颢天

从零开始使用云服务器搭建 Minecraft 服务器
视频 b 站在线观看:https://www.bilibili.com/video/BV1pa411G7zy 视频文件下载:https://www.aliyundrive.com/s/TNhChprmXWQ 视频与本文都采用 CC BY-NC-SA 4.0 许…
扫描二维码继续阅读
2022-08-23