属于大家的
VPS知识分享站

Garry's Mod服务器搭建:Linux、创意工坊、GSLT与端口

Garry’s Mod 开服不是把 App 4020 下完就结束。真正决定能不能长期运营的,是 gamemode、地图、Workshop collection、Lua 和二进制模块、GSLT、玩家下载体验、更新回退。这篇按 2026年8月3日 Facepunch 官方 Wiki、Steam AppInfo 和 Steam Game Server Account 资料整理,面向 sandbox、DarkRP、TTT、Prop Hunt 或自定义社区服管理员。

我核验了 App 4020、Linux 启动入口、public Build 等关键信息,没有实际下载运行。

先选游戏模式,再选VPS

GMod不是只有一种固定负载的游戏。原版sandbox、DarkRP、TTT、丧尸生存和大量自定义Lua的社区服,对CPU、内存、磁盘和客户端下载的要求完全不同。一个玩家很少但有上千实体和低效Lua hook的服,可能比原版多人服更慢。

采购前先固定:游戏模式目录名、首发地图、目标人数、Workshop collection、是否有二进制模块、是否需要MySQL/外部网页、每日新增数据量。然后才建立配置样本。

小型sandbox可从4核、8GB内存和SSD开始测试;带大量Workshop、DarkRP数据库、自定义模型与插件的社区服应预留更高单核性能、16GB或更多内存与磁盘空间。这只是测试起点,不是承载人数保证。

Garry's Mod开服前选择玩法、地图、Workshop集合、GSLT和服务端架构的决策图

public还是x86-64分支

2026年8月3日Steam AppInfo显示,App 4020的public Build为23150012,另有更新的独立x86-64 Build 24416887。Facepunch官方Wiki也给出了加入-beta x86-64的方法。

对纯原版新服,可在预发实例比较public与x86-64;对现有插件服,不要因为“64位听起来更新”就原地切分支。先审计所有二进制module、数据库driver、原生扩展和插件依赖,用存档副本运行启动、进服、操作、换图与重开回归。

切换过beta分支后,仅在更新命令中删掉-beta可能不足以恢复public。Facepunch官方示例明确用-beta public退回稳定分支。分支名是部署配置的一部分,必须记录。

安装App 4020

Linux用SteamCMD匿名安装:

steamcmd \
  +login anonymous \
  +force_install_dir /srv/gmod/app \
  +app_update 4020 validate \
  +quit

创建独立gmod普通用户,不用root运行游戏进程。程序包、配置、游戏模式、Workshop缓存、业务数据与备份尽量分开。validate是修复官方文件的工具,不是备份自定义文件的替代品。

更新与运行不并发:先正常停服并备份,再更新App,在预发副本启动。对Workshop密集服,不在玩家连接时替换已mount的内容。

创建并保管GSLT

Facepunch官方Wiki将GSLT标为GMod专用服的必需配置,启动时用+sv_setsteamaccount。Steam官方还要求token不要分发给第三方;长期未用的token可能过期,账号密码由Steam Support重置时token会再生成。

每个生产实例使用独立GSLT,资产清单只记录token引用、用途和末四位,不保存全值。不把token硬编码到Git、公开启动脚本、截图或工单。如不小心暴露,立即删除/轮换,不只修改文章。

最小启动命令

先以原版sandbox与gm_construct建立无Workshop基线:

cd /srv/gmod/app
./srcds_run \
  -game garrysmod \
  -console \
  -port 27015 \
  +maxplayers 12 \
  +gamemode sandbox \
  +map gm_construct \
  +sv_setsteamaccount "GSLT_FROM_SECRET_STORE"

gamemode要使用真实模式文件夹名,不一定与Workshop页标题相同。map不带.bsp后缀,且地图必须存在于已mount内容中。游戏模式修改后通常需换图才完整生效,不要只在控制台改变变量后就宣称验收通过。

启动成功的完整验收是:地图已加载、GSLT已登录、实际端口监听、外部A2S/列表可查、客户端进服、生成一个脱敏状态、换图后状态与权限仍正常。

端口和RCON安全

Source Dedicated Server常以27015作为默认游戏/查询起点。不应根据搜索结果开放一大段端口,而要在本实例启动后用ss -lntup检查实际socket,再从服务器以外验证A2S和客户端。同机多实例必须分离端口、GSLT、配置与数据目录。

RCON可能使用与服务器相关的TCP连接,不应向全网无限制开放。限制管理员来源IP、VPN或跳板,使用长随机密码,轮换后确认旧密码不再可用。不用-insecure作为常规排错方法,它会改变VAC安全边界。

Garry's Mod玩家通过UDP连接Linux SRCDS及GSLT、Workshop集合和实例数据的架构

Workshop collection怎么配

Facepunch官方方法是把collection ID放到启动命令:

+host_workshop_collection 123456789

collection必须是public或unlisted,private collection不能作为这条无账号服务端下载路线的稳定前提。服务端启动时会下载/更新并mount collection内容。如当前地图就在collection中,服务端会将其标记为客户端可下载。对gamemode,还要检查模式描述文件中是否声明Workshop ID。

不要用一个无限增长的“全部服务器插件”collection。拆成必需模式/地图、功能插件、可选外观三层,记录每个item ID、大小、依赖、权限与客户端需求。删除item前先在存档副本验证实体/数据会不会丢失。

自动更新、预发与回退

host_workshop_autoupdate 0可禁用启动时Workshop自动更新,有助于避免未审核内容立即进入生产。但长期不更新也可能使地图、模式和客户端版本不一致。正确方式是预发审核,不是永久冻结。

更新流程:正常停服→备份配置、data/、sqlite/、外部数据库转储和collection清单→复制到预发→更新App和Workshop→原版地图基线→目标gamemode→客户端下载/进服→换图→检查Lua/模块错误→再切生产。

回退时恢复App分支/Build、Workshop组合、gamemode、配置和业务数据。仅将Workshop项降级但保留已被新版写入的数据库,不能算完整回退。

备份哪些内容

GMod不同gamemode的业务数据位置不同。通用备份至少包括:

  • garrysmod/cfg/中的服务器配置、地图轮换、封禁与管理规则;
  • garrysmod/data/garrysmod/sv.db或游戏模式的SQLite数据;
  • 外部MySQL/PostgreSQL的一致性转储与用户/库权限清单;
  • gamemode、非Workshop自定义addon和二进制模块;
  • collection ID、item列表、当前Build和分支;
  • GSLT和数据库密码的私密引用,不是公开全值。

恢复到全新目录后,用同Build与collection启动,进服查看角色/权限/经济/道具标记,换图后再查一次。只看进程存活不能证明业务数据已恢复。

容量与故障定位

不要只看玩家数。每个高峰样本同时记录:单核CPU、内存高水位、实体数、Lua hook/定时器数量、数据库慢查询、出站流量、客户端首次下载大小和换图时间。将collection二分禁用,可快速判断问题是内容组合还是基础服务端。

启动后立即回到sandbox

检查+gamemode是否是真实目录名,游戏模式是否已mount,地图是否支持该模式。改变gamemode后换图再验证。

Workshop下载了,玩家却缺素材

检查collection可见性、地图/gamemode是否被标记给客户端、依赖item是否在collection中,以及客户端下载日志。服务端mount成功不等于客户端已获得所有内容。

x86-64分支启动了,但插件不工作

回到纯原版基线,逐个检查二进制module的架构和发布者支持状态。如没有当前x86-64构建,在public分支保持生产,而不是强制载入或关闭安全检查。

FAQ

GMod服务器必须配GSLT吗

Facepunch当前官方Wiki将GSLT标记为必需项,并说明未配置会影响服务器排名。每实例独立token,不暴露全值。

Workshop collection可以是private吗

官方当前说明collection需要public或unlisted,否则srcds无法按这条路线访问。

要直接用x86-64吗

只有在预发完成游戏模式、Lua、二进制模块、数据库、换图和重开回归后才切换。原有插件服不建议原地试错。

购买前清单

选购YGCloud VPS前准备:

  1. 游戏模式真实目录名、首发地图和换图清单;
  2. public还是x86-64,二进制模块是否支持;
  3. Workshop collection/item清单、依赖、大小和客户端下载量;
  4. 是否有外部数据库、网页与原生模块;
  5. 峰值玩家、实体数、每日数据增长和备份保留;
  6. 玩家地域、测试IP路由和丢包。

配置参考VPS配置选择方法,地域按玩家位置与线路选节点,下单前按测试IP、Ping、路由和丢包流程验证。

赞(0)
未经允许不得转载:VPS知识分享站 » Garry's Mod服务器搭建:Linux、创意工坊、GSLT与端口