How To Make A Garry's Mod Server & Install Both Mods & Addons (2026)

How To Make A Garry's Mod Server & Install Both Mods & Addons (2026)

A guide on how to set up a Garry's Mod server and download and install mods (addons) on both Windows and Linux!

July 26, 2026阅读约 18 分钟更新于 July 26, 2026
How To Make A Garry's Mod Server & Install Both Mods & Addons (2026)

一份关于如何搭建 Garry's Mod 服务器,以及在 Windows 和 Linux 上下载并安装 mod(插件/addon)的指南!

Garry's Mod 是一款广受欢迎的沙盒游戏,其活力很大程度上来自于 mod 和玩家自制内容,拥有庞大的 mod 库来增强游戏体验。这些 mod 可以在 Steam WorkshopGitHub 等平台上获取,为游戏体验带来独特的变化,从全新的地图和工具到完全自定义的游戏模式,应有尽有。

搭建一个带有 mod 的服务器可以让玩家连接进来,使用服务器所安装的插件,共享定制化的游戏体验。

本指南中我们将专门针对的两个操作系统是 Windows 11Debian 12(Linux)。

在继续本指南之前,我想说明几点。

  • addon(插件)和 mod(模组)这两个术语在本指南中可互换使用,均指 Garry's Mod 中的玩家自制内容或修改。在 Garry's Mod 中,自定义内容被称为 addon
  • 同样,directory(Linux 中的说法)和 folder(Windows 中的说法)这两个术语也可互换使用。

前置要求

服务器配置与网络连接

MinecraftRust 等其他游戏的服务器相比,Garry's Mod 服务器对内存的占用相当轻量。不过,所需的处理能力取决于多种因素。如果你不打算同时容纳大量玩家(即所有人同时在线),或不打算将服务器公开,那么根据你所运行的 mod 情况,通常用一台较旧的 CPU 也能应付。

话虽如此,你的网络速度对能同时容纳多少玩家也有影响,尤其是你能向玩家发送多少带宽(上传速度)。

需要考虑的几个因素有:

  1. 将同时在服务器上游玩的玩家数量。
  2. 服务器上的 mod 所产生的额外网络数据量。
  3. 性能与速率设置(本指南后续会说明)。

如果你打算将服务器对公众开放,我也建议通过专业的服务器托管商来托管你的服务器。除了托管通常需要支付的费用之外,将服务器托管在数据中心相比放在家里还有诸多优势,比如更高的稳定性、更好的网络速度与路由(延迟更低)、更强的抗 (D)DoS 攻击 防护能力等等。

我建议你多做一些调查,为自己找到最合适的游戏服务器托管方案。可选的方案有很多,但如果你打算公开你的服务器,服务器的所在位置、价格、性能以及 (D)DoS 防护能力都是需要重点考虑的因素。

端口转发

如果你打算让服务器可以从互联网访问,你可能需要在路由器上将 UDP 和 TCP 端口 27015 进行端口转发。本指南不会具体讲解端口转发的操作,不过我想提供一些其他有用的指南,帮助你完成上述端口的转发。

如果你的局域网使用的是 NAT 网络,你可能还需要额外创建一条 NAT 规则。

下载并运行 SteamCMD

搭建 Garry's Mod 服务器的第一步是下载并运行 SteamCMD

SteamCMD 是 Steam 的一个 CLI 工具,可以用来下载客户端和服务器文件。

Windows

在 Windows 上下载并解压 SteamCMD 的说明可以在这里找到。

  1. 这里下载 steamcmd.zip 文件。
  2. 创建一个文件夹,用于存放并解压 steamcmd.zip 文件的内容。本指南中,我们将使用 E:\servers\steamcmd
  3. 使用 Windows 自带的 ZIP 工具将 steamcmd.zip 的内容解压到新创建的文件夹中。你也可以使用像 7-Zip 这样的工具。

现在你应该能看到一个 steamcmd.exe 可执行文件,运行它即可完成后续步骤。

SteamCmd Files

SteamCmd Windows Start

Linux

在 Linux 上下载并解压 SteamCMD 的说明可以在这里找到。我更倾向于手动下载并解压 SteamCMD,本指南也将采用这种方式。

