本文旨在通过CentOS系统 + docker实现快速搭建 Stardew Valley 服务器(不要问我为什么不用Windows Server)
环境搭建
首先购买一个服务器,这里使用腾讯云79元的轻量应用服务器(2c2g 3M)为例。在安装系统时候可选择预装了Docker的操作系统,也可选择普通的 CentOS。
执行以下代码,更新yum,并切换到国内源,以加速下载
sudo yum update -y
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache
执行以下代码安装docker 和 git(如果没有预装),并启动docker服务,添加开机自启动
sudo yum install -y docker-ce git
sudo systemctl start docker
sudo systemctl enable docker
将用户加入docker用户组
sudo usermod -aG docker $USER
newgrp docker
执行以下命令,检查是否正确安装
docker info
执行以下代码添加docker hub源,防止pull出错(见:Docker/DockerHub 国内镜像源/加速列表(1月27日更新-长期维护)-腾讯云开发者社区-腾讯云)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
至此准备工作完毕。
搭建服务器
执行以下命令,克隆GitHub项目
git clone https://github.com/norimicry/stardew-multiplayer-docker.git
cd stardew-multiplayer-docker
这个项目似乎有一点问题,就是可执行文件的位置不对,我不确定是否是作者疏忽了,后续我可能发个issue确认一下,暂时可以通过以下代码修正。
nano docker/start.sh
将StardewValley改为StardewModdingAPI(即打了SMAPI的版本),如图
设置环境变量,steam用户名及密码
## Set these variables only during the first build or during updates
export STEAM_USER=<你的steam用户名>
export STEAM_PASS=<你的steam密码>
export STEAM_GUARD=<你的steamguard代码> # If you account is not protected, don't set
docker compose -f docker-compose-steam.yml up
由于在服务器登录steam账户,steam会向你发送邮件,内容类似这样
看起来您正在尝试使用新设备登录。此处是您访问帐户所需的 Steam 令牌验证码: |
请求来自中国 XXXXX |
你需要把这个五位代码填入STEAM_GUARD,再次docker compose
export STEAM_GUARD=<你的steamguard代码>
docker compose -f docker-compose-steam.yml up
最后,执行以下代码,应该可以看到 container 了
docker ps
配置服务器
由于星露谷没有官方的服务端,所以我们相当于在服务器开了一个游戏进程。为了开启联机服务,我们需要手动创建一个地图。
但是我们不可能每次都打开一次远程桌面,这就是为什么这个 docker image 预装了SMAPI和always on server mod。这个mod可以自动加载联机地图,自动睡觉(默认时间22:00),自动主持活动,无玩家时暂停游戏等等。
为了联机和打开远程桌面,我们需要开放以下端口:注意!游戏端口24642是UDP协议!
均设置为允许
然后下载一个VNC远程桌面软件,这里我推荐开源免费的TightVNC(www.tightvnc.com)
安装后,打开TightVNC Viewer,并连接到 你的服务器ip:5902
密码输入 insecure,然后你就能看见游戏界面了
点击coop->host->host new farm
这里Starting Cabins是初始联机小屋数量,有几个就能连几个人,最大默认为7
一定记得勾上skip intro,不然会卡的不行
看到类似的界面就可以关闭vnc了,此时服务器mod已经启用,如果没有的话按一下F9
之后最好关闭之前放行的5902端口!
至此服务器搭建已经完成,打开客户端的界面,点击合作->加入局域网游戏
输入你的服务器ip地址即可(不需要端口,因为星露谷强制使用24642端口)
后话
可以为自己的服务器申请一个域名,并且dns解析到自己的服务器地址,便于他人访问。
服务端的存档放在 valley_saves 文件夹,mod 放在docker/mods下,服务端的mod要与客户端同步。
星露谷对配置要求不高,基本运行后占用600~700M内存,但是由于用CPU渲染,会导致CPU占用率接近100%,但是问题不大。
另外星露谷服务器并没有设置密码保护之类的功能,最好做好备份并不要随意公布ip。
祝大家玩的愉快 😛