Установка игрового сервера Rust на Linux: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026
Статья переписана по результатам установки на чистой Ubuntu 24.04, добавлены снимки экрана
Строка 1: Строка 1:
= Установка игрового сервера Rust на Linux =
Инструкция по установке выделенного сервера Rust на VDS с Ubuntu 24.04. Все команды и снимки экрана сняты с настоящего сервера: инструкция проверена 15 ноября 2026 года на чистой Ubuntu 24.04.4 с сервером сборки 2636.


== 1. Подготовка системы ==
== Что понадобится ==


* Войдите в систему под учетной записью с правами '''root''' или пользователя с правами '''sudo'''.
* VDS с '''Ubuntu 24.04 LTS''' и доступом '''root''' по SSH.
* Рекомендуется использовать Ubuntu 24.04 LTS или Debian 12.
* '''Память:''' сервер с небольшой картой (размер 3000) без игроков занимает около 4 ГБ. Для карты по умолчанию (4500) разработчики называют 12 ГБ. Берите VDS от 8 ГБ для маленькой карты и от 16 ГБ для обычной.
* '''Диск:''' файлы сервера занимают 5,4 ГБ; с запасом на обновления и карту нужно от 15 ГБ свободного места.
* '''Процессор:''' от 4 ядер: сервер и без игроков занимает больше одного ядра.


== 2. Системные требования ==
Учётная запись Steam и купленная игра для установки сервера не нужны.


* '''ОС:''' Ubuntu 24.04 LTS / Debian 12
== 1. Обновите систему ==
* '''RAM:''' Минимум 4 ГБ (рекомендуется 8+ ГБ)
* '''CPU:''' 4+ ядра
* '''Диск:''' 15+ ГБ свободного места


== 3. Установка необходимых пакетов ==
<pre>sudo apt update && sudo apt upgrade -y</pre>


<pre>sudo apt update && sudo apt upgrade -y
На свежей системе обновление идёт от 5 минут до получаса. По ходу могут появиться два места, где нужно ваше участие.
sudo apt install -y wget curl lib32gcc-s1 lib32stdc++6 screen</pre>


== 4. Создание пользователя ==
'''Окно выбора раскладки клавиатуры.''' Обновление остановится и покажет окно «Configuring keyboard-configuration». Ничего менять не нужно: нажмите '''Enter''', в следующем окне снова '''Enter'''.


<pre>sudo useradd -m -s /bin/bash rust
[[Файл:Ubuntu-apt-keyboard-dialog.png|800px]]
sudo passwd rust</pre>


== 5. Установка SteamCMD ==
'''Сообщение о новом ядре.''' Если в конце вы видите «Pending kernel upgrade», система обновила ядро и ждёт перезагрузки.
 
[[Файл:Ubuntu-apt-kernel-reboot.png|800px]]
 
Перезагрузите сервер и подключитесь снова через минуту:
 
<pre>sudo reboot</pre>
 
== 2. Установите нужные пакеты ==
 
<pre>sudo apt install -y wget lib32gcc-s1 lib32stdc++6</pre>
 
* <code>lib32gcc-s1</code> и <code>lib32stdc++6</code> нужны программе SteamCMD, через которую скачивается сервер.
 
== 3. Создайте пользователя для сервера ==
 
Игровой сервер не должен работать от root. Создайте для него отдельного пользователя:
 
<pre>sudo useradd -m -s /bin/bash rust</pre>
 
Пароль этому пользователю не нужен: входить под ним по SSH никто не будет, а переключаться на него вы будете командой из шага 5.
 
== 4. Скачайте SteamCMD ==


<pre>sudo mkdir -p /opt/steamcmd
<pre>sudo mkdir -p /opt/steamcmd
Строка 31: Строка 50:
sudo chown -R rust:rust /opt/steamcmd</pre>
sudo chown -R rust:rust /opt/steamcmd</pre>


== 6. Установка Rust сервера ==
Архив маленький (2,3 МБ), но с серверов Steam он может качаться около минуты — это нормально.
 
== 5. Установите сервер Rust ==


1. Переключитесь на пользователя rust:
Переключитесь на пользователя <code>rust</code> и запустите SteamCMD:
<pre>sudo su - rust</pre>


2. Запустите SteamCMD:
<pre>sudo su - rust
<pre>cd /opt/steamcmd
cd /opt/steamcmd
./steamcmd.sh</pre>
./steamcmd.sh</pre>


