游戏服务器搭建记录

记录一下要玩的游戏的服务器怎么搭。

雾锁王国

使用enshrouded-server在ubuntu server搭建服务器。

拉取镜像到本地

1
docker pull sknnr/enshrouded-dedicated-server:latest

查看是否下载成功

1
docker images | grep enshrouded-dedicated-server

创建持久化存储卷,保存游戏存档和配置

参数 位置 说明
source 宿主机 Docker 管理的卷名称(不是直接路径)
target 容器内 容器内挂载点的绝对路径
1
docker volume create enshrouded-persistent-data

物理存储位置默认为

1
/var/lib/docker/volumes/enshrouded-persistent-data/_data

查看具体路径:

1
docker volume inspect enshrouded-persistent-data

若要删除,可使用docker volume rm

数据管理备份

1
2
3
4
5
# 查看数据卷
docker volume inspect enshrouded-persistent-data

# 备份数据卷
docker run --rm -v enshrouded-persistent-data:/data -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz /data

运行

1
2
3
4
5
6
7
8
9
10
docker run \
--detach \
--name enshrouded-server \
--mount type=volume,source=enshrouded-persistent-data,target=/home/steam/enshrouded/savegame \
--publish 9006:15637/udp \
--env=SERVER_NAME='Overstars Enshrouded Containerized Server' \
--env=SERVER_SLOTS=16 \
--env=SERVER_PASSWORD='qwerty123' \
--env=PORT=15637 \
sknnr/enshrouded-dedicated-server:latest

感觉还是采用绑定宿主机目录而不是Docker Volume吧,这样更方便修改…

路径为/home/yankf/Game/enshrouded-savedata

授权给10000:10000用户,否则docker无权限

1
2
# 永久修复权限(在宿主机执行)
sudo chown -R 10000:10000 /home/yankf/Game/enshrouded-savedata

再新建一份enshrouded_server.json,用于配置服务器参数,不新建也行。

之后便可运行:

1
2
3
4
5
6
7
8
9
10
11
docker run \
--detach \
--name enshrouded-server \
--mount type=bind,source=/home/yankf/Game/enshrouded-savedata,target=/home/steam/enshrouded/savegame \
--mount type=bind,source=/home/yankf/Game/enshrouded-savedata/enshrouded_server.json,target=/home/steam/enshrouded/enshrouded_server.json \
--publish 15637:15637/udp \
--env=SERVER_NAME='Overstars Enshrouded Containerized Server' \
--env=SERVER_SLOTS=2 \
--env=SERVER_PASSWORD='qwerty123' \
--env=PORT=15637 \
sknnr/enshrouded-dedicated-server:latest

查看日志

1
docker logs -f enshrouded-server

更新服务器

1
2
3
4
docker stop enshrouded-server
docker rm enshrouded-server
docker pull sknnr/enshrouded-dedicated-server:latest
# 重新运行原docker run命令即可

进入服务器

注意不要从游戏内搜索,搜不到的。

3b345e6f7e50aa4b1287e7023d9302eb

要从steam-查看-游戏服务器-收藏-添加进行搜索

image-20250510223624584

雾锁王国(mornedhels-enshrouded-server)

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d --name mornedhels-enshrouded \
--hostname enshrouded \
--restart=unless-stopped \
-p 15637:15637/udp \
-v /home/yankf/Game/mornedhels-enshrouded-server:/opt/enshrouded \
-e SERVER_NAME="Overstars Enshrouded Server" \
-e SERVER_PASSWORD="qwerty123" \
-e UPDATE_CRON="* */30 * * *" \
-e BACKUP_CRON="* */20 * * *" \
-e BACKUP_MAX_COUNT=8 \
-e PUID=4711 \
-e PGID=4711 \
mornedhels/enshrouded-server:latest

更新

1
2
docker stop mornedhels-enshrouded
docker rm mornedhels-enshrouded

查看日志

1
docker logs -f mornedhels-enshrouded

英灵神殿

英灵神殿参数

1
mkdir -p $HOME/valheim-server/config/worlds $HOME/valheim-server/data

把要迁移的StrayCatOverrun.db和fwl放在HOME/valheim-server/config/worlds_local/,运行如下命令
名称:Overstars233
两个选项选择:社区
ip地址:43.138.55.7,连接时不要加端口号
运行如下命令时不要sudo,否则$HOME地址不一样,如果无法使用docker命令点击这里

1
2
sudo gpasswd -a [你的用户名] docker
newgrp docker

MOD

寻找设置drop more loot的方法

ValheimPlus

BepInEx

该mod可能客户端装就可以。

https://valheim.thunderstore.io/package/TastyChickenLegs/DropMoreLoot/

BepInExPack Valheim

