GSManager3:Docker 部署游戏服务器面板
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 19 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
面向 Steam 游戏(帕鲁、CS、MC 等)的服务器管理面板,自带 SteamCMD、实例管理、文件管理、定时任务。
前置条件
- 一台 Linux 服务器(1C1G 起步;Java 类应用建议 2C4G 以上);
- 已安装 Docker 与 Compose v2,执行
docker compose version有版本号输出; - 所有示例里的 IP / 域名 / 密码都是占位符,实际部署请替换成自己的。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh
# 目录约定:一个服务一个目录,后文的 ./data 均指栈目录内
mkdir -p /srv/docker/active/<stack> && cd /srv/docker/active/<stack>
镜像地址
xiaozhu674/gameservermanager:latest
目录结构
/srv/docker/active/gsm/
├── docker-compose.yml
├── game_data/ # Steam 用户配置(.config/.local)
└── game_file/ # 游戏服务端文件
部署步骤
# docker-compose.yml
services:
management_panel:
image: xiaozhu674/gameservermanager:latest
container_name: GSManager3
restart: unless-stopped
network_mode: host
user: root
environment:
- TZ=Asia/Shanghai
- SERVER_PORT=3068
volumes:
# Steam 用户目录(面板内部约定,不建议改)
- ./game_data:/home/steam/.config
- ./game_data:/home/steam/.local
- ./game_file:/home/steam/games
- ./game_data:/root/.config
- ./game_data:/root/.local
- ./game_file:/root/steam/games
# 面板自身数据:账号、配置、实例元数据
- gsm3_data:/root/server/data
stdin_open: true
tty: true
volumes:
gsm3_data:
docker compose up -d
# 访问 http://<SERVER_IP>:3068
关键配置
- 面板用 host 网络,所以
SERVER_PORT就是宿主机端口,不用做映射; game_file会非常大(一个帕鲁服务端十几 G),建议单独挂一块盘;- 面板要下载 Steam 创意工坊内容,服务器需要能访问 Steam CDN;
- 游戏实例的端口由面板分配,开服前在防火墙放行对应 TCP/UDP。
注意事项
- 内存:面板 + 游戏服很容易吃满 16G,先算好再开实例;
- 面板本身没有强认证,不要直接暴露公网,至少套一层反向代理 + Basic Auth;
game_data和game_file权限错乱会导致 SteamCMD 下载失败,保持容器内 root/steam 一致;- 定期备份
gsm3_data卷和存档目录。
备份与升级
# 游戏文件 + 面板用户目录
tar czf "gsm-files-$(date +%F).tar.gz" ./game_data ./game_file
# 面板数据在命名卷里,先确认卷名再备份
docker volume ls | grep gsm
docker run --rm -v <项目名>_gsm3_data:/src -v "$PWD":/backup alpine \
tar czf /backup/gsm3-data-$(date +%F).tar.gz -C /src .
# 升级
docker compose pull
docker compose up -d
- 升级前先在面板里停掉所有游戏实例,避免存档损坏;
game_file体积大,备份前确认磁盘余量。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果