3. Установите сервер:
При первом запуске SteamCMD скачивает собственное обновление (около 40 МБ). С серверов Steam оно может идти несколько минут — дождитесь приглашения <code>Steam></code> и ничего не вводите раньше.
 
Затем введите по очереди три команды. Порядок важен: каталог установки задаётся '''до''' входа.
 
<pre>force_install_dir /home/rust/rust-server
<pre>force_install_dir /home/rust/rust-server
login anonymous
login anonymous
app_update 258550 validate
app_update 258550 validate</pre>
quit</pre>
 
[[Файл:Rust-linux-steamcmd-login.png|800px]]


== 7. Настройка сервера ==
Если вместо загрузки появилась строка «ERROR! Failed to install app … (Missing configuration)», просто введите команду <code>app_update</code> ещё раз: при первом запуске SteamCMD такое случается, со второго раза загрузка начинается.


1. Создайте скрипт запуска:
Загрузка идёт несколько минут; на диске сервер занимает 5,4 ГБ. Дождитесь строки «Success! App '258550' fully installed.»:
<pre>nano /home/rust/rust-server/start-server.sh</pre>
 
[[Файл:Rust-linux-steamcmd-install.png|800px]]
 
Выйдите из SteamCMD:
 
<pre>quit</pre>
 
Проверьте, что файлы на месте:
 
<pre>ls /home/rust/rust-server</pre>
 
[[Файл:Rust-linux-files.png|800px]]
 
== 6. Создайте скрипты запуска и остановки ==
 
'''Скрипт запуска.''' Все настройки сервера Rust задаются ключами запуска:
 
<pre>nano ~/rust-server/start-server.sh</pre>


2. Добавьте содержимое:
<pre>#!/bin/bash
<pre>#!/bin/bash
./RustDedicated -batchmode -nographics -server.hostname "Rust Server" -server.identity "rustserver" -server.maxplayers 50 -server.port 28015 -rcon.port 28016 -rcon.password "your_rcon_password"</pre>
cd /home/rust/rust-server
export LD_LIBRARY_PATH=/home/rust/rust-server/RustDedicated_Data/Plugins/x86_64:$LD_LIBRARY_PATH
exec ./RustDedicated -batchmode -nographics +server.port 28015 +server.queryport 28017 +rcon.port 28016 +rcon.password "Secret123" +rcon.web 1 +server.identity "myserver" +server.hostname "My Rust Server" +server.level "Procedural Map" +server.seed 12345 +server.worldsize 3000 +server.maxplayers 50 +server.saveinterval 300 -logfile /home/rust/rust-server/server.log</pre>
 
Строка, начинающаяся с <code>exec</code>, должна быть одной строкой. Замените значения на свои:
 
* <code>+server.hostname</code> — название сервера в списке.
* <code>+rcon.password</code> — пароль встроенной консоли сервера. '''Обязательно замените''' <code>Secret123</code> на свой: с этим паролем сервером можно управлять.
* <code>+server.maxplayers</code> — предел числа игроков.
* <code>+server.worldsize</code> — размер карты, от 1000 до 6000; по умолчанию в игре 4500. Чем больше карта, тем больше нужно памяти и тем дольше первый запуск.
* <code>+server.seed</code> — зерно карты: одно и то же число даёт одну и ту же карту.
* <code>+server.identity</code> — имя каталога с миром и настройками внутри <code>server/</code>.
* <code>+server.saveinterval</code> — как часто сервер сам сохраняет мир, в секундах.
* <code>+server.port</code>, <code>+server.queryport</code>, <code>+rcon.port</code> — порты игры, запросов списка серверов и консоли.
 
'''Скрипт остановки.''' Если сервер Rust остановить обычным способом, он завершается сразу и мир не сохраняет: пропадает всё с момента последнего автосохранения. По команде <code>quit</code> из своей консоли он сначала сохраняет мир. Создайте скрипт, которым служба будет отдавать эту команду:
 
<pre>nano ~/rust-server/stop-server.py</pre>
 
<pre>#!/usr/bin/env python3
# Сохраняет мир Rust и останавливает сервер командой quit через его встроенную консоль (WebRCON).
import base64, json, os, re, socket, subprocess, time
 
start = open("/home/rust/rust-server/start-server.sh").read()
password = re.search(r'\+rcon\.password\s+"([^"]*)"', start).group(1)
port = int(re.search(r"\+rcon\.port\s+(\d+)", start).group(1))
 