你需要下载一些必要的软件包,才能下载、运行、解压 SteamCMD 以及运行 Source 引擎服务器。

基于 Debian/Ubuntu(Apt)
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tar

注意 - 如果你没有安装 sudo,你需要通过 su - 命令以 root 身份登录,并在本指南中执行命令时不加开头的 sudo

SteamCMD Packages

虽然这并不是必须的,但仍建议你创建一个单独的用户来运行 SteamCMD 和你的 Garry's Mod 服务器。你可以在基于 Debian/Ubuntu 的系统上使用以下命令来创建一个新用户。

# Create servers group.
sudo groupadd servers

# Create servers user with home directory set to /home/servers and using /bin/bash as the shell.
sudo useradd -m -d /home/servers -g servers -s /bin/bash servers

# Login as servers.
sudo su servers -

SteamCMD New User

接下来,你需要创建一个目录来存放 steamcmd_linux.tar.gz 文件的内容。

# Create a 'steamcmd/' directory inside the user's home directory.
mkdir ~/steamcmd

# Change directories to the created directory from above.
# Tip - You can also use 'cd $_' if you've just created the new directory.
cd ~/steamcmd

SteamCMD New Directory

现在,你需要下载 steamcmd_linux.tar.gz 文件并解压。我建议使用 curlwget 命令下载文件,并用 tar 解压。在本指南中,我们将使用结合 curltar 的一行命令。

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

如果上述命令执行成功,当你使用类似 ls -l 的命令列出新目录中的文件时,应该会看到一个新的 steamcmd.sh 文件。

SteamCMD Download & Extract

现在你可以使用以下命令运行新的 steamcmd.sh 程序,这也会同时更新 SteamCMD 安装。

./steamcmd.sh

SteamCMD Start

下载服务器文件

启动 SteamCMD 后,首先需要通过 force_install_dir 命令设置 Garry's Mod 服务器文件的安装目录。在本指南中,我们会将服务器安装到 SteamCMD 所在目录或文件夹内的一个名为 gmod/ 的目录中。因此,我们会将 force_install_dir 设置为 Linux 上的 /home/servers/gmod(或 Windows 上的 E:\servers\gmod)。

例如,这是在 Linux 上的样子。

force_install_dir /home/servers/gmod

