Перейти к содержанию

Rust Server: Обзор развертывания

Предварительные требования и базовые условия

Для развертывания требуется операционная система на базе Linux, в частности Ubuntu, работающая на сервере с полными правами root. Для функционирования сервера необходимы следующие компоненты и сетевые конфигурации:

  • Операционная система: Ubuntu (совместимость проверена через пакетный менеджер apt).

  • Привилегии: Для установки системных пакетов, создания системных пользователей и настройки сервисов systemd требуется доступ root (sudo).

  • Необходимая системная библиотека: Библиотека libc6-i386 должна быть установлена для поддержки 32-битных слоев совместимости, требуемых игровым сервером.

  • Пользователь и группа: Создается и используется выделенный системный пользователь rust и соответствующая группа rust для всех операций сервера.

  • Сетевые порты: Следующие порты должны быть открыты и доступны для игрового подключения, запросов (query) и удаленного администрирования:

  • Порт игры: 28015

  • Порт RCON: 28016

  • Порт Query: 28017

Структура файлов и каталогов

Файлы сервера Rust, конфигурация и данные организованы внутри домашней директории пользователя rust. Основные локации:

  • Каталог сервера: /home/rust/rust

  • Содержит бинарный файл RustDedicated, файлы данных и скрипт запуска runds.sh.

  • Подкаталог RustDedicated_Data хранит игровые активы и плагины.

  • Каталог SteamCMD: /home/rust/steamcmd

  • Содержит клиент SteamCMD (steamcmd.sh), используемый для загрузки и проверки целостности файлов сервера.

  • Каталог секретных данных: /home/rust/.rust

  • Хранит конфиденциальные данные конфигурации, в частности пароль RCON.

  • Файл журнала (лог): rustserver.log, расположенный внутри каталога сервера (/home/rust/rust/rustserver.log).

Процесс установки приложения

Приложение устанавливается путем загрузки клиента SteamCMD, его распаковки и использования для загрузки и валидации Dedicated Server игры Rust (App ID 258550).

  1. Клиент steamcmd загружается с адреса https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz.

  2. Архив распаковывается в /home/rust/steamcmd.

  3. Файлы сервера устанавливаются в /home/rust/rust с помощью команды:

    steamcmd.sh +force_install_dir /home/rust/rust +login anonymous +app_update 258550 validate +quit
    

  4. В каталог сервера разворачивается пользовательский скрипт запуска с именем runds.sh для настройки аргументов запуска.

  5. Создается файл юнит-сервиса systemd по пути /etc/systemd/system/rust.service для управления жизненным циклом приложения.

Права доступа и безопасность

Сервер работает под непривилегированной учетной записью rust, что изолирует приложение от доступа root. Меры безопасности включают:

  • Изоляция пользователя: Все файлы и процессы сервера работают от имени пользователя rust в группе rust.

  • Безопасность RCON: Генерируется уникальный пароль RCON, который сохраняется в /home/rust/.rust/rcon_password с правами доступа 0600 (доступно только владельцу).

  • Связывание RCON (Binding): Интерфейс RCON привязан к 0.0.0.0 на порту 28016, что позволяет удаленное администрирование с любого IP-адреса при условии использования правильного пароля.

  • Права доступа к файлам:

  • Каталог сервера (/home/rust/rust) и каталог SteamCMD (/home/rust/steamcmd) имеют права 0755.

  • Каталог секретных данных (/home/rust/.rust) имеет права 0700.

  • Скрипт запуска (runds.sh) имеет права на выполнение (0755).

Настройка прав доступа

Владение и права доступа строго соблюдаются для всех развернутых компонентов:

  • Владение директориями: Все файлы внутри /home/rust/rust и /home/rust/steamcmd принадлежат rust:rust.

  • Системный сервис: Файл rust.service принадлежит root:root с правами 0644.

  • Файлы секретов: Файл пароля RCON ограничен доступом только для владельца, чтобы предотвратить несанкционированный доступ к учетным данным удаленного администрирования.

Расположение файлов конфигурации и данных

Конфигурация управляется через аргументы командной строки, определенные в скрипте запуска, и хранимые файлы для динамических секретов.

  • Скрипт запуска: /home/rust/rust/runds.sh

  • Определяет идентификацию сервера, порты, настройки карты и учетные данные RCON.

  • Пароль RCON: /home/rust/.rust/rcon_password

  • Содержит пароль RCON в открытом виде, используемый скриптом запуска.

  • Определение сервиса: /etc/systemd/system/rust.service

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

Запуск, остановка и обновление

Сервер Rust управляется как сервис systemd. Используйте следующие команды для управления сервисом:

  • Запустить сервис:

    sudo systemctl start rust
    

  • Остановить сервис:

    sudo systemctl stop rust
    

  • Перезапустить сервис:

    sudo systemctl restart rust
    

  • Проверить статус:

    sudo systemctl status rust
    

  • Включить автозапуск при загрузке:

    sudo systemctl enable rust
    

Сервис настроен на автоматический перезапуск в случае сбоя (Restart=always) с задержкой 10 секунд между попытками перезапуска.

Доступные порты для подключения

Сервер слушает следующие порты для различных типов трафика. Эти порты должны быть разрешены в конфигурации межсетевого экрана хоста.

Порт Протокол Назначение
28015 UDP/TCP Подключение к игровому серверу
28016 TCP RCON (Удаленная консоль)
28017 UDP Query сервера

Конфигурация сервера устанавливает максимальное количество игроков в 50 (maxplayers), а размер мира карты — в 4500 единиц. Идентификация сервера устанавливается как хост-имя машины, на которой работает сервер.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×