try:
    s = socket.create_connection(("127.0.0.1", port), timeout=10)
    key = base64.b64encode(os.urandom(16)).decode()
    s.sendall((f"GET /{password} HTTP/1.1\r\nHost: 127.0.0.1:{port}\r\nUpgrade: websocket\r\n"
              f"Connection: Upgrade\r\nSec-WebSocket-Key: {key}\r\nSec-WebSocket-Version: 13\r\n\r\n").encode())
    s.recv(4096)
    payload = json.dumps({"Identifier": 1, "Message": "quit", "Name": "WebRcon"}).encode()
    mask = os.urandom(4)
    s.sendall(bytes([0x81, 0x80 | len(payload)]) + mask + bytes(b ^ mask[i % 4] for i, b in enumerate(payload)))
except OSError:
    raise SystemExit(0)  # консоль недоступна - службу остановит система


3. Сделайте исполняемым:
for _ in range(60):       # ждём, пока сервер сохранит мир и завершится
<pre>chmod +x /home/rust/rust-server/start-server.sh</pre>
    if subprocess.run(["pgrep", "-u", "rust", "-x", "RustDedicated"], capture_output=True).returncode != 0:
        break
    time.sleep(1)</pre>


== 8. Настройка systemd ==
Скрипт сам берёт пароль и порт консоли из <code>start-server.sh</code>. Отступы в начале строк важны — копируйте его целиком.
 
Сделайте оба файла исполняемыми и закройте их от других пользователей (в них пароль), затем вернитесь к root:
 
<pre>chmod 750 ~/rust-server/start-server.sh ~/rust-server/stop-server.py
ls -l ~/rust-server/start-server.sh ~/rust-server/stop-server.py
exit</pre>
 
[[Файл:Rust-linux-scripts.png|800px]]
 
== 7. Настройте автозапуск ==
 
Чтобы сервер запускался вместе с системой и поднимался после сбоя, создайте для него службу:


<pre>sudo nano /etc/systemd/system/rust-server.service</pre>
<pre>sudo nano /etc/systemd/system/rust-server.service</pre>


Добавьте:
Вставьте:
 
<pre>[Unit]
<pre>[Unit]
Description=Rust Dedicated Server
Description=Rust Dedicated Server
Строка 72: Строка 164:
WorkingDirectory=/home/rust/rust-server
WorkingDirectory=/home/rust/rust-server
ExecStart=/home/rust/rust-server/start-server.sh
ExecStart=/home/rust/rust-server/start-server.sh
ExecStop=/usr/bin/python3 /home/rust/rust-server/stop-server.py
TimeoutStopSec=90
Restart=always
Restart=always
RestartSec=5


[Install]
[Install]
WantedBy=multi-user.target</pre>
WantedBy=multi-user.target</pre>


== 9. Запуск сервера ==
== 8. Запустите сервер и проверьте его ==


<pre>sudo systemctl daemon-reload
<pre>sudo systemctl daemon-reload
Строка 83: Строка 178:
sudo systemctl start rust-server</pre>
sudo systemctl start rust-server</pre>


== 10. Настройка файрвола ==
Первый запуск долгий: сервер создаёт карту. Для карты размером 3000 это около 6 минут, для больших — дольше; следующие запуски занимают чуть больше минуты. Проверьте состояние службы — должно быть '''active (running)''':
 
<pre>sudo systemctl status rust-server --no-pager -n 0</pre>
 
[[Файл:Rust-linux-service-status.png|800px]]
 
Сервер готов принимать игроков, когда в его журнале появились строки «Server startup complete» и «SteamServer Connected». Вторая команда показывает занятые порты: 28015 — игра, 28017 — запросы списка серверов, 28016 — консоль.
 
<pre>sudo grep -E "Generating procedural map|Server startup complete|SteamServer Connected" /home/rust/rust-server/server.log | tail -n 3
sudo ss -lntu | grep -E ":2801[5-7] "</pre>
 
[[Файл:Rust-linux-check.png|800px]]
 
Управление службой:
 
<pre>sudo systemctl stop rust-server      # остановить (мир сохраняется)
sudo systemctl restart rust-server  # перезапустить
sudo journalctl -u rust-server -f    # смотреть журнал, выход — Ctrl+C</pre>
 
== 9. Откройте порты в файрволе ==
 
