Установка игрового сервера Rust на Linux
Инструкция по установке выделенного сервера 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:
- VPS/VDS серверы — для небольших и средних серверов
- Выделенные серверы — для высоконагруженных игровых серверов