
注意:这不是Valve官方的Steam Docker容器。
该Docker镜像提供了一个通用的Steam专用服务器运行环境,基于steamcmd工具构建,支持部署Linux原生服务器和通过wine运行的Windows服务器。镜像基于Ubuntu系统,包含wine环境和最新的steamcmd工具,适用于搭建各类Steam游戏的专用服务器。
适用于需要搭建Steam游戏专用服务器的场景,已验证支持:
| 标签 | 描述 |
|---|---|
| stable | Ubuntu 24.10:包含wine和steamcmd(包管理安装) |
| latest | Ubuntu 24.10:包含winehq STABLE包和steamcmd(包管理安装),可能会中断 |
| experimental | Ubuntu 24.10:包含winehq STAGING包和steamcmd(包管理安装),可能会中断 |
容器每周自动重建以保持更新
| 参数 | 功能描述 | 默认值 |
|---|---|---|
| SERVER_DIR | 服务器文件存储位置 | /data/server |
| STEAM | steamcmd客户端位置 | /steam |
| PLATFORM | 指定自动更新时的平台,可选linux或windows | windows |
| STEAM_APP_ID | 用于自动更新的Steam应用ID | 0 |
| STEAM_APP_EXTRAS | 可选,Steam应用更新的额外参数(如设置BETA版本) | `` |
| UPDATE_OS | 启动时更新操作系统,1启用,0禁用 | 1 |
| UPDATE_STEAM | 启动时更新steamcmd,1启用,0禁用 | 1 |
| UPDATE_SERVER | 启动时更新STEAM_APP_ID指定的服务器,1启用,0禁用 | 1 |
| PUID | 运行steamcmd的用户ID,同时用于卷权限设置 | 1000 |
| PGID | 运行steamcmd的组ID,同时用于卷权限设置 | 1000 |
| LANG | 容器内语言环境 | en_US.UTF-8 |
| LANGUAGE | 容器内语言环境 | en_US:UTF-8 |
| LC_ALL | 容器内语言环境 | en_US.UTF-8 |
容器默认暴露以下端口,可根据需要在Docker配置中添加额外端口。详细Steam端口要求见Steam官方文档。
| 端口 | 协议 | 是否必需 | 描述 |
|---|---|---|---|
27015 | UDP | 必需 | 游戏流量端口 |
27015 | TCP | 可选 | SRCDS RCON端口 |
27016 | UDP | 可选 | Steam公告流量端口 |
| 卷路径 | 功能描述 |
|---|---|
| /data | 镜像的用户数据存储位置 |
使用数据卷(-v参数)时,主机和容器之间可能出现权限问题。通过PUID和PGID环境变量可指定容器内运行应用的用户ID和组ID,避免权限冲突。
在主机上执行以下命令获取当前用户的ID:
bashid <username>
输出示例:
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),46(plugdev),113(lpadmin)
其中uid(用户ID)和gid(组ID)即为PUID和PGID应设置的值。
Windows专用服务器
yaml--- version: "3" services: steam: image: thetestgame/steam:stable restart: unless-stopped ports: - 27015:27015 - 27015:27015/udp - 27016:27016/udp environment: - PUID=1000 - PGID=1000 - UPDATE_OS=1 - UPDATE_STEAM=1 - UPDATE_SERVER=1 - PLATFORM=windows - STEAM_APP_ID=443030 # Conan Exiles的Steam应用ID - TZ=America/Los_Angeles volumes: - /my/docker/server/data:/data - /etc/localtime:/etc/localtime:ro
Linux专用服务器
yaml--- version: "3" services: steam: image: thetestgame/steam:stable restart: unless-stopped ports: - 27015:27015 - 27015:27015/udp - 27016:27016/udp environment: - PUID=1000 - PGID=1000 - UPDATE_OS=1 - UPDATE_STEAM=1 - UPDATE_SERVER=1 - PLATFORM=linux - STEAM_APP_ID=294420 # Left 4 Dead 2的Steam应用ID - TZ=America/Los_Angeles volumes: - /my/docker/server/data:/data - /etc/localtime:/etc/localtime:ro
容器启动时会执行/data/custom_server脚本,必须手动创建此脚本并设置为可执行文件。该脚本用于配置服务器启动参数、前置操作(如安装mod、备份)等。
Linux服务器示例(Left 4 Dead)
bashsu - steam -c "/data/server/srcds_run -console -game left4dead -map l4d_hospital01_apartment -port 27015 +maxplayers 4 -nohltv +exec server.cfg"
Windows服务器示例(Conan Exiles)
bashsu - steam -c "xvfb-run --auto-servernum \ wine64 ${SERVER_DIR}/ConanSandbox/Binaries/Win64/ConanSandboxServer-Win64-Test.exe -nosteamclient -game -server -log"
注意:Windows服务器需要轻量级窗口管理器支持,
xvfb-run --auto-servernum用于提供虚拟显示环境。
无状态服务器脚本
适用于不需要在重启间保存状态的服务器:
Windows
bashsu - steam -c "xvfb-run --auto-servernum \ wine64 ${SERVER_DIR}/ConanSandbox/Binaries/Win64/ConanSandboxServer-Win64-Test.exe -nosteamclient -game -server -log"
Linux
bashsu - steam -c "/data/server/startserver.sh \ -configfile=/data/server/serverconfig.xml"
带状态保存的服务器脚本(Bash)
适用于需要正常关闭以保存状态的服务器:
首先在docker-compose中设置适当的关闭等待时间:
yamlservices: steam: image: thetestgame/steam:latest restart: unless-stopped stop_grace_period: 1m # 给予1分钟关闭时间 # 其他配置...
创建/data/custom_server脚本:
bash#!/bin/bash PROCESS_WAIT_TIME=25 WATCHDOG_TIME=300 function shutdown() { echo 'Shutting down server ...' if [ "$(pgrep -n Conan)" != '' ]; then echo "Sending SIGINT to Conan server (max ${PROCESS_WAIT_TIME} secs) ..." kill -SIGINT `pgrep -n Conan` sleep ${PROCESS_WAIT_TIME} fi if [ "$(pgrep wine)" != '' ]; then echo "Sending SIGINT to wine processes (max ${PROCESS_WAIT_TIME} sec) ..." kill -SIGINT `pgrep wine` sleep ${PROCESS_WAIT_TIME} fi exit 0 } trap shutdown SIGINT SIGKILL SIGTERM function start_server() { su - steam -c "xvfb-run --auto-servernum wine64 ${SERVER_DIR}/ConanSandbox/Binaries/Win64/ConanSandboxServer-Win64-Test.exe -nosteamclient -game -server -log" } function watch_server() { if ps aux | grep [C]onanSandboxServer > /dev/null; then echo 'Server is running ...' else echo 'Starting server ...' start_server & fi } while true; do watch_server sleep ${WATCHDOG_TIME} & wait done
使用Supervisord管理服务器
容器内置supervisord进程管理工具,适用于复杂服务器管理。
/data/custom_server脚本设置为:bash/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
/data/supervisord目录中放置supervisord配置文件,示例配置:ini[program:conanexiles] command=xvfb-run --auto-servernum wine64 ${SERVER_DIR}/ConanSandbox/Binaries/Win64/ConanSandboxServer-Win64-Test.exe -nosteamclient -game -server -log user=steam autostart=true autorestart=true stopasgroup=true killasgroup=true
winetricks工具已安装在/usr/bin/winetricks,可在custom_server脚本中用于配置Windows服务器依赖:
bashsu - steam -c "winetricks dotnet472" # 安装.NET Framework 4.7.2 su - steam -c "winetricks vcrun2013" # 安装Visual C++ 2013运行库
ZFS文件系统上可能出现此错误,需设置显式配额:
bashsudo zfs set quota=2T zpool1/docker
Wine首次启动可能因初始化环境而延迟,后续启动会加快。可手动执行以下命令缓解:
bashxvfb-run --autoservernum wineboot --update
srcds_run无法写入PID文件时,手动指定PID文件路径:
bashsrcds_run ... -pidfile /data/server/game.pid
确保使用su - steam -c加载完整用户环境,或链接steamclient.so:
bashln -s -f /steam/.steam/steamcmd/linux32/steamclient.so /steam/.steam/sdk32/steamclient.so
Steam Logo、SteamCMD ©2019 Valve Corporation。Steam及Steam徽标是Valve Corporation在美国和/或其他国家的商标和/或注册商标。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务