最近又跟朋友回坑泰拉瑞亚(Terraria),一开始用的是游戏自带的"开房间"联机,体验真的很劝退:主机卡一下全房间一起卡,主机一下线大家就玩不了,而且跨网络联机延迟高得离谱,boss 战里人物漂移是家常便饭。
折腾了一晚上之后我决定直接把服务端搬到云服务器上,开个 24 小时在线的专用服务器。效果立竿见影:不管谁在线都能进,延迟稳定,主机也不用一直挂着游戏。整个过程比想象中简单,用 Docker 二十分钟就能搞定,这篇把完整流程记下来,照着抄就行。
一、准备工作
一台云服务器就够了,泰拉瑞亚服务端非常轻量,配置要求可以参考下表:
| 配置 | 2~4 人玩 1 核 1G 起步,5~8 人建议 2 核 2G |
| 系统 | Ubuntu 22.04 LTS |
| 带宽 | 3M 以上即可,这游戏流量很小 |
| 需要放行的端口 | 7777(游戏连接) |
我自己用的是雨云rainyun-com的 2 核 2G 机器,挂一个中型世界五六个人玩很流畅,注册填码:2026off,可领5折,一个月十来块钱。大厂的轻量应用服务器也能跑,优势是节点多、品牌大,缺点是同配置月付要高一些,按自己预算选就行。
二、安装 Docker
服务端我们用社区维护的 ryshe/terraria 镜像(可以去 Docker Hub 搜这个名字看说明),它把泰拉瑞亚服务端和 TShock 打包好了,省得自己装 .NET 运行库和一堆依赖。TShock 是泰拉瑞亚最常用的服务端增强工具,自带权限管理和反作弊,开公开服基本离不开它,这个镜像直接内置了。
之所以用 Docker 而不是手动装服务端,一是环境隔离干净,搞坏了删掉容器重来就行;二是以后游戏更新版本,重新拉个新镜像就完成升级,不用重新折腾环境。
Ubuntu 22.04 自带的软件源里就有 Docker,两条命令装好:
sudo apt update
sudo apt install -y docker.io
启动并设置开机自启,然后验证一下:
sudo systemctl enable –now docker
docker –version
能看到版本号就说明装好了。
三、首次运行:创建世界
先建一个目录专门存世界存档,这样容器删了存档还在:
mkdir -p ~/terraria/world
然后交互式地跑一次容器来生成世界:
docker run -it –rm \\
-p 7777:7777 \\
-v ~/terraria/world:/root/.local/share/Terraria/Worlds \\
ryshe/terraria:latest \\
-world /root/.local/share/Terraria/Worlds/myworld.wld \\
-autocreate 2 \\
-worldname "myworld"
几个参数说明一下:
- -autocreate 2:自动生成世界,1=小、2=中、3=大。三四个人玩选中型完全够,大世界生成慢、后期也更吃内存
- -worldname:世界名字
- -world:世界文件的保存路径,注意这是容器内路径,照抄即可
跑起来之后它会自动生成世界并启动服务,看到类似 Server started 的字样就说明世界建好了。这时候在控制台输入 exit 回车,世界会自动保存并退出容器。去 ~/terraria/world 目录看一眼,能看到 myworld.wld 文件就成功了。
四、后台长期运行
世界建好之后,以后都用这条命令后台启动:
docker run -d \\
–name terraria \\
–restart unless-stopped \\
-p 7777:7777 \\
-v ~/terraria/world:/root/.local/share/Terraria/Worlds \\
-e WORLD_FILENAME=myworld.wld \\
-e TSHOCK_LANGUAGE=zh_CN \\
ryshe/terraria:latest
其中 WORLD_FILENAME 填你上一步创建的世界文件名,–restart unless-stopped 保证服务器重启后服务器端自动拉起。想看服务端日志的话执行 docker logs -f terraria 就行。
五、放行端口,进游戏
服务器本地的防火墙放行 7777:
sudo ufw allow 7777
另外记得去云服务器控制台的安全组里也把 7777 端口放行,这一步漏了的话外面怎么都连不上,是最常见的坑。
然后打开游戏:多人模式 → 通过 IP 加入 → 选角色 → 输入服务器公网 IP → 端口填 7777,就能进来了。
六、进阶:设个密码,限制人数
公开 IP 的服务器建议设个密码,免得被路人误闯进来拆家。TShock 的配置文件 config.json 就在存档目录里(容器启动后会自动生成),编辑 ~/terraria/world/config.json,找到这几项改掉:
{
"ServerPassword": "你和朋友的暗号",
"MaxSlots": 8,
"PvpMode": 0
}
- ServerPassword:服务器密码,留空就是不设密码
- MaxSlots:最大在线人数,小团体设 8 足够,人太多低配机器会吃力
- PvpMode:0 是关闭 PVP,想开红对蓝互殴就改成 1
改完重启容器生效:
docker restart terraria
七、顺手做个备份
世界文件都在 ~/terraria/world 目录下,定期打包备份一下,几秒钟的事:
tar czvf terraria-backup-$(date +%Y%m%d).tar.gz -C ~/terraria world
建议每周备份一次,泰拉瑞亚的世界文件不大,备份几乎不占空间,但真遇到存档损坏的时候你会感谢自己。
常见问题
问:进游戏提示版本不一致? 答:客户端和服务端版本必须完全一致。镜像的 tag 跟着游戏版本走(比如 vanilla-1.4.5.2 这样的命名),如果你的游戏更新了新版本,去 Docker Hub 搜 ryshe/terraria 找到对应版本的 tag,替换掉命令里的 latest,重新 pull 再启动即可。
问:就两三个人玩,开多大配置合适? 答:1 核 1G 跑个小世界足够了,雨云rainyun-com最低配月付就十几块,先开一个月试试水,人多了再升级配置也来得及,配置是可以随时升的。
问:想装插件怎么办? 答:这个镜像自带 TShock,支持插件。在宿主机建个目录放 .dll 插件文件,启动时加一行 -v ~/terraria/plugins:/plugins 挂载进去就行。
问:换服务器了,存档能迁走吗? 答:可以。存档就是 ~/terraria/world 里的 .wld 文件,用 scp 或者打包下载到本地,再上传到新服务器同样的目录,启动命令里的 WORLD_FILENAME 改成对应的文件名即可,进度一点儿不丢。
总结
整套流程就是:装 Docker → 交互式跑一次生成世界 → 后台启动 → 放行端口,熟练的话二十分钟搞定。有了自己的专用服务器,世界 24 小时在线,朋友想什么时候玩就什么时候玩,进度自动保存,也不用再看主机脸色了。
这套方案还有个隐藏好处:同一个服务器以后想换着玩别的游戏,比如饥荒联机版、星露谷物语,照样是 Docker 一条命令的事,一台机器可以物尽其用。如果你的小团体也在被联机体验折磨,真心建议试一下。