之后,你需要使用 login <username> 命令登录 Steam。大多数专用服务器应用/工具(包括 Garry's Mod)都允许用户通过 SteamCMD 匿名登录,因此在这种情况下你不需要输入你的 Steam 用户名或密码!

login anonymous

接下来,你需要从这个列表中获取你想要安装的 app ID。在我们的例子中,Garry's Mod 服务器的 app ID 是 4020

现在,你需要使用 app_update <app ID> 命令来下载或更新 Garry's Mod 服务器文件。此外,如果你想验证服务器文件以确保文件没有损坏,可以在命令末尾添加 validate。请注意,在命令末尾加上 validate 会使下载过程花费更长时间才能完成。

不进行验证地安装或更新 Garry's Mod 服务器文件(速度更快,但不会检查文件是否损坏)。

app_update 4020

连同验证一起安装或更新 Garry's Mod 服务器文件(速度较慢,但可确保服务器文件没有损坏)。

app_update 4020 validate

下载服务器文件所需的时间取决于你的网络和磁盘速度。完成后,你可以进入你安装服务器的目录。

注意 - 如果你想创建一个脚本来创建或更新服务器,请阅读这里

运行 Garry's Mod 服务器

为了节省时间,我们将创建脚本来启动 Garry's Mod 服务器。

Windows

通过文件资源管理器查看新的服务器文件时,你应该会看到一个名为 srcds.exe 的文件。

我们将创建一个名为 start-server.bat批处理文件/脚本来运行服务器。在创建此文件之前,你需要确保能够设置文件的扩展名,也就是确保你能够查看文件名的扩展名。如果你无法查看文件扩展名,请阅读这里

创建批处理文件后,添加以下内容。

@echo off
.\srcds.exe -game garrysmod -console -ip 0.0.0.0 -port 27015 +maxplayers 32 +map gm_construct

现在你应该可以双击新创建的批处理文件来启动服务器了!

Linux

通过执行 cd ~/gmod 或类似命令进入服务器文件目录后,你应该会看到目录中的 srcds_runsrcds_linux 文件。我们将创建一个简单的 Bash 脚本来启动服务器。

有许多不同类型的文本编辑器可用于创建脚本,例如 NanoVim,在本教程中我们将使用 Nano。我们将脚本命名为 start-server.sh

首先,使用以下命令开始编辑新文件。

nano start-server.sh

接下来,将以下内容粘贴到文件中。

#!/bin/bash
./srcds_run -game garrysmod -console -ip 0.0.0.0 -port 27015 +maxplayers 32 +map gm_construct

上述命令会在地图 gm_construct 上启动一个 Garry's Mod 沙盒服务器,该服务器通过 0.0.0.0 绑定到服务器上的任意 IP 地址和接口,并绑定到端口 27015(SRCDS 服务器的默认端口)。

完成后,按 CTRL + X 然后按回车保存文件。如果你想查看文件内容,可以执行 cat start-server.sh

保存文件后,你还需要给该用户执行该文件的权限,可以使用下面的命令完成。

chmod u+x start-server.sh

Server Start Linux

最后,你可以使用以下命令启动服务器。

./start-server.sh

Server Start Linux #2

注意 - 除非你专门禁用了 VAC,否则你应该会看到 VAC secure mode is activated 的消息。同样地,如果你希望服务器可以通过互联网访问,你还应该会看到一条 Public IP is <your WAN IP> 的消息,该消息在上方截图中已被隐去。

要停止服务器,你可以通过服务器控制台执行 quit 命令,或按 CTRL + C 来发送终止服务器进程的信号。

使用 Screen

安装完成后,你还可以使用 screen 命令让服务器在无需保持 Linux 终端打开的情况下运行(在后台运行)。我建议阅读这里关于 screen 命令的介绍。

首先,让我们安装 screen 软件包。你可能需要通过 exit 命令退出当前的 servers 用户,因为该命令必须以 root 身份或通过 sudo 运行。

Debian/Ubuntu
sudo apt install -y screen

Screen Install

接下来,复制服务器启动命令并在前面加上 screen -S <name>。示例如下。

screen -S gmod ./srcds_run -game garrysmod -console -ip 0.0.0.0 -port 27015 +maxplayers 32 +map gm_construct

这将会在一个 screen 内启动服务器。默认情况下你可以使用 CTRL + A + D 从该 screen 中分离出来。

要连接到该 screen,你可以运行 screen -r(如果只有一个 screen 处于打开状态,它会自动连接到该唯一的 screen)或 screen -r <name>。在上面的命令中,我们创建了一个名为 gmod 的 screen。因此,我们可以使用以下命令按名称连接到该 screen。

screen -r gmod

你也可以修改服务器的启动脚本,像上面那样在前面加上 screen -S <name>,让脚本自动将服务器启动到一个 screen 中。

创建服务器配置文件

下一步是通过修改 server.cfg 文件来配置服务器。该文件位于 Linux 上的 garrysmod/cfg 目录,或 Windows 上的 garrysmod\cfg 文件夹中。

Garry's Mod 在 server.cfg 文件内使用的配置格式为 <ConVar> "<Value>"。我们将设置一些基本的内容,比如服务器的主机名和密码。

将以下内容粘贴到 server.cfg 文件中,并根据你的需求修改 ConVar 的值。

hostname "My Server Name"
sv_password ""
rcon_password "CHANGEME"
  • hostname 是通过服务器浏览器或外部网站(任何通过 A2S 查询服务器的方式)看到的服务器名称。
  • sv_password 是玩家在加入服务器前必须输入的密码。留空时,加入服务器时不会弹出密码提示。
  • rcon_password 是访问 RCON 所需的密码。此密码只能由受信任的人员/管理员知晓,因为拥有此密码的用户如果能够远程访问 RCON 所运行的 TCP 端口,就能够执行服务器命令。

Garry's Mod 内还有许多其他你可能喜欢的 ConVar,都可以通过 server.cfg 文件进行设置!这里有一份很不错的 Garry's Mod ConVar 列表。

性能相关 ConVar

根据你的网络速度、可用带宽以及服务器配置,有不少 ConVar 可以设置来帮助提升服务器性能。

如果你是通过专用服务器提供商托管 Garry's Mod 服务器,那么无论服务器上同时在线的玩家数量是多少,你的网速很可能都足够将性能相关的 ConVar 拉满。不过,我建议至少确保你的上传速度达到 100 mbps

你也可以在诸如 SpeedTest.net 这样的网站上检测你的网速。我个人比较喜欢 CloudFlare 的测速工具,可以在这里找到!

如果你的网速不够快,我建议使用像这个这样的计算器,来计算有助于你的服务器的 ConVar 数值。

以下是一份性能相关 ConVar 列表,假设你的服务器拥有出色的下载和上传网速,以及一颗现代化的 CPU。

sv_maxrate 0
sv_minrate 64000
sv_maxupdaterate 66
sv_minupdaterate 33
sv_maxcmdrate 66
sv_mincmdrate 33
net_splitpacket_maxrate 256000
net_maxcleartime 0.001

添加 Mod(插件)

在 Garry's Mod 服务器上安装 mod 和插件有两种方式。

较为传统的方式是下载 mod/插件文件,并将其直接解压到服务器文件中(通常放在 addons/lua 目录内)。虽然这种方式可以让你对 mod/插件本身有更多控制权,因为你通常可以直接修改源代码,但它不太方便,并且可能需要搭建一台单独的 Web 服务器来让玩家下载该 mod/插件的客户端文件(也就是所谓的“FastDL 服务器”)。

更现代、也被认为更方便的解决方案,是通过 Steam 创意工坊下载 mod。

在本指南中,我们将重点介绍如何通过 Steam 创意工坊以合集的方式向服务器下载并安装 mod。合集可以让你将多个 mod 分组在一起。我们还可以通过 host_workshop_collection <collection ID> 命令行参数设置服务器的合集 ID,这样服务器启动时会自动下载并在服务器上安装该合集中的 mod/插件。此外,我们还会创建一个 Lua 文件,通过 resource.AddWorkshop 函数注册客户端 mod/插件,以确保玩家加入时会下载这些插件所需的客户端文件(例如模型、材质、音效文件等)。

创建合集

我们要做的第一件事是创建一个合集。你可以在 Steam 客户端内完成,也可以通过 Steam 网站完成。在本指南中我们将使用 Steam 客户端(两者界面通常是一样的)。

首先,前往 Community(社区)-> Workshop(创意工坊)。

Workshop Community Tab

接下来,在显示“Search for a Workshop”的地方输入 Garry's Mod。你可以从下拉菜单中点击该项目。

Workshop Search For Garry's Mod

接下来,点击屏幕左中部的 Browse 下拉菜单,然后点击 Collections

Workshop Click Browse And Collections

然后,点击 Create Collection

Workshop Create Collection

接下来你需要填写页面上的所有字段。在本指南中,标题将简单命名为 "Test Collection"。

Workshop Create #1

最后,点击右下角的 Save and continue 按钮以创建合集。

Workshop Create #2

注意 - 如果合集已发布并对他人可见,用户将能够一键订阅该合集中的所有 mod/addon。

将 Addon 添加到合集中

下一步是将 mod/addon 添加到你的新合集,并记下它们的 ID 以便日后使用。你可以按照上面提到的步骤浏览 Garry's Mod 的 Workshop 内容。

在本指南中,我将安装 gDisasters 这个 mod/addon,它是我在 Garry's Mod 中最喜欢的 addon 之一。这个 addon 会添加天气和自然事件,比如龙卷风、地震、雨、暴风雪等等!这一个 addon 还需要几个额外的 addon,其中包含了材质等内容。

找到你想添加到合集中的项目后,点击其标题链接打开该项目,然后点击 Add to Collection 按钮。

这会弹出一个包含你所拥有的所有合集的复选框列表。请勾选你想要添加该 mod/addon 的合集,然后点击 Ok

Workshop Add To Collection

接下来,我们需要从 URL 中提取 ID。这个数字 ID 位于 URL 中 id 查询参数之后。

Workshop Addon URL

例如:

https://steamcommunity.com/sharedfiles/filedetails/?id=1431470677

上述 addon 的 ID 是 1431470677。记下你从添加到合集中的项目里提取出的 ID,以便日后使用。

如果你在 Steam 应用程序中没有看到 URL,请阅读 F.A.Q. 部分中的相关内容。

让玩家自动下载 Addon 客户端内容

建议你允许加入服务器的玩家自动下载你添加到合集中的 mod/addon 的客户端文件。为此,我们需要创建一个 Lua 脚本,并使用 resource.AddWorkshop("<id>") 函数。

为了便于组织管理,我们将在文件系统中技术性地创建一个 addon。

首先,在 Linux 上导航到 garrysmod/addons 目录(Windows 上为 garrysmod\addons 文件夹),并创建一个名为 cl-downloads 的新目录/文件夹。

接下来,创建目录/文件夹 lua/autorun/server 并进入该目录。此时你当前的路径应类似于 addons/cl-downloads/lua/autorun/server

现在,创建一个新的 Lua 脚本。只要文件扩展名是 .lua,脚本名称可以随意命名。在本指南中,我们将文件命名为 addons.lua

打开该文件进行编辑,并根据你的合集中有多少个 addon,粘贴以下相应的行。

resource.AddWorkshop("collection ID")

由于本指南中我们使用了五个 addon,文件的内容如下所示。

-- gDisasters Base Pack
resource.AddWorkshop("1431470677")

-- gDisasters Materials Pack 1 of 4
resource.AddWorkshop("1431447072")

-- gDisasters Materials Pack 2 of 4
resource.AddWorkshop("1431442150")

-- gDisasters Materials Pack 3 of 4
resource.AddWorkshop("1431435621")

-- gDisasters Materials Pack 4 of 4
resource.AddWorkshop("1431419203")

注意 - 以 -- 开头的行被称为注释,会被忽略,也不是必须的。

发布合集

现在你需要发布这个合集。回到你创建的合集,点击 Publish 按钮。

Workshop Publish

接下来,你需要用类似提取 mod/addon ID 的方法来提取合集的 ID。查看你的合集时,这个数字 ID 位于 URL 中 id 查询参数之后。

Workshop Get Collection ID

例如:

https://steamcommunity.com/sharedfiles/filedetails/?id=3380605782

该合集的 ID 是 3380605782

关联合集与服务器

下一步是使用我们上面获取到的合集 ID,将合集与服务器关联起来。我们将在之前创建的服务器启动脚本中添加一个命令行参数。

编辑服务器的启动脚本,并将以下内容追加到服务器的启动命令中。

+host_workshop_collection <collection ID>

例如,以下是使用本指南中所用合集 ID 后,Linux 上 startup-server.sh 文件的新内容:

#!/bin/bash
./srcds_run -game garrysmod -console -ip 0.0.0.0 -port 27015 +maxplayers 32 +map gm_construct +host_workshop_collection 3380605782

完成后,保存启动脚本并启动服务器。假设服务器能够访问 Steam,它应该会自动开始下载合集中的 mod/addon。

连接到服务器

现在让我们连接到服务器吧!

首先,你需要获取要连接的 IPv4 地址或主机名。如果你的服务器是通过专业托管服务商托管的,你应该能够在多个地方找到所需的 IPv4 地址/主机名,包括以下几种途径。

  • 通过你的托管服务商的网页控制面板。
  • 使用服务器启动时公布的公网 IP。

注意 - IPv4 地址的格式为 xxx.xxx.xxx.xxx,而主机名则是一个名称或域名(例如 myservermyserver.mydomain.com)。

如果你就在服务器本机上,或者服务器是本地托管的,你也可以通过在 Linux 上使用 ip aifconfig 命令,或在 Windows 上使用 ipconfig /all 命令(使用命令提示符或 PowerShell)列出网络接口和 IP 来获取服务器的 IP。

找到 IP 后,启动 Garry's Mod,按下键盘上的 \(或 ~)键打开开发者控制台。

开发者控制台打开后,你需要输入 connect <ip/hostname>connect <ip/hostname>:<port>。由于我们已将服务器绑定到 Garry's Mod 的默认端口 27015,所以这里不需要输入端口。

我将使用我服务器在家庭网络下的内部主机名,即简单的 x-gs01

connect x-gs01

Garry's Mod Downloads

当你开始连接时,如果你的 Garry's Mod 客户端没有你添加到合集中的 mod/addon 的客户端文件,它应该会像下面这样自动下载这些文件。

Garry's Mod Downloads

完全连接后,你安装的 addon 应该已经在服务器上运行了。在我的例子中,gDisaster 在菜单中添加了一个标签页,让我可以生成自然灾害!

gDisaster Menu Item

注意 - 要通过生成菜单从 mod/addon 生成物品,你可能需要将自己添加为服务器管理员。要执行此操作,请阅读此处

常见问题

如何将自己添加为服务器管理员?

很多人推荐安装单独的 mod/addon 来处理管理员和群组功能,例如 ULXULib。不过,也有一种无需额外 addon 就能将用户设为管理员的方法。

首先,找到你的 Steam ID(或你想添加为 admin 或 superadmin 的用户的 Steam ID)。我推荐使用在线工具,例如 Steam ID FinderSteam ID I/O

接下来,修改 Linux 上的 garrysmod/settings/users.txt 文件(或 Windows 上的 garrysmod\settings\users.txt)。此文件应该已经包含作为模板的内容。

superadminadmin 部分下,你需要添加一行新内容,格式如下。

"<name>"            "<Steam ID>"

名称可以随意填写,只是用于组织管理。我的 Steam ID 是 STEAM_0:0:36969327,所以在我的例子中,内容会是这样。

"Christian"         "STEAM_0:0:36969327"

之后,重启服务器并重新连接。你现在应该拥有 admin 或 superadmin 权限了!

如何在 Windows 中显示和编辑文件扩展名?

要在 Windows 11 中查看隐藏的文件扩展名,通过文件资源管理器,点击 查看 -> 显示,并确保勾选了 文件扩展名 选项。

在其他版本的 Windows 中,这个过程也非常类似。

要在其他版本的 Windows 中显示文件扩展名,我推荐查看这篇指南!

我可以编写脚本来自动更新服务器文件吗?

是的,这是可以的!

我们将创建一个带有环境变量的脚本,让你可以轻松配置 SteamCMD 和服务器文件的位置,以及要下载的应用 ID 等。

请按照以下步骤操作。

Windows

我们将在 start-server.bat 所在的文件夹(服务器文件根目录)内创建一个名为 update-server.bat 的批处理文件,内容如下。

@echo off
set STEAM_CMD_LOC="E:\servers\steamcmd"
set STEAM_USER="anonymous"
set STEAM_PASS=""

set INSTALL_DIR="..\gmod"
set APP_ID="4020"

cd "%STEAM_CMD_LOC%"
start "" steamcmd.exe +force_install_dir "%INSTALL_DIR%" +login "%STEAM_USERNAME%" "%STEAM_PASSWORD%" +app_update %APP_ID% validate +quit
Linux

我们将在 start-server.sh 文件所在的目录(服务器文件根目录)内创建一个名为 update-server.sh 的 Bash 脚本,内容如下。

#!/bin/bash
STEAM_CMD_LOC=../steamcmd/
STEAM_USER="anonymous"
STEAM_PASS=""

INSTALL_DIR=../gmod

APP_ID=4020

$STEAM_CMD_LOC/steamcmd.sh +force_install_dir $INSTALL_DIR +login "$STEAM_USER" "$STEAM_PASS" +app_update $APP_ID validate +quit

其他资源与工具

我只是想为想要提升 Garry's Mod 管理体验的服务器所有者提供一些有用的资源和工具。

  • Pterodactyl - 一个非常流行的 开源 Linux 游戏服务器面板,提供了轻松创建和管理游戏服务器的工具,支持 Garry's Mod、Counter-Strike、Rust、Minecraft、FiveM 等游戏。

结语

本篇指南到此结束,不过我希望未来能创作更多指南!到这一步,你应该已经拥有了一个安装了一个或多个 mod/addon 的可运行的 Garry's Mod 服务器。

如果你对本指南有任何问题或反馈,请回复其论坛主题此处!本指南将会持续修订和改进。

加入我们的Discord 服务器!

评论 (0)

登录后即可评论。

加载中…

发现更多

帖子动态

加载中…

最近动态

加载中…
前往社区