# Установка Garry's Mod

Рекомендуемые операционные системы Linux

* Ubuntu 18.04 LTS
* CentOS 7
* Debian 9

*Первичная настройка Linux*

1. **Скачиваем и устанавливаем программу** [**PuTTY**](https://vk.com/away.php?to=https%3A%2F%2Fwww.putty.org%2F\&cc_key=) **себе на компьютер, что бы могли подключиться к серверу.**

* Запускаем программу, открываем вкладку **Window**, переходим в **Translation** и в меню **Remote character set** выбираем **UTF-8**.
* Возвращаемся во вкладку **Session**. В **Host Name** указываем IP адрес вашего сервера, ниже в **Saved Sessions** придумайте имя подключения и нажмите на кнопку Save.
* Подключаемся к серверу.

**2**. Обновление операционной системы. Данный процесс займет продолжительное время и будет запрашивать подтверждения действий.

```
Для Debian/Ubuntu x64
apt update
apt upgrade

Для CentOSx64
yum update
```

**3**. Установка кодировки UTF-8 в операционной системе.

```
Для Debian/Ubuntux64
apt install locales
Установка пакета кодировок

dpkg-reconfigure locales
Для Debian 8 - Нужная нам кодировка под номером 146, перелистываем список клавишей enter, после чего указываем номер кодировки и подтверждаем цифрой 3.
Для Debian 9 - Находим нужную кодировку и жмем enter.

Для CentOSx64
Установка
localectl set-locale LANG=en_US.UTF-8

Проверка
localectl status
```

**4**. Установка дополнительных библиотек, при использование 64 битной операционной системы

```
Для Debian/Ubuntux64
apt install lib32gcc1
apt install lib32stdc++6
apt install libsdl2-2.0-0
dpkg --add-architecture i386
apt-get update

Для CentOSx64
yum install glibc.i686 libstdc++.i686
yum install glibc libstdc++ ncurses-libs
```

* **Перезапускаем сервер**

**5**. Установка дополнительных программ.

* Установка текстового редактора [Nano](https://vk.com/away.php?to=https%3A%2F%2Flosst.ru%2Ftekstovyj-redaktor-nano-v-linux-dlya-novichkov\&cc_key=)

```
Для Debian/Ubuntu x64
apt install nano

Для CentOS
yum install nano

Устанавливаем редактор Nano по умолчанию
echo 'export EDITOR=nano' >> ~/.bashrc
```

* Установка [Screen](https://vk.com/away.php?to=https%3A%2F%2Fhelp.ubuntu.ru%2Fwiki%2Fscreen\&cc_key=) *создает отдельные объекты, очень похоже на окна, которое можно свернуть или развернуть, если проводить аналогию с графическим интрефейсом. Только вместо окна вы получаете виртуальную консоль, которую можно отправить в фон или вывести на передний план, и в которой запускается указанное приложение.*

```
Для Debian/Ubuntu x64
apt install screen

Для CentOS
yum install screen
```

**6**. Установка пакета сертификатов для Debian.

```
apt -y install ca-certificates
```

*Установка сервера Garry's Mod*

1. **Создаем нового пользователя с паролем, например gameserver.**\
   **Все последующие шаги выполняются под созданным пользователем. Выйти из него можно командой 'exit'**

```
Для Debian/Ubuntux64
useradd gameserver -s /bin/bash -m  /Создаем домашнюю директорию
passwd gameserver                              /Добавляем пароль, попросит указать пароль дважды

Для CentOSx64
useradd gameserver
passwd gameserver qwerty
```

**2**. Подключаемся под нового пользователя

```
Для Debian/Ubuntux64
su gameserver -l

Устанавливаем редактор Nano по умолчанию
echo 'export EDITOR=nano' >> ~/.bashrc

Для CentOSx64
su - gameserver -l

Устанавливаем редактор Nano по умолчанию
echo 'export EDITOR=nano' >> ~/.bashrc
```

**3**. Создаем и переходим в папку, куда будем загружать steamcmd

```
mkdir steamcmd
cd steamcmd
```

**4**. Скачиваем архив steamcmd и разархивируем его

```
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

tar -xvzf steamcmd_linux.tar.gz
```

**5**. Запускаем steamcmd.sh. Важно: нужно находиться в папке steamcmd.

```
./steamcmd.sh
```

**6**. Загрузка и установка сервера

```
Указываем логин, аноним
login anonymous

Указываем путь куда будет загружен сервер игры Garry's Mod
Пример расположения: /home/gameserver/steamcmd/garrysmod/
force_install_dir ./garrysmod/

Загружаем сам сервер
app_update 4020

Запуск обновления сервера или проверка на целостность файлов
app_update 4020 validate
```

**7**. Запуск сервера. После загрузки сервера выходим из steamcmd введя команду 'quit'

```
Переходим в папку garrysmod
cd ./garrysmod/

Пример строчки запуска:
./srcds_run -game garrysmod -port 27015 +maxplayers 32 +gamemode sandbox +map gm_construct

Завершить процесс, выключить игровой сервер нажатием клавиш ctrl+c
```

На этом установка сервера почти закончена.

*Автоматический запуск игрового сервера после перезапуска VDS*

* Под пользователем gameserver прописываем команду **crontab -e**

```
@reboot screen -AmdS run_garrysmod /home/gameserver/steamcmd/garrysmod/srcds_run -game garrysmod -port 27015 +maxplayers 32 +gamemode sandbox +map gm_construct
```

* После этого нажимаем на сочетание клавиш **ctrl+x** и сохраняем результат
* Чтобы посмотреть, что запущено в скрине наберите **screen -ls**
* Чтобы посмотреть отдельный скрин **screen -x название** скрина или его номер.
* Чтобы выйти из выбранного скрина нажмите **ctrl+a** затем **d**.

*Установка дополнительного игрового контента других игр*

Разберем на примере установки дополнительного контента игры Counter-Strike: Source. Проблема данного способа, в том, что придется выкачивать полностью весь сервер игры. После закачки сервера, вы можете удалить лишние папки и файлы, в корне **cstrike**, но внутри нужно оставить только одну папку с названием **cstrike**.

* Запускаем **./steamcmd.sh** Важно: нужно находиться в папке **steamcmd**.

```
Указываем логин, аноним
login anonymous

Указываем путь куда будет загружен контент
Пример расположения: /home/gameserver/steamcmd/garrysmod/cstrike/
force_install_dir ./garrysmod/cstrike/

Загружаем сервер
app_update 232330
```

* Монтируем контент, переходим в папку /garrysmod/**cfg**/ и открываем файл **mount.cfg** и прописываем:

```
"cstrike" "cstrike/cstrike"
```

* Подключаем контент, в папке /**cfg**/ открываем файл **mountdepots.cfg**, если надо прописываем название игры и рядом цифру 1:

```
"gamedepotsystem"
{
  "hl2"      "1"
  "cstrike"  "1"
  "tf"       "1"
}
```

На этом установка сервера и дополнительного контента закончена.\
\
\
\
Для обновления игрового сервера нужно повторить установку игры.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sclad.group/baza-znanii-skladtim/upravlenie-steamcmd/ustanovka-garrys-mod.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
