Skip to main content

Как создать свой сервер Rust

Это руководство объясняет, как установить и настроить выделенный сервер Rust на вашем VPS или выделенном Linux-сервере, с возможностью добавления плагинов с помощью Oxide (uMod).

Заказать сервер​

Для размещения вашего сервера Rust HostMyServers предлагает несколько вариантов, подходящих для игр. Rust — очень требовательная игра: отдавайте предпочтение быстрому процессору и большому объёму RAM (минимум 8 ГБ, больше для публичного сервера).

Предварительные требования​

Ресурсы

Указанные ниже ресурсы соответствуют потребностям сервера и не учитывают ресурсы, уже используемые операционной системой, установленным ПО или другими службами на машине. Рассчитывайте на 200 Мбит/с на 100 игроков при tickrate 30 (оценка сообщества). Требуемая конфигурация рассчитана на vanilla-сервер (без расширений и плагинов).

  • SSH-доступ как root или пользователь с правами sudo
  • 64-разрядная система Linux (рекомендуется Debian 12/13 или Ubuntu 22.04/24.04)
  • Активный брандмауэр: nftables (рекомендуется), iptables или ufw (используйте только один инструмент брандмауэра одновременно)
  • Минимум 8 ГБ RAM (рекомендуется 32 ГБ)
  • Около 20 ГБ свободного места на диске (рекомендуется SSD NVMe)
  • Порты 28015 UDP, 28017 UDP и 28082 TCP доступны, а порт 28016 TCP (RCON) доступен только с вашего фиксированного IP-адреса

Требуемая конфигурация​

КомпонентМинимумРекомендуется
RAM8 ГБ32 ГБ и более
CPU2 ядра4 ядра или больше, высокая частота
Хранилище20 ГБ SSD40 ГБ SSD NVMe
Сеть300 Мбит/с1 Гбит/с
Производительность

Движок Rust зависит в основном от производительности одного ядра: процессор с высокой частотой важнее большого количества ядер.

Обновление системы​

sudo apt update && sudo apt upgrade -y

Установка зависимостей​

Установите необходимые пакеты:

sudo apt install -y wget tar unzip screen lib32gcc-s1

Создание выделенного пользователя​

По соображениям безопасности создайте выделенного пользователя:

sudo adduser --disabled-password --gecos "" rust

Используемые порты​

ПортПротоколНазначение
28015UDPИгра
28017UDPЗапросы (список серверов)
28016TCPRCON (удалённое администрирование), следует ограничить вашими IP-адресами
28082TCPRust+ (мобильное приложение)

Настройка брандмауэра​

Откройте необходимые порты. Порт RCON (28016 по TCP) должен быть ограничен вашим фиксированным IP-адресом: замените ВАШ_IP.

С UFW​

sudo ufw allow 28015/udp
sudo ufw allow 28017/udp
sudo ufw allow from ВАШ_IP to any port 28016 proto tcp
sudo ufw allow 28082/tcp
sudo ufw reload

С iptables​

sudo iptables -A INPUT -p udp --dport 28015 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 28017 -j ACCEPT
sudo iptables -A INPUT -p tcp -s ВАШ_IP --dport 28016 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 28082 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

Сохранение правил после перезагрузки требует пакета iptables-persistent.

С nftables​

Эти команды используют таблицу inet filter и цепочку input, присутствующие по умолчанию в /etc/nftables.conf в Debian.

sudo nft add rule inet filter input udp dport 28015 accept
sudo nft add rule inet filter input udp dport 28017 accept
sudo nft add rule inet filter input ip saddr ВАШ_IP tcp dport 28016 accept
sudo nft add rule inet filter input tcp dport 28082 accept
(echo "flush ruleset"; sudo nft list ruleset) | sudo tee /etc/nftables.conf
Безопасность RCON

Порт RCON (28016) позволяет администрировать сервер: никогда не открывайте его для всех. Если у вас нет фиксированного IP-адреса, не открывайте этот порт и используйте SSH-туннель.

Установка SteamCMD​

Войдите как пользователь rust:

sudo -u rust bash
cd ~

Создайте директории и загрузите SteamCMD:

mkdir -p ~/steamcmd ~/rust-server
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz

Загрузка сервера Rust​

Запустите установку сервера (идентификатор приложения 258550):

./steamcmd.sh +force_install_dir /home/rust/rust-server +login anonymous +app_update 258550 validate +quit
Совет

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

По завершении отобразится сообщение Success! App '258550' fully installed.

Скрипт запуска​

Скрипт запуска зависит от типа карты. Выберите одну из двух версий ниже.

Сгенерированная карта (по умолчанию)​

Создайте скрипт запуска:

nano ~/rust-server/start.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 \
+server.ip 0.0.0.0 \
+server.port 28015 \
+server.queryport 28017 \
+server.identity "server1" \
+server.level "Procedural Map" \
+server.seed 12345 \
+server.worldsize 3500 \
+server.maxplayers 100 \
+server.hostname "Мой Rust Сервер" \
+server.description "Добро пожаловать на мой сервер Rust" \
+server.saveinterval 300 \
+rcon.port 28016 \
+rcon.password "ChangeMe" \
+rcon.web 1 \
+app.port 28082

Пользовательская карта​

Чтобы использовать пользовательскую карту, размещённую в интернете, замените параметры генерации карты на +server.levelurl:

nano ~/rust-server/start.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 \
+server.ip 0.0.0.0 \
+server.port 28015 \
+server.queryport 28017 \
+server.identity "server1" \
+server.levelurl "https://ваш_домен.ru/моя_карта.map" \
+server.maxplayers 100 \
+server.hostname "Мой Rust Сервер" \
+server.description "Добро пожаловать на мой сервер Rust" \
+server.saveinterval 300 \
+rcon.port 28016 \
+rcon.password "ChangeMe" \
+rcon.web 1 \
+app.port 28082

Сделать скрипт исполняемым​

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

chmod +x ~/rust-server/start.sh
Безопасность

Выберите длинный и уникальный пароль rcon.password. Любой, кто его знает, может администрировать ваш сервер.

Основные параметры​

ПараметрОписание
server.identityИмя папки сохранений сервера (внутри server/)
server.levelТип карты (Procedural Map для сгенерированной карты)
server.seedSeed генерации карты
server.worldsizeРазмер карты (от 1000 до 6000)
server.levelurlАдрес загрузки пользовательской карты (если задан, server.worldsize и server.seed необходимо удалить)
server.maxplayersМаксимальное количество игроков
server.hostnameПубличное имя сервера
server.descriptionОписание, отображаемое в списке серверов
server.saveintervalИнтервал автоматического сохранения (секунды)
rcon.portПорт RCON
rcon.passwordПароль RCON
rcon.web1 = RCON WebSocket (используется инструментами администрирования)
app.portПорт Rust+
Первый запуск

При первом запуске генерация карты занимает несколько минут. Сервер готов, когда в логах появляется Server startup complete.

Первый запуск​

~/rust-server/start.sh

Чтобы остановить сервер, используйте Ctrl+C или команду quit через RCON.

Установка Oxide (uMod)​

Oxide позволяет добавлять плагины на ваш сервер. Остановите сервер, затем:

cd ~/rust-server
wget https://github.com/OxideMod/Oxide.Rust/releases/latest/download/Oxide.Rust-linux.zip
unzip -o Oxide.Rust-linux.zip

При следующем запуске будет создана папка oxide/. Плагины помещаются в oxide/plugins/.

Обновления

Каждое обновление Rust перезаписывает файлы Oxide. После каждого обновления сервера переустанавливайте Oxide командой unzip -o, приведённой выше.

Настройка размеров сервера​

Рекомендуемая память​

Размер сервераИгрокиРазмер картыРекомендуемый RAM
Маленький1-502500-30008 ГБ
Средний50-100350012-16 ГБ
Большой100-2004000 и более16-32 ГБ

Эти значения ориентировочные: реальное потребление растёт с увеличением количества плагинов и продолжительности вайпа.

Структура файлов​

ПутьОписание
RustDedicatedИсполняемый файл сервера
server/server1/Данные сервера (карта, сохранения, конфигурация)
server/server1/cfg/server.cfgКонфигурация сервера
oxide/plugins/Плагины Oxide
oxide/config/Конфигурация плагинов
oxide/data/Данные плагинов
oxide/logs/Журналы Oxide

Добавление пользовательских эмодзи​

Создайте папку serveremoji в папке сервера (имя server1 соответствует server.identity):

mkdir -p /home/rust/rust-server/server/server1/serveremoji

Затем поместите в неё ваши изображения.

Требования к изображениям​

  • Изображение не должно превышать 256x256 пикселей.
  • Только формат .jpg или .png (PNG 8 или 16 бит не работают).
  • Размер файла изображения должен быть меньше 250 КБ.
  • Имя файла становится названием эмодзи: poop.png используется как :poop:.

Эмодзи можно обновить следующей командой, выполняемой через RCON:

server.resetserveremoji

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

Содержимое

Facepunch может удалить из списка серверов те, которые используют оскорбительные или неуместные эмодзи.

Настройка как сервис systemd​

Создание файла сервиса​

Выйдите из сессии пользователя rust (exit), чтобы вернуться к своей учётной записи администратора, затем создайте файл сервиса:

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

