Создание собственного Rust сервера — это отличный способ играть с друзьями на своих условиях. В этой статье я покажу, как быстро развернуть dedicated server Rust, настроить автоматические перезагрузки, обновления и вайпы.
Что вы получите после прочтения
- Полностью рабочий Rust dedicated server на Ubuntu
- Скрипты для автоматического управления сервером
- Настройку ежедневных перезагрузок с уведомлениями
- Команды для быстрого обновления и вайпа
- Мониторинг и диагностику сервера
Время установки: 15-20 минут
Уровень сложности: начинающий-средний
Подготовка системы Ubuntu для Rust сервера
Перед установкой Rust server необходимо подготовить систему Ubuntu. Этот этап критически важен для стабильной работы.
Обновление системы
Сначала обновляем все пакеты до последних версий:
# Обновление списка пакетов и системы
sudo apt update && sudo apt full-upgrade -y
Установка необходимых компонентов
Rust dedicated server требует поддержки 32-битных библиотек и дополнительных инструментов:
# Добавляем поддержку 32-битной архитектуры
sudo dpkg --add-architecture i386
# Обновляем список пакетов после добавления архитектуры
sudo apt update
# Устанавливаем все необходимые компоненты для Rust сервера
sudo apt install -y steamcmd lib32gcc-s1 lib32stdc++6 screen curl wget htop jq net-tools cron
Что мы установили:
- steamcmd — клиент Steam для скачивания серверных файлов
- lib32gcc-s1, lib32stdc++6 — 32-битные библиотеки для совместимости
- screen — для запуска сервера в фоновом режиме
- curl, wget — для загрузки файлов
- htop — мониторинг ресурсов системы
- jq — обработка JSON данных
- net-tools — сетевые утилиты
- cron — планировщик задач
Автоматический скрипт установки Rust сервера
Создадим универсальный скрипт, который автоматически установит и настроит Rust server со всеми необходимыми компонентами.
Создание установочного скрипта
Создаем файл скрипта автоматической установки:
# Создаем файл скрипта установки
nano ~/install_rust_server.sh
Вставляем следующий код в файл:
#!/bin/bash
set -e
echo "=== УСТАНОВКА RUST СЕРВЕРА ==="
# Обновление системы Ubuntu
echo "Обновление системы..."
sudo apt update && sudo apt full-upgrade -y
# Добавление поддержки 32-битных приложений и установка зависимостей
echo "Установка зависимостей..."
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 lib32stdc++6 screen curl wget htop jq net-tools cron
# Создание директории для Rust сервера
echo "Создание директории сервера..."
mkdir -p ~/rustserver
cd ~/rustserver
# Настройка Steam SDK для корректной работы
echo "Настройка Steam SDK..."
mkdir -p ~/.steam/sdk64
STEAMCLIENT_PATH="$HOME/.steam/steamcmd/linux64/steamclient.so"
if [[ -f "$STEAMCLIENT_PATH" ]]; then
ln -sf "$STEAMCLIENT_PATH" ~/.steam/sdk64/steamclient.so
fi
# Скачивание файлов Rust dedicated server через Steam
echo "Скачивание Rust сервера..."
steamcmd +login anonymous +force_install_dir ~/rustserver +app_update 258550 validate +quit
echo "=== Создание скриптов управления сервером ==="
# Создание основного скрипта запуска сервера
cat > ~/rustserver/start.sh << 'EOF'
#!/usr/bin/env bash
set -Eeuo pipefail
# Определение базовых путей
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="${BASE_DIR}/logs"
mkdir -p "${LOG_DIR}"
# Создание файла логов с временной меткой
LOG_FILE="${LOG_DIR}/$(date '+%Y-%m-%d_%H-%M-%S').log"
ln -sf "$(basename "${LOG_FILE}")" "${LOG_DIR}/latest.log"
# Настройка Steam SDK окружения
SDK_DIR="$HOME/.steam/sdk64"
STEAMCLIENT_SRC="$HOME/.steam/steamcmd/linux64/steamclient.so"
if [[ ! -f "${SDK_DIR}/steamclient.so" ]]; then
mkdir -p "${SDK_DIR}"
ln -sf "${STEAMCLIENT_SRC}" "${SDK_DIR}/steamclient.so"
fi
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:${SDK_DIR}"
export SteamAppId=252490
# Получение внешнего IP адреса автоматически
PUBLIC_IP=$(curl -s ifconfig.me)
# Запуск Rust dedicated server с настройками
exec "${BASE_DIR}/RustDedicated" \
-batchmode \
-nographics \
-logFile "${LOG_FILE}" \
+server.ip 0.0.0.0 \
+server.port 28015 \
+server.queryport 28017 \
+app.ip 0.0.0.0 \
+app.port 28082 \
+app.publicip ${PUBLIC_IP} \
+rcon.ip 0.0.0.0 \
+rcon.port 28016 \
+rcon.password "ВАШ_RCON_ПАРОЛЬ" \
+rcon.web 1 \
+server.hostname "ВАШ_СЕРВЕР" \
+server.identity "main" \
+server.seed ВАШЕ_ЗЕРНО_КАРТЫ \
+server.level "Procedural Map" \
+server.worldsize 4000 \
+server.maxplayers 100 \
2>&1 | tee -a "${LOG_FILE}"
EOF
# Делаем скрипт исполняемым
chmod +x ~/rustserver/start.sh
# Создание скрипта быстрой перезагрузки
cat > ~/rustserver/restart_server.sh << 'EOF'
#!/bin/bash
echo "Перезагрузка Rust сервера..."
# Остановка сервера
sudo systemctl stop rustserver
# Пауза для корректного завершения
sleep 5
# Запуск сервера
sudo systemctl start rustserver
echo "Сервер перезагружен!"
# Показываем статус после перезагрузки
systemctl status rustserver
EOF
chmod +x ~/rustserver/restart_server.sh
# Создание скрипта обновления сервера
cat > ~/rustserver/update_server.sh << 'EOF'
#!/bin/bash
echo "=== ОБНОВЛЕНИЕ RUST СЕРВЕРА ==="
# Остановка сервера для безопасного обновления
echo "Остановка сервера..."
sudo systemctl stop rustserver
# Обновление через Steam с проверкой файлов
echo "Скачивание обновлений..."
cd ~/rustserver
steamcmd +login anonymous +force_install_dir ~/rustserver +app_update 258550 validate +quit
# Запуск обновленного сервера
echo "Запуск обновленного сервера..."
sudo systemctl start rustserver
echo "=== ОБНОВЛЕНИЕ ЗАВЕРШЕНО ==="
systemctl status rustserver
EOF
chmod +x ~/rustserver/update_server.sh
# Создание скрипта полного вайпа сервера
cat > ~/rustserver/wipe_server.sh << 'EOF'
#!/bin/bash
echo "=== ВАЙП СЕРВЕРА ==="
# Запрос подтверждения для безопасности
read -p "Вы уверены? Это удалит все данные сервера! (y/N): " confirm
if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
echo "Выполнение вайпа..."
# Остановка сервера
sudo systemctl stop rustserver
# Удаление всех данных сервера
rm -rf ~/rustserver/server/main/*
# Генерация нового зерна карты
NEW_SEED=$((RANDOM * RANDOM))
sed -i "s/+server.seed [0-9]*/+server.seed $NEW_SEED/" ~/rustserver/start.sh
# Запуск сервера с новой картой
sudo systemctl start rustserver
echo "=== ВАЙП ЗАВЕРШЕН ==="
echo "Новое зерно карты: $NEW_SEED"
else
echo "Вайп отменен"
fi
EOF
chmod +x ~/rustserver/wipe_server.sh
# Создание скрипта запланированной перезагрузки с уведомлениями
cat > ~/rustserver/scheduled_restart.sh << 'EOF'
#!/bin/bash
# Скрипт автоматической перезагрузки с предупреждениями в чате
# Настройки подключения к RCON
RCON_HOST="127.0.0.1"
RCON_PORT="28016"
RCON_PASS="ВАШ_RCON_ПАРОЛЬ"
# Функция отправки сообщений в игровой чат через RCON
send_rcon() {
local message="$1"
curl -X POST "http://${RCON_HOST}:${RCON_PORT}/console" \
-H "Content-Type: application/json" \
-d "{\"message\":\"say $message\", \"password\":\"$RCON_PASS\"}" 2>/dev/null
}
# Предупреждение за 10 минут до перезагрузки
send_rcon "🔄 ВНИМАНИЕ: Перезагрузка сервера через 10 минут!"
sleep 300 # Ждем 5 минут
send_rcon "🔄 Перезагрузка сервера через 5 минут!"
sleep 240 # Ждем 4 минуты
send_rcon "🔄 Перезагрузка сервера через 1 минуту!"
sleep 30 # Ждем 30 секунд
send_rcon "🔄 Перезагрузка сервера через 30 секунд!"
sleep 20 # Ждем 20 секунд
send_rcon "🔄 Перезагрузка сервера через 10 секунд!"
sleep 5
# Обратный отсчет
send_rcon "🔄 Перезагрузка сервера через 5 секунд!"
sleep 1
send_rcon "🔄 4..."
sleep 1
send_rcon "🔄 3..."
sleep 1
send_rcon "🔄 2..."
sleep 1
send_rcon "🔄 1..."
sleep 1
# Выполнение перезагрузки сервера
sudo systemctl restart rustserver
EOF
chmod +x ~/rustserver/scheduled_restart.sh
# Создание системного сервиса для автоматического запуска
echo "Создание системного сервиса..."
sudo tee /etc/systemd/system/rustserver.service > /dev/null << EOF
[Unit]
Description=Rust Dedicated Server
After=network.target
[Service]
Type=simple
User=$(whoami)
WorkingDirectory=/home/$(whoami)/rustserver
ExecStart=/home/$(whoami)/rustserver/start.sh
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# Настройка файрвола для открытия необходимых портов
echo "Настройка файрвола..."
sudo ufw allow 28015/udp # Основной игровой порт
sudo ufw allow 28016/tcp # RCON порт
sudo ufw allow 28017/udp # Query порт для браузера серверов
sudo ufw allow 28082/tcp # Rust+ приложение
# Включение и настройка автозапуска сервиса
echo "Настройка автозапуска..."
sudo systemctl daemon-reload
sudo systemctl enable rustserver
echo ""
echo "=== УСТАНОВКА ЗАВЕРШЕНА ==="
echo ""
echo "🎮 Управление сервером:"
echo " sudo systemctl start rustserver - Запуск сервера"
echo " sudo systemctl stop rustserver - Остановка сервера"
echo " sudo systemctl status rustserver - Статус сервера"
echo " ~/rustserver/restart_server.sh - Перезагрузка сервера"
echo " ~/rustserver/update_server.sh - Обновление сервера"
echo " ~/rustserver/wipe_server.sh - Вайп всех данных"
echo ""
echo "📊 Мониторинг:"
echo " tail -f ~/rustserver/logs/latest.log - Просмотр логов"
echo " htop - Использование ресурсов"
echo ""
echo "⏰ Настройка автоперезагрузки в 9:00:"
echo " crontab -e"
echo " Добавить строку: 50 8 * * * /home/$(whoami)/rustserver/scheduled_restart.sh"
echo ""
echo "📁 Все файлы находятся в ~/rustserver/"
echo ""
echo "⚠️ НЕ ЗАБУДЬТЕ:"
echo "1. Изменить пароль RCON в ~/rustserver/start.sh"
echo "2. Изменить название сервера"
echo "3. Установить свое зерно карты"
Запуск установки
# Делаем скрипт исполняемым
chmod +x ~/install_rust_server.sh
# Запускаем установку
./install_rust_server.sh
Настройка конфигурации Rust сервера
После установки необходимо настроить параметры вашего Rust сервера.
Редактирование основных настроек
Открываем файл конфигурации сервера:
# Редактируем основной скрипт запуска
nano ~/rustserver/start.sh
Найдите и измените следующие параметры:
# Замените эти строки на свои значения:
+rcon.password "ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ" # Пароль для удаленного управления
+server.hostname "НАЗВАНИЕ_ВАШЕГО_СЕРВЕРА" # Имя сервера в списке
+server.seed 123456789 # Зерно генерации карты (любое число)
+server.worldsize 4000 # Размер карты (2000, 3000, 4000)
+server.maxplayers 100 # Максимум игроков
Сохранение изменений
После редактирования сохраните файл:
- В nano: Ctrl + X, затем Y, затем Enter
Управление Rust сервером
Основные команды управления
# Запуск сервера
sudo systemctl start rustserver
# Остановка сервера
sudo systemctl stop rustserver
# Перезагрузка сервера
sudo systemctl restart rustserver
# Проверка статуса
sudo systemctl status rustserver
# Быстрая перезагрузка (через скрипт)
~/rustserver/restart_server.sh
Просмотр логов и мониторинг
# Просмотр логов в реальном времени
tail -f ~/rustserver/logs/latest.log
# Проверка использования ресурсов
htop
# Проверка открытых портов Rust сервера
sudo ss -tlnp | grep -E "(28015|28016|28017|28082)"
# Размер файлов логов
du -sh ~/rustserver/logs/
Автоматические обновления и вайпы
Обновление Rust сервера
Каждый месяц выходят обязательные обновления Rust. Для обновления используйте:
# Автоматическое обновление сервера
~/rustserver/update_server.sh
Что делает скрипт обновления:
- Останавливает сервер
- Скачивает новые файлы через Steam
- Проверяет целостность файлов
- Запускает обновленный сервер
Выполнение вайпа сервера
Вайп — полная очистка игрового мира. Обычно делается раз в месяц:
# Полный вайп с подтверждением
~/rustserver/wipe_server.sh
Скрипт вайпа выполняет:
- Удаление всех построек и данных игроков
- Генерацию новой карты с случайным зерном
- Перезапуск сервера
Настройка автоматической перезагрузки
Ежедневная перезагрузка в 9:00 утра
Автоматическая перезагрузка поддерживает стабильность сервера и очищает память.
Настройка планировщика задач
# Открываем редактор crontab
crontab -e
Добавляем строку для ежедневной перезагрузки:
# Перезагрузка каждый день в 8:50 (за 10 минут до 9:00 начнутся уведомления)
50 8 * * * /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/rustserver/scheduled_restart.sh
Замените ВАШ_ПОЛЬЗОВАТЕЛЬ на ваше имя пользователя Ubuntu.
Как работает автоматическая перезагрузка
- 8:50 — запускается скрипт уведомлений
- 8:50 — в чат отправляется "Перезагрузка через 10 минут"
- 8:55 — "Перезагрузка через 5 минут"
- 8:59 — "Перезагрузка через 1 минуту"
- 8:59:30 — "Перезагрузка через 30 секунд"
- 8:59:50 — обратный отсчет 10, 9, 8...
- 9:00 — сервер перезагружается
RCON управление сервером
RCON позволяет управлять сервером удаленно через команды.
Основные RCON команды
# Отправка сообщения в чат
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d '{"message":"say Добро пожаловать на сервер!", "password":"ВАШ_RCON_ПАРОЛЬ"}'
# Информация о сервере
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d '{"message":"status", "password":"ВАШ_RCON_ПАРОЛЬ"}'
# Список игроков онлайн
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d '{"message":"players", "password":"ВАШ_RCON_ПАРОЛЬ"}'
# Принудительное сохранение мира
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d '{"message":"save", "password":"ВАШ_RCON_ПАРОЛЬ"}'
Создание функции для упрощения RCON
Добавьте в файл ~/.bashrc для удобства:
# Открываем файл конфигурации bash
nano ~/.bashrc
Добавляем в конец файла:
# Функция для отправки RCON команд
rust_rcon() {
local cmd="$1"
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d "{\"message\":\"$cmd\", \"password\":\"ВАШ_RCON_ПАРОЛЬ\"}"
}
# Быстрые алиасы для управления сервером
alias rust-start="sudo systemctl start rustserver"
alias rust-stop="sudo systemctl stop rustserver"
alias rust-restart="sudo systemctl restart rustserver"
alias rust-status="sudo systemctl status rustserver"
alias rust-logs="tail -f ~/rustserver/logs/latest.log"
Применяем изменения:
source ~/.bashrc
Теперь можно использовать:
# Отправка сообщения упрощенным способом
rust_rcon "say Привет всем игрокам!"
# Быстрые команды управления
rust-start # Запуск
rust-stop # Остановка
rust-restart # Перезагрузка
rust-status # Статус
rust-logs # Просмотр логов
Диагностика и решение проблем
Проверка статуса сервера
Если сервер не запускается, выполните диагностику:
# Детальный статус сервера
sudo systemctl status rustserver -l
# Последние ошибки в системном журнале
journalctl -u rustserver -f
# Проверка процессов Rust
ps aux | grep RustDedicated
# Проверка открытых портов
sudo netstat -tlnp | grep -E "(28015|28016|28017|28082)"
Типичные проблемы и решения
Проблема: Сервер не виден в браузере серверов
Решение:
# Проверяем открытие портов в файрволе
sudo ufw status verbose
# Если порты закрыты, открываем их
sudo ufw allow 28015/udp
sudo ufw allow 28017/udp
Проблема: Не работает RCON
Решение:
# Проверяем доступность RCON порта
curl -X POST "http://127.0.0.1:28016/console" \
-H "Content-Type: application/json" \
-d '{"message":"status", "password":"ВАШ_ПАРОЛЬ"}'
# Если не отвечает, проверяем порт
sudo ss -tlnp | grep 28016
Проблема: Сервер использует много RAM
Решение:
# Просмотр использования памяти
free -h
htop
# Очистка логов (если они большие)
find ~/rustserver/logs/ -name "*.log" -mtime +7 -delete
# Перезагрузка сервера для очистки памяти
~/rustserver/restart_server.sh
Резервное копирование данных
Создание бэкапа сервера
# Создание полного бэкапа сервера
tar -czf ~/rust_backup_$(date +%Y%m%d_%H%M%S).tar.gz ~/rustserver/server/
# Проверка размера бэкапа
ls -lh ~/rust_backup_*.tar.gz
Восстановление из бэкапа
# Остановка сервера
sudo systemctl stop rustserver
# Восстановление данных (замените имя файла на актуальное)
tar -xzf ~/rust_backup_20240315_120000.tar.gz -C ~/
# Запуск сервера
sudo systemctl start rustserver
Автоматическое создание бэкапов
Добавьте в crontab автоматическое создание бэкапов:
crontab -e
Добавьте строку:
# Ежедневный бэкап в 3:00 ночи
0 3 * * * tar -czf ~/rust_backup_$(date +\%Y\%m\%d_\%H\%M\%S).tar.gz ~/rustserver/server/
Оптимизация производительности
Рекомендуемые системные требования
Минимальные требования для Rust сервера:
- CPU: 2+ ядра
- RAM: 12+ ГБ
- Диск: 20+ ГБ свободного места
- Сеть: стабильное соединение
Рекомендуемые требования:
- CPU: 4+ ядра
- RAM: 16+ ГБ
- Диск: SSD 50+ ГБ
- Сеть: 100+ Мбит/с
Настройки оптимизации
Очистка старых логов
# Создание скрипта очистки логов
nano ~/rustserver/cleanup_logs.sh
Вставляем код:
#!/bin/bash
# Удаление логов старше 7 дней
find ~/rustserver/logs/ -name "*.log" -mtime +7 -delete
echo "Старые логи удалены: $(date)"
# Делаем исполняемым
chmod +x ~/rustserver/cleanup_logs.sh
# Добавляем в crontab еженедельную очистку
crontab -e
Добавляем:
# Очистка логов каждое воскресенье в 2:00
0 2 * * 0 /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/rustserver/cleanup_logs.sh
Заключение
Теперь у вас есть полностью настроенный Rust dedicated server с автоматическим управлением. Основные возможности:
✅ Автоматическая установка одним скриптом
✅ Управление сервером через простые команды
✅ Автоперезагрузка с уведомлениями игроков
✅ Быстрое обновление после патчей Rust
✅ Простой вайп с генерацией новой карты
✅ RCON управление для администрирования
✅ Мониторинг и диагностика состояния сервера
✅ Резервное копирование важных данных
Быстрый чек-лист действий:
- Запустите скрипт установки — все настроится автоматически
- Измените пароли и название в файле ~/rustserver/start.sh
- Настройте автоперезагрузку через crontab
- Проверьте работу командой rust-status
- Создайте первый бэкап для безопасности
Ваш Rust сервер готов к игре! Теперь вы можете наслаждаться игрой с друзьями на собственном сервере с полным контролем над настройками и управлением.
Удачной игры на вашем новом Rust сервере! 🎮