'''Внимание:''' сначала разрешите SSH и только потом включайте файрвол. Иначе связь с сервером оборвётся. Если SSH у вас на нестандартном порту, вместо первой команды выполните <code>sudo ufw allow НОМЕР_ПОРТА/tcp</code>.
 
<pre>sudo ufw allow OpenSSH
sudo ufw allow 28015/udp
sudo ufw allow 28017/udp
sudo ufw enable</pre>
 
Если появится вопрос «Command may disrupt existing ssh connections. Proceed with operation (y|n)?», ответьте '''y'''. Проверьте результат:
 
<pre>sudo ufw status</pre>
 
[[Файл:Rust-linux-ufw.png|800px]]
 
== 10. Зайдите на сервер ==
 
В игре нажмите '''F1''' и введите в консоли <code>client.connect IP_СЕРВЕРА:28015</code> либо найдите сервер по названию в списке. Пошагово со снимками — в статье [[Как зайти на сервер Rust]].
 
== Порт консоли не открывайте наружу ==
 
Встроенная консоль сервера (RCON) слушает порт 28016/tcp и защищена только паролем из <code>start-server.sh</code>. Через неё можно делать с сервером что угодно, поэтому в файрволе этот порт открывать не нужно: скрипт остановки обращается к нему с самого сервера. Команды из шага 9 его не открывают.
 
== Обновление сервера ==
 
После выхода обновления игры остановите сервер, обновите файлы и запустите снова:
 
<pre>sudo systemctl stop rust-server
sudo -u rust /opt/steamcmd/steamcmd.sh +force_install_dir /home/rust/rust-server +login anonymous +app_update 258550 validate +quit
sudo systemctl start rust-server</pre>
 
Крупные обновления Rust выходят раз в месяц. После такого обновления старая карта серверу не подходит, и он создаёт мир заново. Ваши скрипты запуска и остановки при обновлении не затрагиваются.
 
== Где лежат сохранения ==
 
Мир, данные игроков и настройки лежат в каталоге с именем из ключа <code>+server.identity</code>:
 
<pre>/home/rust/rust-server/server/myserver/</pre>
 
* файлы <code>.sav</code> и <code>.map</code> — мир и карта;
* файлы <code>player.*.db</code> — данные игроков;
* <code>cfg/users.cfg</code> — администраторы и модераторы, <code>cfg/bans.cfg</code> — блокировки.
 
Журнал сервера: <code>/home/rust/rust-server/server.log</code>


<pre>sudo ufw allow 28015/udp
При остановке службы сервер сохраняет мир — время изменения файла мира совпадает со временем остановки:
sudo ufw allow 28015/tcp
sudo ufw allow 28016/tcp</pre>


== Заключение ==
[[Файл:Rust-linux-stop-save.png|800px]]


Rust сервер успешно установлен!
== Если что-то пошло не так ==


'''Для размещения ваших игровых серверов на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:'''
{| class="wikitable"
! Что видите !! Причина и решение
|-
| Сервер долго не появляется в списке после первого запуска || Он ещё создаёт карту. Следите за журналом: <code>sudo tail -f /home/rust/rust-server/server.log</code> (выход — Ctrl+C) и ждите строки «Server startup complete».
|-
| Сервер завершается во время создания карты || Не хватает памяти. Уменьшите <code>+server.worldsize</code> или возьмите VDS с большим объёмом памяти.
|-
| После перезапуска пропали последние постройки || Сервер был остановлен без сохранения. Останавливайте его только командой <code>sudo systemctl stop rust-server</code> и проверьте, что скрипт остановки из шага 6 на месте.
|-
| Сервер работает, но его нет в списке игры || Не открыт порт запросов 28017/udp. Проверьте командой <code>sudo ufw status</code>.
|-
| SteamCMD отвечает «ERROR! Failed to install app '258550' (Missing configuration)» || Так иногда бывает при первом запуске SteamCMD. Введите команду <code>app_update</code> ещё раз — со второго раза загрузка начинается.
|-
| После установки нет каталога <code>/home/rust/rust-server</code> || Команда <code>force_install_dir</code> была введена с ошибкой или после <code>login</code>, и сервер установился в <code>/home/rust/Steam/steamapps/common/</code>. Запустите SteamCMD заново и повторите три команды из шага 5 по порядку.
|-
| Служба в состоянии «failed» || Посмотрите причину: <code>sudo journalctl -u rust-server -n 50 --no-pager</code>. Чаще всего это опечатка в пути или скрипт запуска не сделан исполняемым.
|-
| Сервер запущен, но зайти не удаётся || Проверьте, что порты открыты (<code>sudo ufw status</code>) и что в игре указан верный адрес и порт.
|}


* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для высоконагруженных игровых серверов
'''Для размещения игровых серверов рекомендуем услуги [https://ark-hoster.ru ARK-HOSTER.RU]:'''
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних серверов


Наши специалисты помогут с настройкой игровых серверов!
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' — для небольших и средних серверов
* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' — для высоконагруженных игровых серверов

Версия от 00:01, 15 ноября 2026

Инструкция по установке выделенного сервера Rust на VDS с Ubuntu 24.04. Все команды и снимки экрана сняты с настоящего сервера: инструкция проверена 15 ноября 2026 года на чистой Ubuntu 24.04.4 с сервером сборки 2636.

Что понадобится

  • VDS с Ubuntu 24.04 LTS и доступом root по SSH.
  • Память: сервер с небольшой картой (размер 3000) без игроков занимает около 4 ГБ. Для карты по умолчанию (4500) разработчики называют 12 ГБ. Берите VDS от 8 ГБ для маленькой карты и от 16 ГБ для обычной.
  • Диск: файлы сервера занимают 5,4 ГБ; с запасом на обновления и карту нужно от 15 ГБ свободного места.
  • Процессор: от 4 ядер: сервер и без игроков занимает больше одного ядра.

Учётная запись Steam и купленная игра для установки сервера не нужны.

1. Обновите систему

sudo apt update && sudo apt upgrade -y

На свежей системе обновление идёт от 5 минут до получаса. По ходу могут появиться два места, где нужно ваше участие.

Окно выбора раскладки клавиатуры. Обновление остановится и покажет окно «Configuring keyboard-configuration». Ничего менять не нужно: нажмите Enter, в следующем окне снова Enter.

Сообщение о новом ядре. Если в конце вы видите «Pending kernel upgrade», система обновила ядро и ждёт перезагрузки.

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

sudo reboot

2. Установите нужные пакеты

sudo apt install -y wget lib32gcc-s1 lib32stdc++6
  • lib32gcc-s1 и lib32stdc++6 нужны программе SteamCMD, через которую скачивается сервер.

3. Создайте пользователя для сервера

Игровой сервер не должен работать от root. Создайте для него отдельного пользователя:

sudo useradd -m -s /bin/bash rust

Пароль этому пользователю не нужен: входить под ним по SSH никто не будет, а переключаться на него вы будете командой из шага 5.

4. Скачайте SteamCMD

sudo mkdir -p /opt/steamcmd
cd /opt/steamcmd
sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
sudo tar -xzf steamcmd_linux.tar.gz
sudo chown -R rust:rust /opt/steamcmd

Архив маленький (2,3 МБ), но с серверов Steam он может качаться около минуты — это нормально.

5. Установите сервер Rust

Переключитесь на пользователя rust и запустите SteamCMD:

sudo su - rust
cd /opt/steamcmd
./steamcmd.sh

При первом запуске SteamCMD скачивает собственное обновление (около 40 МБ). С серверов Steam оно может идти несколько минут — дождитесь приглашения Steam> и ничего не вводите раньше.

Затем введите по очереди три команды. Порядок важен: каталог установки задаётся до входа.

force_install_dir /home/rust/rust-server
login anonymous
app_update 258550 validate

Если вместо загрузки появилась строка «ERROR! Failed to install app … (Missing configuration)», просто введите команду app_update ещё раз: при первом запуске SteamCMD такое случается, со второго раза загрузка начинается.

Загрузка идёт несколько минут; на диске сервер занимает 5,4 ГБ. Дождитесь строки «Success! App '258550' fully installed.»:

Выйдите из SteamCMD:

quit

Проверьте, что файлы на месте:

ls /home/rust/rust-server

6. Создайте скрипты запуска и остановки

Скрипт запуска. Все настройки сервера Rust задаются ключами запуска:

