使用docker搭建游戏服务器
使用docker搭建服务器
前置条件:
- 当然先要安装docker
- 自己编译或其他地方获得的
grasscutter.jar
resources
创建docker network
对docker统一管理,mongodb不对外提供端口,更加安全
1 |
|
创建mongodb容器
1 |
|
创建grasscutter
1 |
|
以下命令是在容器内执行的!
②「在该容器内安装常用软件包」
1 |
|
③「在该容器内安装 jdk-17」
1 |
|
我只安了jre也能启动
服务端资源
- Grasscutter服务器仓库:
https://github.com/Grasscutters/Grasscutter
- resource文件(来自第三方)
https://git.crepe.moe/grasscutters/Grasscutter_Resources
- jar文件可以自己编译或者在仓库发布中找
将这些文件要放在grasscutter容器中
1 |
|
初次执行,产生config.json
config.json
含义说明:
如果是本地运行,里面的两个 PublicIp 不用改;如果是在服务器运行,需要把两个 PublicIp 改为服务器的公网 IP。
“server” 中的的 “bindPort”: 666 是用来处理登录、游戏更新的端口 (DispatchServer),默认的 443 服务器端口可能更容易出问题,比如国内可能需要备案才能使用,或者被 Nginx 等服务占用。且 Windows 服务器也可能会被 VMWare 的 Share 共享服务或者 Steam 占用,所以建议改为别的端口。改好后记得在安全组 / 防火墙放行该端口的 TCP 协议。
“game” 中的 “bindPort”: 22102 是游戏服务器(GameServer)的端口,用来处理一些传送、伤害数值计算等信息,如果是在服务器部署的话记得在安全组 / 防火墙放开这个端口的 UDP 协议,防止出现 4206 错误无法进入游戏。
“welcomeMessage”: “Welcome to Grasscutter!”, 这个是进服务器之后 Server 发给你的欢迎语句,可以改成 “欢迎来到 XXX 私服 “之类的。
“KeystorePassword”: “123456”,证书文件的密码,不需要修改。
“autoCreate”: true, 这个是控制自动创建账号的,改为 true 之后,如果登录私服的时候没有那个账号的话会自动创建一个并登录进去,然后分配默认的 uid,从 10001 开始往后顺延。
“EXPERIMENTAL_RealPassword“: 实验性质的真・密码登录,在之前的版本中密码是形同虚设的
“singlePlayerTeam”: 5 “multiplayerTeam”: 10, 联机队伍中最多角色数,更改之后可以切换联机数量。
mongodbip要改成monggo容器内的ip
1 |
|
配置文件例:
1 |
|
启动:
1 |
|
启动成功后直接关闭就行,不需要 nohup 指令,因为可能会造成性能和空间的消耗。
此时浏览器访问 https://ip:port 可以看到 Welcome to Grasscutter 的字样。
更新
覆盖grasscutter.jar和resource文件夹
config.json可能重新生成需要修改
服务器日常启动
1 |
|
1 |
|
拓展:环境备份方法:
一、Docker 镜像备份法
生成本地镜像:
1 |
|
使用本地镜像:
1 |
|
二、手动备份法
复制 Docker 内指定目录到宿主机:
1 |
|
输出 MongoDB 数据库备份:
1 |
|
恢复所有数据到数据库:
1 |
|