1、云服务器准备
阿里云白嫖一个月
操作系统选择Ubuntu的
配置服务器防火墙,添加10998和10999两个端口,这两个端口分别是地上和地洞
服务器设置root密码,远程连接,使用root账户登录
初次登录要重置密码,设置密码
服务器配置好了
2、安装steamcmd
1、安装环境依赖
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386执行不成功是因为是64位系统,需要启用对32位架构的支持,再执行该命令
启用32位架构
sudo dpkg --add-architecture i386 sudo apt-get update2、安装steamcmd
mkdir -p ~/steamcmd/ ## 创建文件夹 cd ~/steamcmd/ ## 进入文件夹 wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" ## 下载steamcmd_linux tar -xvzf steamcmd_linux.tar.gz ## 解压steamcmd_linux ./steamcmd.sh ## 运行 login anonymous ## 匿名登录 app_update 343050 validate ## 下载饥荒联机版 quit ## 安装完退出 cd ../ ## 回到根节点 mkdir -p ./.klei/DoNotStarveTogether/Cluster_1 ## 创建存档文件夹3、存档导入
去克雷官网获取服务器token;Klei Account
有服务器token就复制一个,没有就添加一个。
在自己电脑游戏中创建一个存档,设置世界,添加模组,生成世界,不用进入
查找自己生成的世界的文件夹,一般在~\Klei\DoNotStarveTogether\548689568\Cluster_1
在文件夹中新建一个txt文件 cluster_token.txt,将之前复制的token贴过去
使用工具将这四个文件上传至服务器之前创建的存档文件夹,.klei/DoNotStarveTogether/Cluster_1
推荐使用 MobaXterm 使用root账号登录,防止出现文件权限问题。
3、启动
在根目录创建启动脚本 run_delicated_servers.sh
vim run_delicated_servers.sh添加以下内容
#!/bin/bash steamcmd_dir="$HOME/steamcmd" install_dir="$HOME/dontstarvetogether_dedicated_server" cluster_name="Cluster_1" dontstarve_dir="$HOME/.klei/DoNotStarveTogether" function fail() { echo Error: "$@" >&2 exit 1 } function check_for_file() { if [ ! -e "$1" ]; then fail "Missing file: $1" fi } cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!" check_for_file "steamcmd.sh" check_for_file "$dontstarve_dir/$cluster_name/cluster.ini" check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt" check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini" check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini" ./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit check_for_file "$install_dir/bin64" cd "$install_dir/bin64" || fail run_shared=(./dontstarve_dedicated_server_nullrenderer_x64) run_shared+=(-console) run_shared+=(-cluster "$cluster_name") run_shared+=(-monitor_parent_process $$) "${run_shared[@]}" -shard Caves | sed 's/^/Caves: /' & "${run_shared[@]}" -shard Master | sed 's/^/Master: /'注意,如果文件是在windows上创建的,脚本文件run_delicated_servers.sh中存在 Windows 风格的换行符(\r\n),而 Linux 系统只支持 Unix 风格的换行符(\n)。这导致了脚本在执行时出现$'\r'的错误,并且在某些行引发了语法错误。
执行以下,解决该问题
sed -i 's/\r//' run_delicated_servers.sh为启动脚本文件添加权限
chmod +x run_delicated_servers.sh ## 添加 x 权限 ls -l run_delicated_servers.sh ## 确认权限执行脚本
./run_delicated_servers.sh等服务器启动后,一直等有一个sim pause弹出代表成功了,Ctrl+C退出,此时根节点中dontstarvetogether_dedicated_server 文件已存在
4、添加mod
进入到mods文件夹中,此时还没有mod,只有四个文件
从自己电脑上拷贝mod上传到服务器,根据 存档文件中/Master/modoverrides文件获取mod的序号
这些就是启用的mod,查找本机mod文件,进入steam安装路径,D:\install\steam\steamapps\workshop\content\322330
饥荒的mod文件放在这里
根据序号,先在电脑上找个地方把他们复制进去。更改文件夹名称添加 workshop- 前缀。再将文件上传至服务器mods文件夹下
5、修改启动脚本
在脚本 run_delicated_servers.sh 中,存在
./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit将该行注释掉
使用以下命令重新启动服务 ,可在donotstarvetogether.log中查看日志
nohup ./run_delicated_servers.sh > donotstarvetogether.log 2>&1 &6、 浏览房间
自己电脑登录游戏,浏览游戏,根据设置的房间名字查找。
7、 部署方式更新
# 饥荒联机版服务器开服 # 服务器版本 Ubuntu 22.04.5 LTS 2核4G ## 环境信息配置 ```agsl dpkg --add-architecture i386 apt update -y apt install libc6:i386 lib32gcc-s1 lib32stdc++6 lib32z1 libsdl2-2.0-0:i386 screen wget unzip -y ``` ## steam下载、解压、运行 ```agsl mkdir -p ~/steamcmd && cd ~/steamcmd wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -zxvf steamcmd_linux.tar.gz ./steamcmd.sh ``` ## 安装dst ```agsl force_install_dir ../dst_server login anonymous app_update 343050 validate quit ``` ## 存档准备 ```agsl 准备存档Cluster_1 修改存档中/Cluster_1/cluster.ini bind\_ip=0.0.0.0 添加Token文件/Cluster_1/cluster_token.txt 服务器创建存档文件夹 mkdir -p ~/.klei/DoNotStarveTogether/ 上传文件Cluster_1.zip并解压 cd /root/.klei/DoNotStarveTogether/ unzip Cluster_1.zip ``` ## 模组添加 ```agsl 打开/Cluster_1/Master/modoverrides.lua获取创建的世界使用了哪些mod 将模组添加进dedicated_server_mods_setup.lua文件末尾,一个mod一行 nano /root/dst_server/mods/dedicated_server_mods_setup.lua ServerModSetup("1234567890") ServerModSetup("1234567890") ServerModSetup("1234567890") 将本地文件/steam/steamapps/workshop/content/322330/中模组文件上传至/root/dst_server/mods/ unzip XXXmod.zip ``` ## 创建地上地下世界启动脚本并赋予权限 ```agsl cat > /root/master64.sh << 'EOF' #!/bin/bash cd /root/dst_server/bin64 export LD_LIBRARY_PATH=../linux64:$LD_LIBRARY_PATH ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Master EOF ``` ```agsl cat > /root/cave64.sh << 'EOF' #!/bin/bash cd /root/dst_server/bin64 export LD_LIBRARY_PATH=../linux64:$LD_LIBRARY_PATH ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Caves EOF ``` ```agsl chmod +x /root/master64.sh /root/cave64.sh ``` ## 开机自启动设置 ```agsl //创建地上世界服务 nano /etc/systemd/system/dst-master.service [Unit] Description=Don't Starve Together Master Server After=network.target [Service] Type=simple User=root WorkingDirectory=/root/dst_server/bin64 ExecStart=/root/master64.sh Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` ```agsl //创建地下世界服务 nano /etc/systemd/system/dst-cave.service [Unit] Description=Don't Starve Together Cave Server After=network.target dst-master.service [Service] Type=simple User=root WorkingDirectory=/root/dst_server/bin64 ExecStart=/root/cave64.sh Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` ```agsl // 重载系统服务配置 systemctl daemon-reload // 设置开机自动启动 systemctl enable dst-master systemctl enable dst-cave // 现在手动启动测试 systemctl start dst-master systemctl start dst-cave // 查看服务状态 systemctl status dst-master systemctl status dst-cave // 停止服务 systemctl stop dst-master systemctl stop dst-cave // 重启服务 systemctl restart dst-master systemctl restart dst-cave // 实时查看运行日志 journalctl -u dst-master -f journalctl -u dst-cave -f ```