nano ~/rust-server/start-server.sh
#!/bin/bash
cd /home/rust/rust-server
export LD_LIBRARY_PATH=/home/rust/rust-server/RustDedicated_Data/Plugins/x86_64:$LD_LIBRARY_PATH
exec ./RustDedicated -batchmode -nographics +server.port 28015 +server.queryport 28017 +rcon.port 28016 +rcon.password "Secret123" +rcon.web 1 +server.identity "myserver" +server.hostname "My Rust Server" +server.level "Procedural Map" +server.seed 12345 +server.worldsize 3000 +server.maxplayers 50 +server.saveinterval 300 -logfile /home/rust/rust-server/server.log

Строка, начинающаяся с exec, должна быть одной строкой. Замените значения на свои:

  • +server.hostname — название сервера в списке.
  • +rcon.password — пароль встроенной консоли сервера. Обязательно замените Secret123 на свой: с этим паролем сервером можно управлять.
  • +server.maxplayers — предел числа игроков.
  • +server.worldsize — размер карты, от 1000 до 6000; по умолчанию в игре 4500. Чем больше карта, тем больше нужно памяти и тем дольше первый запуск.
  • +server.seed — зерно карты: одно и то же число даёт одну и ту же карту.
  • +server.identity — имя каталога с миром и настройками внутри server/.
  • +server.saveinterval — как часто сервер сам сохраняет мир, в секундах.
  • +server.port, +server.queryport, +rcon.port — порты игры, запросов списка серверов и консоли.

Скрипт остановки. Если сервер Rust остановить обычным способом, он завершается сразу и мир не сохраняет: пропадает всё с момента последнего автосохранения. По команде quit из своей консоли он сначала сохраняет мир. Создайте скрипт, которым служба будет отдавать эту команду:

nano ~/rust-server/stop-server.py
#!/usr/bin/env python3
# Сохраняет мир Rust и останавливает сервер командой quit через его встроенную консоль (WebRCON).
import base64, json, os, re, socket, subprocess, time

start = open("/home/rust/rust-server/start-server.sh").read()
password = re.search(r'\+rcon\.password\s+"([^"]*)"', start).group(1)
port = int(re.search(r"\+rcon\.port\s+(\d+)", start).group(1))

try:
    s = socket.create_connection(("127.0.0.1", port), timeout=10)
    key = base64.b64encode(os.urandom(16)).decode()
    s.sendall((f"GET /{password} HTTP/1.1\r\nHost: 127.0.0.1:{port}\r\nUpgrade: websocket\r\n"
               f"Connection: Upgrade\r\nSec-WebSocket-Key: {key}\r\nSec-WebSocket-Version: 13\r\n\r\n").encode())
    s.recv(4096)
    payload = json.dumps({"Identifier": 1, "Message": "quit", "Name": "WebRcon"}).encode()
    mask = os.urandom(4)
    s.sendall(bytes([0x81, 0x80 | len(payload)]) + mask + bytes(b ^ mask[i % 4] for i, b in enumerate(payload)))
except OSError:
    raise SystemExit(0)   # консоль недоступна - службу остановит система

for _ in range(60):       # ждём, пока сервер сохранит мир и завершится
    if subprocess.run(["pgrep", "-u", "rust", "-x", "RustDedicated"], capture_output=True).returncode != 0:
        break
    time.sleep(1)

Скрипт сам берёт пароль и порт консоли из start-server.sh. Отступы в начале строк важны — копируйте его целиком.

Сделайте оба файла исполняемыми и закройте их от других пользователей (в них пароль), затем вернитесь к root:

chmod 750 ~/rust-server/start-server.sh ~/rust-server/stop-server.py
ls -l ~/rust-server/start-server.sh ~/rust-server/stop-server.py
exit

7. Настройте автозапуск

Чтобы сервер запускался вместе с системой и поднимался после сбоя, создайте для него службу:

sudo nano /etc/systemd/system/rust-server.service

Вставьте:

[Unit]
Description=Rust Dedicated Server
After=network.target

[Service]
Type=simple
User=rust
WorkingDirectory=/home/rust/rust-server
ExecStart=/home/rust/rust-server/start-server.sh
ExecStop=/usr/bin/python3 /home/rust/rust-server/stop-server.py
TimeoutStopSec=90
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

8. Запустите сервер и проверьте его

sudo systemctl daemon-reload
sudo systemctl enable rust-server
sudo systemctl start rust-server

Первый запуск долгий: сервер создаёт карту. Для карты размером 3000 это около 6 минут, для больших — дольше; следующие запуски занимают чуть больше минуты. Проверьте состояние службы — должно быть active (running):

sudo systemctl status rust-server --no-pager -n 0

