Установка и настройка выделенного сервера Garry’s Mod

Вступление

Несколько месяцев назад я писал об установке и настройке слушающего сервера Garry’s Mod. В данном HOWTO я подробно напишу как скачать, установить и настроить выделенный (Dedicated) сервер Garry’s Mod. Мы подробно рассмотрим установку админки, расширений и плагинов.

Внимание! Статья обновлена 20.07.2013. В связи с переходом игры Garry’s Mod на новую систему контента, сервер теперь необходимо загружать и обновлять через SteamCMD. Обновление ранее скачанного через hldsupdatetool сервера до нового невозможно — сделайте резервную копию каталогов аддонов, конфигов и т.д. и загрузите сервер заново.

Техническая часть

  1. Чтобы к Вам могли подключаться клиенты, Вы должны иметь «белый» IP-адрес, т.е. видимый из Интернета. Создание сервера с «серым» IP, либо с жёстким NAT’ом провайдера не имеет смысла, т.к. подключиться к такому серверу никто не сможет (кроме находящихся с Вами в одной подсети).
  2. Если у Вас ADSL, вы должны пробросить порт, на котором будет установлен сервер, по протоколу UDP (для подключения клиентов) и TCP (для удалённого администрирования (rcon)) в настройках своего роутера (модема). Обычно проброс портов настраивается в веб-интерфейсе роутера в разделе NATPort Forwarding или NATVirtual Servers.
  3. На сервере главное – скорость отдачи от Вас клиентам, а также мощность процессора Вашего компьютера. На ADSL максимальная отдача может составлять около 780 Кбит/с – 1 МБит/с (на ADSL с модуляцией AnnexM (такая разновидность встречается крайне редко) – 3 Мбит/с). Если у Вас тариф на 256 КБит/с, то к Вам могут подключиться 6 клиентов. Если 512 – 10-12 клиентов, если 1 Мбит и более (ADSL) – 18 клиентов, кабель без NAT – 23 клиента (максимум для слушающего сервера). В соотвествие с этими параметрами Вы должны настроить значение переменной «Максимальное число игроков» во время создания сервера. Если Ваш канал или процессор не будут выдерживать такое количество подключившихся игроков, у всех появятся лаги.

Внимание! Не создавайте сервер на большое количество пользователей, т.к. это может вызывать серьёзные лаги.

Установка выделенного сервера

  1. Скачайте SteamCMD с официального сайта по ссылке: http://media.steampowered.com/installer/steamcmd.zip.
  2. Распакуйте скачанный SteamCMD в папку по умолчанию C:\SteamCMD\ (в пути не должно быть пробелов и русских букв).
  3. Создайте папку, в которую Вы будете устанавливать выделенный сервер Garry’s Mod. Рекомендуем устанавливать в корень диска чтобы не было проблем с пробелами в путях. Также в пути не должно быть русских букв (допустимы только латинские буквы, цифры и символ подчёркивания). Рекомендуем: C:\srcds\, где вместо C:\ подставьте букву любого диска с достаточным количеством свободного места (установленный сервер Garry’s Mod с плагинами требует минимум 4 ГБ).
  4. Перейдите в созданную на предыдущем шаге папку папку и создайте в ней файл update.cmd (можно update.bat). В этот файл впишите следующее:
    @echo off
    C:\SteamCMD\steamcmd.exe +login anonymous +force_install_dir C:/srcds +app_update 4020 validate +quit
    pause

    Здесь C:\SteamCMD\ — путь к установленному SteamCMD, а c:\srcds — каталог, в который будем устанавливать сервер.

  5. Запускайте созданный файл update.cmd на выполнение. При первом запуска будет произведено автоматическое обновление утилиты обновления, затем начнётся скачивание и установка выделенного сервера.
    Автоматическое обновление hldsupdatetool
    Автоматическое обновление hldsupdatetool

    Скачивание выделенного сервера
    Скачивание выделенного сервера
  6. По окончании скачивания (зависит от скорости Вашего Интернет-соединения; сервер весит около 900 МБ), перейдите в каталог с:\srcds\orangebox\, где с:\srcds\ — это каталог установки выделенного сервера и создайте там файл launch.cmd (или launch.bat) с текстом:
    start /high srcds.exe -console -game garrysmod -port 27015 -maxplayers 12 +map gm_flatgrass

    Здесь -port 27015 — порт, на котором будет «висеть» сервер (UDP/TCP), -maxplayers 12 — максимальное количество игроков на данном сервере, +map gm_flatgrass — карта, с которой запустится сервер. Если требуется автоматически перезапускать сервер при ошибках/падениях, то вместо предыдущего текста, впишите следующий:

    @echo off
    cls
    echo Protecting srcds from crashes…
    echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
    title srcds.com Watchdog
    : srcds
    echo (%time%) srcds started.
    start /wait srcds.exe -console -game garrysmod -port 27015 -maxplayers 12 +map gm_flatgrass
    echo (%time%) WARNING: srcds closed or crashed, restarting.
    goto srcds
  7. Запустите сервер созданным файлом launch.cmd или launch.bat.
  8. Сервер успешно установлен.

Настройка выделенного сервера Garry’s Mod

Сервер был установлен, но, к сожалению, пока он не пригоден для использования. Нужно его настроить.

  1. Установите джентльменский набор плагинов из svn для Garry’s Mod, так, как описано в этой статье вручную или автоматически (устанавливать плагины Вы должны в каталог c:\srcds\orangebox\garrysmod\addons\, где c:\srcds\ — каталог установки выделенного сервера. Всю информацию по установке и сами скрипты установки/обновления плагинов Вы найдёте по этой ссылке. Обязательно установите ULX, U-Lib и U-Restrict.
  2. Скачайте и распакуйте архив с файлами конфигурации сервера в папку c:\srcds\orangebox\garrysmod\cfg\, где c:\srcds\ — путь установки сервера.
  3. Откройте файл c:\srcds\orangebox\garrysmod\cfg\server.cfg в любом текстовом редакторе и внесите в него правки: измените имя сервера (переменная hostname), смените rcon-пароль (rcon_password) и т.д. В файле я всё подробно описал какая переменная чем управляет, что включает/выключает, поэтому на этом я останавливаться не буду здесь. Внимание! Первым делом задайте пароль вместо !!!CHANGEME!!!, иначе Ваш сервер могут взломать.
  4. Сделайте себя и, если нужно, своих друзей администраторами свежесозданного сервера (обязательно, иначе ULX-админка не даст Вам доступа). Чтобы сделать себя админом, нужно узнать Ваш личный SteamID и выбрать автоматический или ручной способ:
    1. Автоматический способ. Запустите сервер (ULX и U-Lib должны быть установлены), запустите клиент Garry’s Mod и зайдите на свой сервер с помощью команды connect ВАШ_ВНЕШНИЙ_IP:ПОРТ. Сверните Garry’s Mod и перейдите в консоль сервера, введите в консоли сервера
      ulx adduser ВАШ_НИК superadmin

      где ВАШ_НИК — это Ваш ник в Steam (при наличии пробелов в нике кавычки обязательны; допускаются только латинские буквы, цифры и знак подчёркивания). ULX автоматически пропишет этого пользователя в админы сервера.

    2. Ручной способ. В любом текстовом редакторе откройте файл с:\srcds\orangebox\garrysmod\settings\users.txt. В этот файл прописываются администраторы сервера по SteamID. Найдите в этом файле раздел “superadmin” и после строки
      //”garry” “STEAM_0:1:7099

      впишите свою в виде

      “ВАШ_НИК” “STEAM_0:1:XXXXXXXXX”

      где ВАШ_НИК – это ник админа, который будет в списке вывода админов сервера (здесь разрешено вводить только латинские буквы и цифры без пробелов; кавычки обязательны), а STEAM_0:1:XXXXXXXXX – это Ваш SteamID (замените на настоящий, естественно 😉  ), полученный на 3 шаге.

  5. Обязательно установите плагин Simple Prop Protection из SVN отсюда:
    http://simplepropprotection.googlecode.com/svn/trunk/ (официальный репозиторий). Этот плагин не позволит пользователям мешать другим/повреждать/удалять их постройки и т.д.
  6. Пробуйте запустить сервер и зайти на него с помощью клиента Garry’s Mod. Вызовите админку командой ulx admin. Если всё пройдёт успешно, сервер был успешно настроен и готов к приёму игроков.

Мини-FAQ по серверу Garry’s Mod

Q: Как запретить выдавать игрокам оружие (давать только Physgun, грави-ган, тулган и скриншотган)?

A: Установите плагин U-Restrict (если Вы устанавливали с помощью наших скриптов, то он уже установлен и автоматически активирован).

Q: Как изменить сообщение, которое появляется при заходе на созданный сервер Garry’s Mod?

A: Отредактируйте файл с:\srcds\orangebox\garrysmod\data\ulx\motd.txt. Это обычный HTML-файл.

Q: Куда пишутся сокращённые логи админки?

A: Логи админки ULX пишутся в с:\srcds\orangebox\garrysmod\data\ulx_logs\ДАТА.txt, где ДАТА – сегодняшняя дата в формате ММ-ДД-ГГ.

Q: Мне нужно выдавать игрокам при подключении к серверу определённое оружие. Как это сделать?

A: Как уже писалось выше, нужен плагин U-Restrict для админки (если Вы устанавливали набор плагинов с помощью наших скриптов, он уже установлен). Итак, чтобы выдать нужное оружие, откройте файл с:\srcds\orangebox\garrysmod\data\URestrict\loadouts.txt в любом текстовом редакторе и в разделе loadout после gmod_tool  введите полное имя нужного оружия, например weapon_smg. Это оружие будет автоматически выдано игроку после подключения к серверу, а также после его респауна.

Q: Как мне добавить контент других Source-игр для использования на моём сервере?

A: Чтобы контент других игр стал доступен в Garry’s Mod всем играющим, его необходимо установить через SteamCMD. Приведу пример для контента CSS и TF2:

  1. Скачиваем в отдельную папку сервер Counter-Strike: Source или любой другой игры, поддерживаемой Garry’s Mod, следующей командой (папку, в которую будем скачивать, должна быть создана заранее, иначе установка и скачивание не начнётся). Команда для скачивания сервера Counter-Strike: Source:
    C:\SteamCMD\steamcmd.exe +login anonymous +force_install_dir C:/cssserver +app_update 232330 validate +quit

    Команда для скачивания сервера Team Fortress 2:

    C:\SteamCMD\steamcmd.exe +login anonymous +force_install_dir C:/tf2server +app_update 232250 validate +quit
  2. После полного завершения, заходим в папку скачанного сервера и перемещаем папку «cstrike» (для Counter-Strike: Source) или «tf«, «dods«, «hl2mp» (для других игр) в папку C:\srcds\orangebox\ (не «garrysmod»), где C:\srcds\ — папка установки сервера Garry’s Mod.
  3. Открываем файл \garrysmod\cfg\mount.cfg в текстовом редакторе и вносим в него правки. Пример для TF2 и CSS:
    "mountcfg"
    {
      "cstrike" "C:\srcds\orangebox\cstrike"
      "tf"      "C:\srcds\orangebox\tf"
    }
  4. Перезапускаем сервер Garry’s Mod. Контент установлен и доступен всем играющим.
  5. Папку со скачанным сервером другой игры, из которой мы взяли контент, можно удалить.

513 commentaries to post

  1. @данил
    Вполне возможно. Разработчики много раз меняли структуру пакета с сервером. Ищите например garrysmod.

  2. Здравствуйте, у меня такая проблема, я запускаю свой сервер в режиме DarkRP, хочу поменять место спавна на карте. Встаю на желаемую позицию, и допустим хочу чтобы здесь спаунился Гражданин. Пишу /setspawn citizen, все хорошо, но после перезапуска сервера позиция слетает на стандартную…
    Даже не знаю что с этим делать, а позицию спавна надо обязательно менять. Очень надеюсь на вашу помощь…
    P.S. Возможно какой то мод влияет на это, если нужно могу скинуть список модов.

  3. @EtoZheGhost
    Все настройки сохраняются в соответствующих файлах (часто — sqlite базах) при отключении сервера. Убедитесь, что на них установлены правильные права доступа, позволяющие пользователю, от имени которого запущен сервер, читать и записывать в них.

  4. Я все нужные мне аддоны скинул в папку addons но на сервере их нету, в чём проблема?

  5. Вобщем я не смог поставить аддоны через svn я не мог найти файл svn_fetch, и я перенёс аддоны из папки лицензионного гаррис мода, но они не работают, а ещё я скинул карту в maps но тоже не как, помогите

    1. Вобщем я не смог поставить аддоны через svn я не мог найти файл svn_fetch

      Это нормально. Все старые скрипты мы удалили в связи с тем, что они больше не нужны. Подключите нужные аддоны из Workshop так, как описано здесь.

  6. Вообщем такая проблема, помогите кто может. Значит играл я с народом на сервере, играл играл, а потом я решил перезапустить сервер и ПК. Вышел из игры, закрыл сервер на крестик, и тут у меня вылезло какое-то маленькое окошечко с выбором того, что нужно сделать и еще чем-то, причем окошко SteamCMD шное, то есть этой проги, и тут я случайно нажал на энтр и оно закрылось. Потом значит я включаю серв, а его нет в списке sunbox серверов, есть только в локальном и никто не подключается, что мне делать помогите, сервер настроенный и создавать новый очень долго, много чего переделывать и много чего потеряю, помогите очень прошу, везде искал и не нашел ответов.

    1. Потом значит я включаю серв, а его нет в списке sunbox серверов, есть только в локальном и никто не подключается, что мне делать помогите, сервер настроенный и создавать новый очень долго, много чего переделывать и много чего потеряю, помогите очень прошу, везде искал и не нашел ответов.

      Ответить на этот вопрос не видя файлов конфигурации данного сервера невозможно. Проверьте их корректность, затем запустите сервер заново.

      1. А можно узнать, как проверить их на целостность?

        1. Целостность сервера можно проверить, запустив процесс его обновления посредством SteamCMD. Отсутствующие или повреждённые файлы будут автоматически загружены.

          Также следует проверить конфиг сервера. Пример правильного конфига есть в данной статье.

    2. Привет братан помоги пожалуйста проблема вот какая:
      Не могу настроить jobs перерыл весь инет и не знаю как сверял несколько раз.

  7. Здравствуйте, при выполнении 7 шага в разделе «Установка» пишет, что не найден файл srcds .exe . Что мне делать?

    1. Папку я назвал srcds, я не понимаю в чем проблема.

    2. Убедитесь, что создали скрипт запуска в правильном каталоге.

      1. @Vitaly странно, вроде путь D:\srcds\orangebox , но все равно пишет ошибку.

      2. Все, оказывается ошибка была из-за того, что я выбрал диск Д для update .cmd! Спасибо.

  8. Можно уточнить, какие папки входят в каталог D:\srcds\orangebox? У меня просто все распаковалось без данной папки.

    1. Автор многократно менял структуру сервера. Скрипт запуска нужно создавать там, где лежит файл srcds.exe.

  9. Здравствуйте! Я добавил на сервер контент из Hl2: Ep1 и Hl2: Ep2, но при спавне NPC пишет «Sorry, you can’t spawn this NPC», хотя другие я могу, к примеру, Солдата обычного. В чем дело?

  10. Здравствуйте, возникла проблема с установкой на сервер кастомных entity. В addons они были добавлены, в файле darkrpmodification я их прописывал и так и сяк, но во вкладке энтити у меня единственное энтити которое появилось это решетка которая может закрывать двери, называющаяся door protector, хотя я такую вообще в энтити не добавлял и не знаю откуда она.

  11. Здравствуйте!
    Что делать если у меня не выдаётся админка?
    Я перепробовал все варианты!
    Но он пишет что- у вас нет прав!
    помогите!

    1. Запустить выдачу прав непосредственно из консоли сервера, либо прописать вручную в конфиге.

  12. Что делать если мои друзья не могут присоедениться?

    1. Для того, чтобы другие пользователи могли подключиться к серверу, нужен белый внешний IP-адрес, а также открытый и проброшенный порт, на котором запущен сервер (по умолчанию это 27015).

  13. Здравствуйте!
    У меня такая проблема
    После выхода с сервера, и повторного захода на него, остаются постройки.
    Что делать?

    1. Это нормально. Постройки отключённых игроков удаляются автоматически по истечении нескольких минут. Время можно изменять в настройках сервера.

      1. А где именно, в каком файле и какая строчка, помогите, очень прошу )

        1. К сожалению, точно сказать не могу, т.к. давно не держу серверы данной игры. Ранее это настраивалось в установленной панели администратора. Пункт назывался «Сохранять постройки отключившихся игроков».

  14. Как сделать, чтобы мой сервер был в списке серверов и на него могли заходить люди?

    1. Иметь белый IP-адрес, открытый и проброшенный порт, а также прописанный в конфиге sv_lan 0.

      1. У меня белый ip открытые порты и в config прописан sv_lan 0 а в итоге игроки не могут зайти а в листе сервер не виден

        1. Если игроки зайти не могут, значит либо серый IP (нужно обращаться к провайдеру и оплатить соответствующую услугу), либо нужный порт 27015 (по умолчанию) не проброшен в настройках роутера.

  15. А как понять серый или белый ip-адрес?

  16. У меня белый ip, порт открыт, но друг никак не может зайти на сервер. Пишет Server does not responding. Сервер появляется только в локальных серверах.
    Sv_lan в server cfg стоит на 0. Почему он не может зайти?

  17. Если я установлю на сервер аддон «Addon Share», то будет ли он загружать на клиенты моды с сервера?

    1. Уже давно никакие аддоны не требуются. Необходимо просто создать коллекцию в Steam Workshop с используемыми на сервере дополнениями и они будут загружены пользователю автоматически при подключении к серверу.

  18. Через файл users прописал себя суперадмином, установил через server.cfg rcon пароль, захожу на сервак и когда я пишу ulx adduser User superadmin, мне пишет следующее: you can’t have access to this command, User Что делать?

    1. Можно попробовать прописать команду в консоли сервера.

  19. Ко мне всё равно не может подключиться мой друг. Что делать?

    1. Для того, чтобы другие игроки могли подключиться к серверу, необходимо иметь белый, видимый из Интернета, IP-адрес, а также пробросить порт сервера (27015) по протоколу UDP в настройках роутера.

      Другие игроки должны подключаться к серверу через внешний IP-адрес (подключение через список друзей Steam работать не будет, т.к. большинство роутеров не поддерживают механизм NAT loopback) при помощи команды connect. Например:

      connect 1.2.3.4:27015

      Если на сервере задан пароль, то его следует указать сразу после команды подключения:

      connect 1.2.3.4:27015;password P@SSW0RD

      Здесь 1.2.3.4 белый внешний IP-адрес, 27015 — порт сервера, а P@SSW0RD — пароль для подключения к серверу (если задан).

  20. Здраствуйте. У меня проблема. Не открывается q menu, c menu, tab, не работает тул ган, нет фотоаппарата.

    1. В параметрах игры, на странице Клавиатура, следует сбросить настройки управления. Должно помочь.

  21. Здравствуйте. Вроде делал все по инструкции, сервер запустил, накатал аддонов. Кидаю айпи другу, но ему при подключении пишет ошибку «Connection failed after 6 retries». И никто, кроме меня зайти не может. Сервер нигде не видно, кроме как только у меня в локальной сети. Возможно я что-то упустил. Если есть ответ, напишите, пожалуйста.

    1. Для того, чтобы к серверу могли подключаться другие игроки, необходим белый (видимый извне) IP-адрес, а также проброшенный в настройках роутера порт 27015 по протоколу UDP.

      Для внешних подключений должна применяться команда connect внешний_IP-адрес:27015 (через список друзей Steam работать не будет, т.к. там будет отображаться IP из локальной сети).

  22. Здравствуйте. Я создал сервер, он запустился. Нету никаких ошибок и прочего, но я не могу к нему подключится. Он в гарисе не отображается. Я пробовал способом подлючения как на хамачи, но бесполезно. Помогите.

    1. Если роутер не поддерживает NAT loopback, то подключаться к своему серверу необходимо по внутреннему IP-адресу.

      Пример:

      connect 192.168.1.2:27015

      Здесь 192.168.1.2 — это IP-компьютера с запущенным выделенным сервером внутри локальной сети.

Обсуждение закрыто.