简介
此篇文章介绍饥荒联机版服务器可视化管理后台的部署以及使用方式。
功能是这位开源大佬做的:[dst-admin-go]
简单介绍下有了这个之后,可以通过页面完成哪些事情:
- 启动 / 停止服务
- 世界配置(世界个性化配置)
- 房间设置(人数、黑白名单等)
- 模组设置(订阅、启 / 禁用、选项配置)
- 备份 / 还原存档
- 等等还有许多,大家可以自行研究,并且作者还在更新中。
方案
前面我们已经完成的环境:WSL2 + ArchLinux + Docker
后面的系列教程,只要基于 Docker 环境的,其实就不依赖于我们前面的那些了。
只要能做到这样即可:
- 有 Docker 环境
- 能正常使用 Docker,拉镜像
因此,这次我分享的使用方案这样:
- 先直接启动 Docker
- 使用 Docker cp 命令把文件全部映射到本地
- 再使用 Docker Compose 启动部署
- 定期备份存档,后面只要保证我们的存档还在,即使服务重装了,导入存档即可无缝衔接使用
下面进行演示,以及相关代码
演示
从我的 WSL2 中的 ArchLinux 开始
准备
提前把代理打开准备好。如果还没设置过,可以参考上篇关于 Docker 日常使用部分
进入自己打算放的目录,比如我的:/home/chunxiao.li/dockers/dst-admin
根目录下创建:docker-compose.yaml文件,内容如下:
services:
dst-admin-go:
image: hujinbo23/dst-admin-go:1.5.0
restart: unless-stopped
ports:
- "8082:8082"
- "10999:10999/udp"
- "10998:10998/udp"
此时,所有数据都没持久化,先运行起来,把文件生成,执行命令:
# 启动服务
sudo docker-compose up -d
# 查看启动日志
sudo docker-compose logs -f
启动至少会执行10分钟以上,观察日志,耐心等待
到这一步,才算是启动完成。
可以访问地址看一下,比如:http://127.0.0.1:8082/
这样就是启动成功了,刚上来是进行初始化配置,我们可以把账号、密码等设置好。
设置好了之后,不要着急操作,我们现在还没有做持久化,也就是下次重启 Docker 之后,我们的数据就没了,所以这时候,先不要停服务。做下面的操作。
切记,不要停服务!
持久化
通过 docker cp
命令把运行中的文件cp到本地,在根目录执行(dst-admin)
可以先通过这个命令查找到自己启动的 docker 名字
sudo docker ps
# 找到dst-admin-go的这一行的 NAME 列,比如我的就是:
dst-admin-dst-admin-go-1
如果名字跟我的不一致,下面的代码中记得自己替换
# 创建持久化要保存数据的地方
mkdir -p ./dst-data/app
sudo docker cp dst-admin-dst-admin-go-1:/root/.klei/DoNotStarveTogether ./dst-data/
sudo docker cp dst-admin-dst-admin-go-1:/app/backup ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/mod ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/dst-db ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/dst-admin-go.log ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/dst-dedicated-server ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/steamcmd ./dst-data/app/
sudo docker cp dst-admin-dst-admin-go-1:/app/password.txt ./dst-data/app/password.txt
sudo docker cp dst-admin-dst-admin-go-1:/app/first ./dst-data/app/first
以上是该镜像中,暴露出来的所有的目录,我们都进行一个持久化保留
个别文件比较大,等一下,操作成功是这样:
这时候就可以把运行中的 Docker 停掉了
sudo docker-compose down
然后修改新的 docker-compose.yaml
,把本地映射加进去(建议把之前的备份,方便以后重新操作)
cp docker-compose.yaml docker-compose.yaml.init
vim docker-compose.yaml
内容如下
services:
dst-admin-go:
image: hujinbo23/dst-admin-go:1.5.0
restart: unless-stopped
volumes:
- ./dst-data/DoNotStarveTogether:/root/.klei/DoNotStarveTogether
- ./dst-data/app/backup:/app/backup
- ./dst-data/app/mod:/app/mod
- ./dst-data/app/dst-dedicated-server:/app/dst-dedicated-server
- ./dst-data/app/steamcmd:/app/steamcmd
- ./dst-data/app/dst-db:/app/dst-db
- ./dst-data/app/password.txt:/app/password.txt
- ./dst-data/app/first:/app/first
- ./dst-data/app/dst-admin-go.log:/app/dst-admin-go.log
ports:
- "8082:8082"
- "10999:10999/udp"
- "10998:10998/udp"
这时候就可以再次启动了:
sudo docker-compose up -d
重要Tips
容器内部的代理一定不要开
容器内部的代理一定不要开!
容器内部的代理一定不要开!
容器内部的代理一定不要开!
不然会在登录认证的时候报错,类似于这样的报错:
[00:00:08]: CURL ERROR: (login.kleientertainment.com) [35]gnutls_handshake() failed: The TLS connection was non-properly terminated.
[00:00:08]: [0] Account Failed (6): ""
[00:00:08]: [Warning] Empty error code received, dumping response:
[00:00:08]:
[00:00:08]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[00:00:08]: !!!! Your Server Will Not Start !!!!
[00:00:08]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[00:00:08]: No auth token could be found.
[00:00:08]: Please visit https://accounts.klei.com/account/game/servers?game=DontStarveTogether
[00:00:08]: to generate server configuration files
为此我折腾了一个下午,不然视频早录出来了,大概原因就是使用代理的话,访问 login.kleientertainment.com
会失败,不能启用代理。
最终我是在能正常运行的环境容器内和这次有问题的容器内,执行命令发现了异常:
# 进入容器内部
sudo docker compose exec dst-admin-go bash
# 访问上面网址试试
wget login.kleientertainment.com
可以试一下,开代理和不开代理,看到的结果是不一样的,由此我把代理关了,然后就发现一切正常了
这个问题报错是找不到 cluster_token.txt,因此排查方案一直在文件、权限、token正确性上面进行,很不容器才最后找到了网络代理的问题(对比两次启动日志,一行一行对比~~~)
注意镜像版本
这是作者的镜像页面:dst-admin-go
注意两件事:
- 2.x.x 为多房间版本,1.x.x 为多层版本(大部分使用1.x.x版本即可,这个玩明白了之后,可以尝试2版本研究研究)
- 不要直接使用 latest,一定上去找到自己需要的版本
简单使用
首次使用
这时候我们的服务器已经启动了,我们可以直接进行世界配置(修改默认选项等等),房间设置(人数什么的)
然后如果需要模组,就在模组设置里面,先进行模组订阅、再在模组设置中,进行启用、配置,最后保存
等所有配置完成的时候,在面板操作中启动世界即可
从备份导入
比如我们在做一些大的操作(更新、迁移)之前,先去进行一个备份,然后下载下来,自己找个地方存起来。假如操作失误,所有数据丢失了,也可以继续通过上面的方式重新安装部署,然后在这里直接导入,随后恢复即可。
客户端连接,直接使用:
c_connect("dockerip",10999,"123456")
结语
最后,具体使用细节就不过多介绍了,自己摸索就成
再次感谢作者,欢迎大家都去给作者点 star,再次贴上地址:[dst-admin-go]
快把服务搭起来,喊上你的小伙伴们一起建设家园吧!