Сервер готов принимать игроков, когда в его журнале появились строки «Server startup complete» и «SteamServer Connected». Вторая команда показывает занятые порты: 28015 — игра, 28017 — запросы списка серверов, 28016 — консоль.

sudo grep -E "Generating procedural map|Server startup complete|SteamServer Connected" /home/rust/rust-server/server.log | tail -n 3
sudo ss -lntu | grep -E ":2801[5-7] "

Управление службой:

sudo systemctl stop rust-server      # остановить (мир сохраняется)
sudo systemctl restart rust-server   # перезапустить
sudo journalctl -u rust-server -f    # смотреть журнал, выход — Ctrl+C

9. Откройте порты в файрволе

Внимание: сначала разрешите SSH и только потом включайте файрвол. Иначе связь с сервером оборвётся. Если SSH у вас на нестандартном порту, вместо первой команды выполните sudo ufw allow НОМЕР_ПОРТА/tcp.

sudo ufw allow OpenSSH
sudo ufw allow 28015/udp
sudo ufw allow 28017/udp
sudo ufw enable

Если появится вопрос «Command may disrupt existing ssh connections. Proceed with operation (y|n)?», ответьте y. Проверьте результат:

sudo ufw status

10. Зайдите на сервер

В игре нажмите F1 и введите в консоли client.connect IP_СЕРВЕРА:28015 либо найдите сервер по названию в списке. Пошагово со снимками — в статье Как зайти на сервер Rust.

Порт консоли не открывайте наружу

Встроенная консоль сервера (RCON) слушает порт 28016/tcp и защищена только паролем из start-server.sh. Через неё можно делать с сервером что угодно, поэтому в файрволе этот порт открывать не нужно: скрипт остановки обращается к нему с самого сервера. Команды из шага 9 его не открывают.

Обновление сервера

После выхода обновления игры остановите сервер, обновите файлы и запустите снова:

sudo systemctl stop rust-server
sudo -u rust /opt/steamcmd/steamcmd.sh +force_install_dir /home/rust/rust-server +login anonymous +app_update 258550 validate +quit
sudo systemctl start rust-server

Крупные обновления Rust выходят раз в месяц. После такого обновления старая карта серверу не подходит, и он создаёт мир заново. Ваши скрипты запуска и остановки при обновлении не затрагиваются.

Где лежат сохранения

Мир, данные игроков и настройки лежат в каталоге с именем из ключа +server.identity:

/home/rust/rust-server/server/myserver/
  • файлы .sav и .map — мир и карта;
  • файлы player.*.db — данные игроков;
  • cfg/users.cfg — администраторы и модераторы, cfg/bans.cfg — блокировки.

Журнал сервера: /home/rust/rust-server/server.log

При остановке службы сервер сохраняет мир — время изменения файла мира совпадает со временем остановки:

Если что-то пошло не так

Что видите Причина и решение
Сервер долго не появляется в списке после первого запуска Он ещё создаёт карту. Следите за журналом: sudo tail -f /home/rust/rust-server/server.log (выход — Ctrl+C) и ждите строки «Server startup complete».
Сервер завершается во время создания карты Не хватает памяти. Уменьшите +server.worldsize или возьмите VDS с большим объёмом памяти.
После перезапуска пропали последние постройки Сервер был остановлен без сохранения. Останавливайте его только командой sudo systemctl stop rust-server и проверьте, что скрипт остановки из шага 6 на месте.
Сервер работает, но его нет в списке игры Не открыт порт запросов 28017/udp. Проверьте командой sudo ufw status.
SteamCMD отвечает «ERROR! Failed to install app '258550' (Missing configuration)» Так иногда бывает при первом запуске SteamCMD. Введите команду app_update ещё раз — со второго раза загрузка начинается.
После установки нет каталога /home/rust/rust-server Команда force_install_dir была введена с ошибкой или после login, и сервер установился в /home/rust/Steam/steamapps/common/. Запустите SteamCMD заново и повторите три команды из шага 5 по порядку.
Служба в состоянии «failed» Посмотрите причину: sudo journalctl -u rust-server -n 50 --no-pager. Чаще всего это опечатка в пути или скрипт запуска не сделан исполняемым.
Сервер запущен, но зайти не удаётся Проверьте, что порты открыты (sudo ufw status) и что в игре указан верный адрес и порт.

Для размещения игровых серверов рекомендуем услуги ARK-HOSTER.RU: