Garry's Mod 专用服务器通过 SteamCMD 安装(app 4020,匿名登录),用 srcds_run(Linux)或 srcds.exe(Windows)启动。约需 30 分钟、一台 VPS 或 PC,以及 Facepunch Wiki 中要求必备的 GSLT 服务器令牌。主要来源:wiki.facepunch.com/gmod。
分步安装
选择机器:Linux VPS(Ubuntu/Debian)或 Windows PC;负载主要取决于插件和游戏模式。
创建非 root 用户(steam),安装 SteamCMD 与 32 位库。
下载服务器:匿名登录后执行 app_update 4020 validate。
在 steamcommunity.com/dev/managegameservers 创建 GSLT 令牌(AppID 4000)。
用“Garry's Mod 启动命令”工具生成启动命令,然后运行 srcds_run。
用“Garry's Mod server.cfg 生成器”配置 garrysmod/cfg/server.cfg。
通过创意工坊合集(+host_workshop_collection)添加插件。
在 ufw、服务商和路由器中开放端口(至少 27015 UDP/TCP)。
先在本机测试(游戏控制台输入 connect 127.0.0.1),再从另一条网络连接测试。
创建 systemd 服务,并安排更新与备份。
前提条件
- 系统:Linux(Ubuntu/Debian)或 Windows。Facepunch Wiki 提供 Windows 与 Linux 命令。
- 资源:Wiki 未规定最低配置。可从 2 vCPU、4 GB 内存和数 GB 磁盘起步,再按插件与玩家数调整(官方未记录)。
- 账号:创建 GSLT 令牌(AppID 4000)需要 Steam 账号;服务器本身用匿名登录安装。
Windows 本地安装
将 SteamCMD 解压到 C:\steamcmd 后,安装服务器并运行 srcds.exe(Facepunch Wiki 示例)。然后在游戏控制台用 connect 127.0.0.1 测试。
cd C:\steamcmd
steamcmd +force_install_dir C:\gmodds +login anonymous +app_update 4020 validate +quit
cd C:\gmodds
srcds.exe -console -game garrysmod +maxplayers 20 +gamemode sandbox +map gm_construct +sv_setsteamaccount YOUR_GSLT_TOKENLinux VPS:用户与依赖
Source 服务器是 32 位程序:启用 i386 架构并安装 32 位库。以下软件包来自 Team Fortress Wiki(同一引擎),名称可能因发行版而异。
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 lib32z1 steamcmd
su - steamLinux VPS:安装与首次启动
Facepunch Wiki 的 Linux 安装命令,然后用 srcds_run 启动。该页面未详述端口及 server.cfg 的确切位置,适用 Source 的标准值(见下文)。
steamcmd +login anonymous +force_install_dir /home/steam/gmodds +app_update 4020 validate +quit
cd /home/steam/gmodds
./srcds_run -game garrysmod -console +maxplayers 32 +gamemode sandbox +map gm_construct +sv_setsteamaccount YOUR_GSLT_TOKEN创意工坊与 GSLT 令牌
据 Facepunch Wiki,+sv_setsteamaccount 为必需(缺少会降低服务器排名),+host_workshop_collection 会添加公开或不公开列出的合集(含子合集)中的插件。host_workshop_autoupdate 0 会停止自动更新,但地图版本过旧时可能导致玩家无法加入。Wiki 还提到新的 cfg/srcds_workshop_ids.txt 格式(2026.09.22 及以后版本):请见其“Workshop for Dedicated Servers”页面。玩家端下载请参见“创意工坊合集管理器”工具。
./srcds_run -game garrysmod -console +maxplayers 32 +gamemode sandbox +map gm_construct \
+host_workshop_collection 123456789 \
+sv_setsteamaccount YOUR_GSLT_TOKEN需开放的端口与 Linux 防火墙(ufw)
这些是 Source 服务器的标准值(所查阅的 Facepunch Wiki 页面未列出)。要更改游戏端口,请在启动命令中使用 -port N。创意工坊插件通过 Steam 下载,玩家端没有额外的已记录端口。
只开放必要端口,并从另一条网络连接(而非服务器本机)测试。
- 27015/udp:游戏(Source 默认端口)
- 27015/tcp:RCON
- 27005/udp:客户端通信
- 27020/udp:SourceTV(可选)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27005/udp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusWindows 防火墙(netsh)
在管理员命令提示符中为每个端口创建入站规则(或打开“高级安全 Windows Defender 防火墙”)。
netsh advfirewall firewall add rule name="Garry's Mod 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Garry's Mod 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Garry's Mod 27005 UDP" dir=in action=allow protocol=UDP localport=27005
netsh advfirewall firewall add rule name="Garry's Mod 27020 UDP" dir=in action=allow protocol=UDP localport=27020服务商防火墙与端口转发(路由器)
在托管商(OVH、Hetzner、Scaleway 等)处,还需在服务商防火墙或“安全组”中开放相同端口:若上游有防火墙,仅靠 ufw 不够。家用服务器则在路由器中把每个端口转发(NAT)到机器的本地 IP(设为静态或 DHCP 保留)。
测试:从另一条网络连接,在 Garry's Mod 的服务器浏览器或控制台中以“IP:端口”添加服务器。若失败,依次检查:服务是否运行、本机防火墙、服务商防火墙、NAT 转发。
开机自启:systemd 服务
以 root 创建 /etc/systemd/system/gmod.service 并启用。请按需修改用户与路径;用 journalctl -u gmod -f 查看日志。
[Unit]
Description=Garry's Mod dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/gmodds
ExecStart=/home/steam/gmodds/srcds_run -game garrysmod -console -norestart +maxplayers 32 +gamemode sandbox +map gm_construct +sv_setsteamaccount YOUR_GSLT_TOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now gmodWindows:开机计划任务
在 Windows 上,计划任务会在系统启动时运行 .bat 脚本(请在管理员命令提示符中执行命令)。
schtasks /Create /TN "Garry's Mod server" /TR "C:\gmodds\start-gmod.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST更新、备份与计划重启
更新前先停止服务(与安装相同的 SteamCMD 命令),定期备份配置与数据文件;若服务器运行久了变差,可安排每日重启。
sudo systemctl stop gmod
steamcmd +force_install_dir /home/steam/gmodds +login anonymous +app_update 4020 validate +quit
sudo systemctl start gmod
# backup
tar czf ~/gmod-$(date +%F).tar.gz -C /home/steam/gmodds garrysmod/cfg garrysmod/data garrysmod/addons
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart gmod登记并找到你的服务器
在 https://game-rank.com/jeux/garrys-mod 登记你的服务器,让社区看到。游戏内可通过服务器浏览器查找,或直接用 IP:端口 连接。
故障排查:常见错误
- 客户端卡在加载或提示 “missing content”:插件未分发给玩家。解决:在 workshop.lua(resource.AddWorkshop)中添加 ID,或设置 sv_downloadurl(FastDL),并确认合集为公开。
- 外部看不到服务器:服务在运行但无人能连接。原因:端口被关闭(ufw、服务商防火墙或缺少 NAT 转发)。解决:在三个层面开放上述端口,并从另一条网络测试。
- 启动时端口已被占用:另一个实例占用了端口。解决:用 ss -lunp | grep 27015 查看进程,停止旧实例,或用 -port 为每个服务器指定不同端口。
- SteamCMD 提示 “Failed to install app” 或下载卡住:常见原因是磁盘已满或目录权限不足。检查 df -h 和目录所有者,然后带 validate 重新运行命令(必要时多次)。
- srcds_run 报 “No such file or directory” 或缺少 32 位库:Source 服务器是 32 位程序。解决:启用 i386 架构(dpkg --add-architecture i386)并安装 lib32gcc-s1 与 lib32stdc++6。
常见问题
- GSLT 令牌是必需的吗?
- Facepunch Wiki 指出 +sv_setsteamaccount 为必需,缺少会降低服务器排名。创建令牌时使用 AppID 4000。
- 如何更换游戏模式(DarkRP、TTT 等)?
- 在启动命令中用 +gamemode <文件夹>,该文件夹位于 garrysmod/gamemodes/ 或某插件的 gamemodes/ 中。也可以修改 gamemode 变量后再换图。
- 可以用 root 运行服务器吗?
- 不建议:请创建不含管理员权限的专用用户(如 steam),用它安装并运行服务器,这样服务器或插件的漏洞不会危及整台机器。
- 我的 Garry's Mod 服务器不在列表中:该检查什么?
- 先确认各层端口均已开放、服务器未处于 LAN 模式(sv_lan 0),且在游戏要求时提供了有效的服务器令牌(GSLT)。Steam 列表刷新可能需要几分钟,期间可用 IP:端口 直连。
