Сборка сервера Garry's Mod: ядро, контент, оптимизация
Полная инструкция по сборке сервера Garry's Mod: SteamCMD, mount.cfg, гейм-моды, ULX, FastDL, SourceBans, оптимизация. Пример server.cfg и команды запуска.
Поднять сервер Garry’s Mod несложно, но между “запустилось” и “работает стабильно с 24 игроками без лагов” - десятки настроек. В этом гайде - полный путь от чистой машины до играбельного сервера: выбор железа, SteamCMD, монтирование контента CS:S и HL2, выбор гейм-мода, ULX, FastDL, SourceBans, оптимизация. С готовыми примерами server.cfg, mount.cfg и команд запуска.
Шаг 0. Выбор хостинга и характеристик
Garry’s Mod работает на движке Source - однопоточном (вернее, основной игровой тик идёт в одном потоке) и очень чувствительном к частоте процессора. Поэтому при выборе железа главный параметр - single-thread производительность, а не количество ядер.
| Тип сервера | Слотов | RAM | CPU частота | Диск |
|---|---|---|---|---|
| Pure Sandbox | 16 | 2 ГБ | 3.0+ ГГц | NVMe 20 ГБ |
| DarkRP | 24 | 4 ГБ | 3.5+ ГГц | NVMe 40 ГБ |
| MilitaryRP / Helix | 32 | 6-8 ГБ | 4.0+ ГГц | NVMe 60 ГБ |
| TTT / PropHunt | 24 | 3 ГБ | 3.5+ ГГц | NVMe 30 ГБ |
Сетевой канал - минимум 100 Мбит на сервер с 24 игроками. DDoS-защита обязательна для публичных серверов - они регулярно становятся целью атак конкурентов. Подробнее в гайде о DDoS-защите.
Pterohost - игровой хостинг с DDoS-защитой, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod
Шаг 1. Установка через SteamCMD
SteamCMD - официальный консольный клиент Steam для установки серверного контента. AppID Garry’s Mod Dedicated Server - 4020.
Linux (Ubuntu/Debian)
# Создать пользователя для сервера
sudo useradd -m -s /bin/bash gmod
sudo su - gmod
# Установить SteamCMD
mkdir ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
# Установить GMod-сервер
./steamcmd.sh +force_install_dir ~/gmod_server +login anonymous \
+app_update 4020 validate +quit
После завершения (5-15 минут в зависимости от канала) в ~/gmod_server/ появится директория сервера. Главный исполняемый файл - srcds_run, главный конфиг - garrysmod/cfg/server.cfg.
Windows
Скачать SteamCMD с developer.valvesoftware.com/wiki/SteamCMD, распаковать в C:\steamcmd\. Запустить steamcmd.exe, выполнить:
login anonymous
force_install_dir C:\gmod_server\
app_update 4020 validate
quit
Запускать сервер на Windows через srcds.exe -console -game garrysmod ....
Шаг 2. Монтирование контента CS:S и HL2
GMod использует ассеты из других Source-игр. Без них на популярных картах (rp_downtown_v4c, gm_construct_extended) будут фиолетовые квадраты вместо текстур и ошибки Missing material. Чтобы избежать этого, нужно установить серверный контент CS:S/HL2 и прописать пути в mount.cfg.
Установка контента
# CS:S Content (AppID 232330)
./steamcmd.sh +force_install_dir ~/css_content +login anonymous \
+app_update 232330 validate +quit
# HL2 / HL2:Episode 1+2 берут из обычного клиента (нет dedicated content)
Альтернатива - готовые архивы CS:S content от комьюнити (есть на GitHub), весят около 4 ГБ.
Конфигурация mount.cfg
Файл: garrysmod/cfg/mount.cfg
"mountcfg"
{
"cstrike" "/home/gmod/css_content/cstrike"
"hl2" "/home/gmod/hl2_content/hl2"
"tf" "/home/gmod/tf_content/tf"
}
После сохранения перезапустить сервер. В консоли при старте должны появиться строки Adding mount cstrike и Adding mount hl2. Если их нет - проверьте пути в mount.cfg (только абсолютные, без ~).
Шаг 3. Выбор гейм-мода
Гейм-мод определяет правила игры. Garry’s Mod из коробки содержит несколько режимов в garrysmod/gamemodes/:
sandbox- творческий режим со спавн-меню, оружием и физикой. Дефолт.terrortown- TTT, мини-детектив с убийцами.prop_hunt- прятки.base- служебный родитель для всех остальных, не запускать.
Внешние гейм-моды (DarkRP, Murder, Cinema, Helix) кладутся в garrysmod/gamemodes/. Каждый - папка с <gamemode>.txt и gamemode/init.lua внутри.
Выбор гейм-мода при запуске - через +gamemode <name> в параметрах srcds_run:
./srcds_run -game garrysmod -console -port 27015 \
+gamemode sandbox \
+map gm_construct \
+maxplayers 24
Установка DarkRP - отдельная процедура с настройкой работ и предметов, подробности в гайде по DarkRP.
Шаг 4. Workshop-коллекция и аддоны
Аддоны раздаются клиентам через Steam Workshop. Подробная инструкция - в гайде по установке аддонов. Краткий путь:
- Создать публичную коллекцию в Workshop, набить её аддонами.
- Скопировать ID коллекции из URL.
- Получить GSLT-токен на steamcommunity.com/dev/managegameservers (AppID 4020).
- Добавить в команду запуска
+host_workshop_collection ID +sv_setsteamaccount TOKEN. - Установить модуль
gmsv_workshopdlвgarrysmod/lua/bin/.
При первом запуске сервер скачает все GMA из коллекции в garrysmod/cache/workshop/. Это может занять 5-30 минут.
Шаг 5. Установка ULX (администрирование)
Без ULX вы не сможете кикнуть троллей, дать админку модераторам и забанить читеров. ULX состоит из двух частей - библиотеки ULib и собственно ULX.
cd ~/gmod_server/garrysmod/addons/
git clone https://github.com/TeamUlysses/ulib.git
git clone https://github.com/TeamUlysses/ulx.git
После рестарта сервер подцепит оба аддона. Первый игрок, зашедший на сервер с SteamID владельца, прописанным в data/ulx/groups.txt, получит права superadmin. Детальная настройка - гайд по ULX.
Шаг 6. Полный пример server.cfg
Файл: garrysmod/cfg/server.cfg. Этот конфиг загружается при каждом смене карты.
// === Основные настройки ===
hostname "[RU] My Garrys Mod Server | Sandbox"
sv_password ""
sv_lan 0
sv_region 3 // 3 = Europe, для России подходит
rcon_password "VERY_STRONG_PASSWORD_HERE"
// === Сетевые параметры ===
sv_minrate 30000
sv_maxrate 0
sv_minupdaterate 33
sv_maxupdaterate 66
sv_mincmdrate 33
sv_maxcmdrate 66
net_maxfilesize 64
fps_max 300
// === Загрузка контента ===
sv_allowdownload 1
sv_allowupload 0
sv_downloadurl "http://fastdl.example.com/gmod/"
// === Workshop ===
host_workshop_collection 1234567890
// === Голос ===
sv_alltalk 0
sv_voiceenable 1
// === Sandbox лимиты ===
sbox_maxprops 100
sbox_maxragdolls 10
sbox_maxnpcs 10
sbox_maxballoons 10
sbox_maxeffects 10
sbox_maxdynamite 0
sbox_maxlamps 10
sbox_maxthrusters 10
sbox_maxwheels 20
sbox_maxhoverballs 10
sbox_maxvehicles 6
sbox_maxbuttons 10
sbox_maxemitters 5
sbox_maxspawners 3
sbox_maxturrets 5
sbox_godmode 0
sbox_noclip 1
sbox_playershurtplayers 1
// === Логирование ===
log on
sv_logbans 1
sv_logecho 0
sv_logfile 1
sv_log_onefile 0
// === Чит-защита ===
sv_cheats 0
sv_consistency 0
sv_pure 0
Опасные параметры: rcon_password (если задать слабый пароль, ваш сервер угонят за час), sv_cheats (никогда не 1 на публичном сервере), sv_allowupload (1 откроет ботам загрузку гадости).
Шаг 7. Параметры запуска srcds_run
Параметры запуска передаются скрипту срдс при старте. Типичный набор для DarkRP:
./srcds_run \
-game garrysmod \
-console -ip 0.0.0.0 -port 27015 \
+map rp_downtown_v4c_v2 \
+gamemode darkrp \
+maxplayers 32 \
-tickrate 33 \
+host_workshop_collection 1234567890 \
+sv_setsteamaccount YOUR_GSLT_TOKEN \
+rcon_password "STRONG_RCON_PASSWORD" \
-authkey YOUR_WORKSHOP_API_KEY \
+exec server.cfg
-tickrate влияет на CPU. По умолчанию 33, можно ставить 66 для милитари-серверов с активным боем - точнее регистрация попаданий, но нагрузка вырастает в 2 раза.
+exec server.cfg гарантирует загрузку конфига - на некоторых хостингах без явного указания сервер не подхватывает файл.
Шаг 8. FastDL для кастомного контента
FastDL нужен, когда у вас есть аддоны вне Workshop (приватные SWEP-паки, кастомные карты, эксклюзивный контент). Без FastDL клиенты будут вечно качать каждый файл через медленный SourceTV.
Подготовка контента
Файлы для FastDL должны быть сжаты в bz2:
cd ~/gmod_server/garrysmod/
find addons/ -type f \( -name "*.mdl" -o -name "*.vmt" -o -name "*.vtf" \
-o -name "*.wav" -o -name "*.mp3" -o -name "*.bsp" \) \
-exec bzip2 -k {} \;
Веб-сервер (nginx-пример)
server {
listen 80;
server_name fastdl.example.com;
root /var/www/fastdl/gmod/;
autoindex on;
location ~ \.bz2$ {
add_header Content-Encoding "";
types { application/x-bzip2 bz2; }
}
}
Скопировать сжатые файлы на веб-сервер с сохранением структуры materials/, models/, sound/, maps/. В server.cfg:
sv_downloadurl "http://fastdl.example.com/gmod/"
sv_allowdownload 1
net_maxfilesize 64
При подключении клиент будет качать со скоростью 10+ МБ/с вместо 20 КБ/с.
Шаг 9. SourceBans++ (опционально)
SourceBans++ - веб-панель с базой банов, которой могут пользоваться несколько ваших серверов одновременно. Полезно, если планируете сеть из 3+ серверов.
Установка - отдельный материал (требует MySQL, веб-сервер с PHP). Краткая схема:
- Установить SourceBans++ на веб-сервер (clone GitHub-репо, настроить БД).
- Создать админский аккаунт через веб-панель.
- Добавить сервер в SourceBans++ с указанием его IP:port и RCON-пароля.
- Поставить Lua-модуль
gmod-sourcebansвaddons/на сервере GMod. - В конфиге аддона указать креды MySQL.
После настройки баны выданные через !ban на одном сервере синхронизируются на все остальные.
Шаг 10. Оптимизация сервера
Профилирование
Поставьте аддон CPU Profiler (Workshop ID 170804558). Запустите профайл командой lua_profiler_start, поиграйте 10 минут, остановите lua_profiler_stop и посмотрите топ хуков:
1. DarkRP_PlayerThink - 8.4%
2. Wire_NetworkThink - 6.1%
3. ACF_ContraptionTick - 4.9%
Если какой-то аддон жрёт больше 5% - либо удалите, либо настройте интервалы тиков.
Лимиты пропов
sbox_maxprops 100 (или 50 для слабого CPU) - главный параметр. Игроки строящие 500-пропные стройки убивают сервер. Также важно:
sbox_maxballoons 10sbox_maxthrusters 5sbox_maxlamps 5(lamps - дорогой эффект)
Регулярная чистка
Поставьте Lua-скрипт автоматической очистки или используйте ULX:
-- autoexec.lua
timer.Create("AutoCleanup", 1800, 0, function()
game.CleanUpMap()
for _, ply in ipairs(player.GetAll()) do
ply:ChatPrint("[Server] Карта очищена автоматически.")
end
end)
Команды для администратора
gmod_admin_cleanup- удалить все пропы и сущности.game.CleanUpMap()- сброс карты до начального состояния.clear_ragdolls- убрать трупы.r_cleardecals- убрать пятна крови и следы пуль (рассылается клиентам).
Сетевые буферы
В server.cfg:
net_maxcleartime 8
sv_clearhinttext 1
mp_decals 50
Резервное копирование
Регулярный бэкап критичных папок:
#!/bin/bash
BACKUP_DIR=/backup/gmod
DATE=$(date +%Y%m%d-%H%M)
cd ~/gmod_server/garrysmod/
tar czf $BACKUP_DIR/gmod-$DATE.tar.gz \
cfg/ data/ addons/ gamemodes/DarkRPModification/
find $BACKUP_DIR -name "gmod-*.tar.gz" -mtime +14 -delete
Положите в cron 0 4 * * * (ежедневно в 4 утра). Бэкап содержит конфиги, ULX-настройки, DarkRP-настройки и админский аддон-пак. Workshop-аддоны бэкапить не нужно - они в Steam.
Запуск как systemd-сервиса (Linux)
Файл /etc/systemd/system/gmod.service:
[Unit]
Description=Garrys Mod Server
After=network.target
[Service]
Type=simple
User=gmod
WorkingDirectory=/home/gmod/gmod_server
ExecStart=/home/gmod/gmod_server/srcds_run -game garrysmod -console -port 27015 +exec server.cfg +map gm_construct +gamemode sandbox +maxplayers 24
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Активация:
sudo systemctl daemon-reload
sudo systemctl enable gmod
sudo systemctl start gmod
sudo journalctl -u gmod -f
Теперь сервер запускается при загрузке системы и автоматически рестартится при падении.
Pterohost - игровой хостинг с DDoS-защитой, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod
FAQ
Сколько RAM нужно для сервера Garry’s Mod?
Для пустого Sandbox-сервера на 16 слотов достаточно 1 ГБ. DarkRP с 24 игроками и сборкой из 100 аддонов потребует 3-4 ГБ. MilitaryRP с Wiremod, ACF и TFA на 32 слота - 6-8 ГБ. NVMe SSD обязателен - срабатывает быстрее на загрузке Lua-аддонов.
Как установить сервер Garry’s Mod через SteamCMD?
Скачайте SteamCMD, выполните login anonymous, затем app_update 4020 validate в нужной директории. Это поставит srcds для GMod без необходимости в Steam-аккаунте. Запуск - через srcds_run -game garrysmod с параметрами.
Зачем нужен mount.cfg в GMod?
mount.cfg прикручивает к серверу контент других Source-игр: Counter-Strike Source (текстуры карт de_dust, de_inferno), Half-Life 2 (модели NPC, миры), Team Fortress 2. Без mount.cfg на карте rp_downtown_v4c будут фиолетовые текстуры - они берутся из CS:S.
Какой gamemode выбрать при запуске сервера?
Параметр +gamemode задаёт стартовый режим: sandbox (классический режим), darkrp (RP-сервер), terrortown (TTT), prop_hunt (прятки), murder. Гейм-мод должен быть установлен в garrysmod/gamemodes/ - DarkRP туда ставится вручную, TTT встроен в GMod.
Что такое FastDL и нужен ли он?
FastDL - HTTP-сервер, с которого клиенты быстро качают кастомный контент (модели, текстуры, звуки) при подключении. Без FastDL скорость загрузки ограничена 20 КБ/с через SourceTV, и игрок будет минуту качать каждую модель. Для Workshop-аддонов FastDL не нужен.
Как оптимизировать сервер Garry’s Mod?
Ограничьте лимиты пропов (sbox_maxprops 100), отключите тяжёлые SWEPs, используйте gmod_mcore_test 1 на клиенте, регулярно очищайте мир от мусора через gmod_admin_cleanup. Профилируйте Lua-нагрузку через CPU Profiler аддон и удалите топ потребителей.