Содержимое файла:

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

[Service]
Type=simple
User=rust
Group=rust
WorkingDirectory=/home/rust/rust-server
ExecStart=/home/rust/rust-server/start.sh
Restart=on-failure
RestartSec=20
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Активация и запуск сервиса​

sudo systemctl daemon-reload
sudo systemctl enable rust.service
sudo systemctl start rust.service

Команды управления​

# Проверить статус
sudo systemctl status rust.service

# Остановить сервер
sudo systemctl stop rust.service

# Перезапустить сервер
sudo systemctl restart rust.service

# Просмотр логов
sudo journalctl -u rust.service -f
Совет

Перед остановкой или перезапуском сервера отправьте команду server.save через RCON, чтобы убедиться, что прогресс игроков сохранён.

Запуск с screen (альтернатива)​

Только один способ запуска

Если сервис systemd запущен, сначала остановите его (sudo systemctl stop rust.service): два сервера не могут использовать одни и те же порты.

sudo -u rust bash
screen -S rust
~/rust-server/start.sh

Для отсоединения: Ctrl+A затем D

Для возврата: screen -r rust

Запуск в фоновом режиме с журналом​

sudo -u rust bash
cd ~/rust-server
screen -AdmSL rust ./start.sh
ОпцияОписание
-AПодгоняет окно под размер терминала
-d -mЗапускает сессию отсоединённой, в фоновом режиме
-S rustИмя сессии
-LЗаписывает вывод сервера в файл журнала

Файл screenlog.0 создаётся в папке, из которой запущена команда (~/rust-server), и содержит весь серверный вывод. Чтобы следить за ним в реальном времени:

tail -f ~/rust-server/screenlog.0

В случае ошибки при запуске это первый файл, который нужно проверить. Чтобы вернуться к консоли сервера: screen -r rust

Совет

Файл screenlog.0 увеличивается при каждом запуске. Не забывайте периодически очищать или удалять его.

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

Остановка сервера​

sudo systemctl stop rust.service

Загрузка новой версии​

sudo -u rust bash
cd ~/steamcmd
./steamcmd.sh +force_install_dir /home/rust/rust-server +login anonymous +app_update 258550 validate +quit

Обновление / переустановка Oxide​

Если вы используете Oxide, переустановите его (по-прежнему от имени пользователя rust), затем завершите сессию:

cd ~/rust-server
wget -O Oxide.Rust-linux.zip https://github.com/OxideMod/Oxide.Rust/releases/latest/download/Oxide.Rust-linux.zip
unzip -o Oxide.Rust-linux.zip
exit

Без Oxide просто введите exit, чтобы выйти из сессии пользователя rust.

Перезапуск сервера​

sudo systemctl start rust.service

Вайп сервера​

Вайп сбрасывает карту до нуля. Остановите сервер, затем удалите файлы карты от имени пользователя rust:

sudo systemctl stop rust.service
sudo -u rust bash
cd ~/rust-server/server/server1
rm -f *.*.map *.*.sav*

Для полного вайпа, включая чертежи игроков, удалите также:

rm -f clans.*.db
rm -f player.blueprints*.db
rm -f player.deaths*.db
rm -f player.identities*.db
rm -f player.states*.db
rm -f player.tokens*
rm -f relationship*
rm -f sv.files*

Затем выйдите из сессии пользователя rust:

exit
ФайлСодержимоеРезультат удаления
clans.*.dbКланы (участники, роли)Кланы исчезают
player.blueprints*.dbЧертежи, изученные игрокамиСброс чертежей
player.deaths*.dbИстория смертейИстория стёрта
player.identities*.dbЛичность игрока (имя, внешность персонажа)Игроки начинают с новым персонажем
player.states*.dbПостоянное состояние игроковПрогресс сброшен
player.tokens*Данные каждого игрока (маркеры на карте, таймеры)Данные сброшены
relationship*Отношения между игрокамиОтношения стёрты
sv.files*Файлы, хранимые сервером (изображения на табличках, рисунки)Изображения на табличках и рисунки удалены

Затем измените +server.seed в start.sh (или адрес +server.levelurl для пользовательской карты), чтобы сгенерировать новую карту, после чего перезапустите сервер.

Принудительный вайп

Facepunch принудительно проводит вайп карты в первый четверг каждого месяца вместе с обновлением игры.

Команды консоли​

Эти команды используются через RCON (инструмент администрирования или игровая консоль).

КомандаОписание
statusПоказывает подключённых игроков
server.saveСохранить мир
say <сообщение>Отправить сообщение всем игрокам
kick <игрок>Выгнать игрока
ban <игрок>Забанить игрока
unban <steamid>Разбанить игрока
ownerid <steamid> "имя" "причина"Выдать права владельца
moderatorid <steamid> "имя" "причина"Выдать права модератора
server.writecfgСохранить конфигурацию и права
oxide.pluginsПоказать список загруженных плагинов
oxide.reload <плагин>Перезагрузить плагин
quitОстановить сервер

Автоматическое резервное копирование​

Скрипт резервного копирования​

sudo nano /home/rust/backup.sh
#!/bin/bash
BACKUP_DIR="/home/rust/backups"
SERVER_DIR="/home/rust/rust-server"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p $BACKUP_DIR

# Резервная копия данных сервера и Oxide
# (удалите папки oxide/..., если вы не используете Oxide)
tar -czf $BACKUP_DIR/rust_$DATE.tar.gz -C $SERVER_DIR server/server1 oxide/data oxide/config oxide/plugins

# Удаление резервных копий старше 7 дней
find $BACKUP_DIR -name "rust_*.tar.gz" -mtime +7 -delete

echo "Резервное копирование завершено: rust_$DATE.tar.gz"
sudo chown rust:rust /home/rust/backup.sh
sudo chmod +x /home/rust/backup.sh

Планирование резервного копирования​

sudo crontab -u rust -e

Добавьте:

# Резервное копирование каждые 6 часов
0 */6 * * * /home/rust/backup.sh

Подключение к серверу​

Игроки могут подключиться следующим образом:

  1. Запустить Rust
  2. Открыть консоль клавишей F1
  3. Ввести: client.connect IP_СЕРВЕРА:28015

Вы также можете добавить сервер в избранное Steam (меню «Вид», «Серверы», вкладка «Избранное»).

При возникновении проблем​

Сервер не запускается​

  • Проверьте логи: sudo journalctl -u rust.service -n 100
  • Проверьте, что скрипт исполняемый: ls -l ~/rust-server/start.sh
  • Проверьте доступное место на диске: df -h
  • Проверьте доступную память: free -h

Ошибка steamclient.so​

Если в логах указана ошибка, связанная с steamclient.so, войдите как пользователь rust, затем создайте ссылку на 64-разрядный файл SteamCMD:

sudo -u rust bash
mkdir -p ~/.steam/sdk64
ln -sf ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
exit

Игроки не могут подключиться​

  • Проверьте, что порт 28015 открыт по UDP:

    sudo ufw status
    sudo iptables -L INPUT -n --line-numbers | grep 28015
    sudo nft list ruleset | grep 28015
  • Проверьте, что сервер слушает: ss -ulnp | grep 28015

  • Дождитесь окончания запуска (Server startup complete в логах)

Сервер не появляется в списке​

  • Проверьте, что порт 28017 UDP открыт
  • Подождите несколько минут после запуска
  • Проверьте, что у сервера есть доступ в интернет

Oxide не загружает плагины​

  • Переустанавливайте Oxide после каждого обновления Rust
  • Проверьте версию Oxide командой oxide.version
  • Просмотрите журналы в oxide/logs/

Проблемы с производительностью​

  • Уменьшите server.worldsize и server.maxplayers
  • Отключите наиболее ресурсоёмкие плагины
  • Увеличьте объём RAM вашего экземпляра
  • Запланируйте один-два перезапуска в сутки
  • В крайнем случае перейдите на более высокий тариф

FAQ​

Какие порты нужно открыть?​

Помимо портов сервера (см. таблицу «Используемые порты»), Steam требуются следующие порты. Они позволяют серверу получать ответы от серверов Steam, когда ваш брандмауэр по умолчанию блокирует входящий трафик:

UFW:

sudo ufw allow proto udp from any port 27000:27030 to any port 1025:65535
sudo ufw allow proto udp from any port 4380 to any port 1025:65535
sudo ufw reload

iptables:

sudo iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65535 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65535 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

nftables:

sudo nft add rule inet filter input udp sport 27000-27030 udp dport 1025-65535 accept
sudo nft add rule inet filter input udp sport 4380 udp dport 1025-65535 accept
(echo "flush ruleset"; sudo nft list ruleset) | sudo tee /etc/nftables.conf

При запуске ./steamcmd.sh я получаю «Отказано в доступе»​

Примените chmod:

chmod +x /home/rust/steamcmd/linux32/steamcmd && chmod +x /home/rust/steamcmd/steamcmd.sh

Я получаю сообщение «WARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'»​

Это не реальная проблема: могут некорректно отображаться только некоторые международные символы. Чтобы это исправить:

sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

Если команда locale-gen не найдена, сначала установите пакет locales командой sudo apt install -y locales.