docker基础指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
## 镜像命令
docker images 查看docker镜像
docker images -a #列出本地所有的镜像
docker images -q #只显示镜像ID
docker images --digests #显示镜像的摘要信息
docker images --no-trunc #显示完整的镜像信息
docker rmi hello-world #从Docker中删除hello-world镜像
docker rmi -f hello-world #从Docker中强制删除hello-world镜像
## 容器命令
docker ps #列出当前所有正在运行的容器
docker ps -a #列出所有的容器
docker ps -l #列出最近创建的容器
docker ps -n 3 #列出最近创建的3个容器
docker ps -q #只显示容器ID
docker ps --no-trunc #显示当前所有正在运行的容器完整信息
exit #退出并停止容器
Ctrl+p+q #只退出容器,不停止容器
docker start 容器ID或容器名称 #启动容器
docker restart 容器ID或容器名称 #重新启动容器
docker stop容器ID或容器名称 #停止容器
docker kill 容器ID或容器名称 #强制停止容器
docker rm 容器ID或容器名称 #删除容器
docker rm -f 容器ID或容器名称 #强制删除容器
docker rm -f $(docker ps -a -q) #删除多个容器
docker logs [容器id] -f -t --since="2024-09-07" --tail=20 容器ID或容器名称 #查看容器日志
如:docker logs [容器id] -f -t --since="2018-09-10" --tail=10 f9e29e8455a5
 -f : 查看实时日志
 -t : 查看日志产生的日期
 --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志
 --tail=10 : 查看最后的10条日志
docker top 容器ID或容器名称 #查看容器内运行的进程
docker inspect 容器ID或容器名称 #查看容器内部细节
docker attach 容器ID #进到容器内
docker exec 容器ID #进到容器内
————————————————
版权声明:本文为CSDN博主「苍穹尘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lizhiqiang1217/article/details/89070075

运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d \
--name valheim-server \
--cap-add=sys_nice \
--stop-timeout 120 \
-p 2456-2457:2456-2457/udp \
-v $HOME/Game/valheim-server/config:/config \
-v $HOME/Game/valheim-server/data:/opt/valheim \
-e SERVER_NAME="HatsuneMiku233" \
-e WORLD_NAME="HatsuneMiku" \
-e SERVER_PASS="qwerty123" \
-e BACKUPS_MAX_COUNT="5" \
-e BACKUPS_IDLE_GRACE_PERIOD="21600" \
-e BEPINEX=true\
ghcr.io/lloesche/valheim-server

看到如下消息时说明成功,如果服务器配置不够(内存)的话会直接卡死

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dec 12 16:14:31 /supervisord: valheim-updater [ 99%] Downloading update (57,385 of 57,385 KB)...
Dec 12 16:14:31 /supervisord: valheim-updater [100%] Download complete.
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Extracting package...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Extracting package...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Extracting package...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Extracting package...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Installing update...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Cleaning up...
Dec 12 16:14:31 /supervisord: valheim-updater [----] Update complete, launching Steamcmd...
Dec 12 16:14:32 /supervisord: valheim-updater Redirecting stderr to '/home/valheim/Steam/logs/stderr.txt'
Dec 12 16:14:32 /supervisord: valheim-updater [ 0%] Checking for available updates...
Dec 12 16:14:32 /supervisord: valheim-updater [----] Verifying installation...
Dec 12 16:14:32 /supervisord: valheim-updater Steam Console Client (c) Valve Corporation - version 1669935972
Dec 12 16:14:32 /supervisord: valheim-updater -- type 'quit' to exit --
Dec 12 16:14:32 /supervisord: valheim-updater Loading Steam API...OK
Dec 12 16:14:32 /supervisord: valheim-updater
Dec 12 16:14:32 /supervisord: valheim-updater Connecting anonymously to Steam Public...
Dec 12 16:15:01 CRON[352]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 12 16:15:01 CRON[353]: (root) CMD ([ -f "/var/run/valheim/valheim-updater.pid" ] && kill -HUP $(cat /var/run/valheim/valheim-updater.pid))
Dec 12 16:15:01 CRON[352]: pam_unix(cron:session): session closed for user root
Dec 12 16:15:20 /supervisord: valheim-updater OK
Dec 12 16:15:20 /supervisord: valheim-updater Waiting for client config...OK
Dec 12 16:15:20 /supervisord: valheim-updater Waiting for user info...

食物

蛟龙肉汤(2honey + 1mushroom + 1serpentMeatCooked)/牦牛派(2Cloudberry+2LoxMeat+4BarleyFlour) + 血旺(2Thistle+2Bloodbag+4BarleyFlour) + 面包(10BarleyFlour)/蛟龙肉汤

药水

中份耐力:10蜂蜜+10云莓+10MushroomYellow
中份治疗:10蜂蜜+4血袋+10Raspberry+1dandelion

武器

黑曜石箭:8Wood+4Obsidian+2Feathers

服务器网路优化

  1. 启用BBR拥塞控制

    • 在Ubuntu服务器启用TCP BBR算法(即使使用UDP,BBR可优化底层网络吞吐量):

      1
      2
      3
      echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
      echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
      sysctl -p
    • BBR可减少网络拥塞导致的延迟波动。

  2. 调整UDP缓冲区与QoS优先级

    • 查看当前缓冲区大小

      1
      2
      3
      4
      root@overstars:/proc/sys# cat /proc/sys/net/core/rmem_max
      212992
      root@overstars:/proc/sys# cat /proc/sys/net/core/wmem_max
      212992
    • 增大UDP接收/发送缓冲区,避免丢包:

      1
      2
      sysctl -w net.core.rmem_max=26214400
      sysctl -w net.core.wmem_max=26214400
    • 在路由器或服务器设置QoS规则,优先处理Enshrouded的UDP端口流量。