Установка игрового сервера Rust на Linux: различия между версиями
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
Защита пробелов в коде от подстановки неразрывного пробела |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
Инструкция по установке выделенного сервера 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. Обновите систему == | |||
<pre>sudo apt update && sudo apt upgrade -y</pre> | |||
На свежей системе обновление идёт от 5 минут до получаса. По ходу могут появиться два места, где нужно ваше участие. | |||
'''Окно выбора раскладки клавиатуры.''' Обновление остановится и покажет окно «Configuring keyboard-configuration». Ничего менять не нужно: нажмите '''Enter''', в следующем окне снова '''Enter'''. | |||
[[Файл:Ubuntu-apt-keyboard-dialog.png|800px]] | |||
== 5. | '''Сообщение о новом ядре.''' Если в конце вы видите «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> | ||
== | Архив маленький (2,3 МБ), но с серверов Steam он может качаться около минуты — это нормально. | ||
== 5. Установите сервер Rust == | |||
Переключитесь на пользователя <code>rust</code> и запустите SteamCMD: | |||
< | |||
<pre>sudo su - rust | |||
<pre>cd /opt/steamcmd | cd /opt/steamcmd | ||
./steamcmd.sh</pre> | ./steamcmd.sh</pre> | ||
При первом запуске 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> | ||
[[Файл:Rust-linux-steamcmd-login.png|800px]] | |||
Если вместо загрузки появилась строка «ERROR! Failed to install app … (Missing configuration)», просто введите команду <code>app_update</code> ещё раз: при первом запуске SteamCMD такое случается, со второго раза загрузка начинается. | |||
Загрузка идёт несколько минут; на диске сервер занимает 5,4 ГБ. Дождитесь строки «Success! App '258550' fully installed.»: | |||
<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> | |||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
./RustDedicated -batchmode -nographics | 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) # консоль недоступна - службу остановит система | |||
for _ in range(60): # ждём, пока сервер сохранит мир и завершится | |||
if subprocess.run(["pgrep", "-u", "rust", "-x", "RustDedicated"], capture_output=True).returncode != 0: | |||
break | |||
time.sleep(1)</pre> | |||
== | Скрипт сам берёт пароль и порт консоли из <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> | ||
== | == 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> | |||
При остановке службы сервер сохраняет мир — время изменения файла мира совпадает со временем остановки: | |||
[[Файл:Rust-linux-stop-save.png|800px]] | |||
== Если что-то пошло не так == | |||
{| 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 ARK-HOSTER.RU]:''' | |||
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' — для небольших и средних серверов | |||
* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' — для высоконагруженных игровых серверов | |||
Текущая версия от 00:03, 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:
- VPS/VDS серверы — для небольших и средних серверов
- Выделенные серверы — для высоконагруженных игровых серверов