<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация

Как создать свой сервер в Rust: пошаговая инструкция

Степан Касаткин
Степан Касаткин
Технический писатель
30 апреля 2025 г.
106
38 минут чтения
Средний рейтинг статьи: 5

Свободное время хочется проводить с интересом, и видеоигры остаются одним из самых доступных способов. Одни проекты помогают отвлечься, другие держат в напряжении. В Rust от Facepunch Studios вопрос выживания — это не про голод и холод: здесь всё решают другие игроки, ведь одиночного режима нет — только серверы. Выбранный сервер Раст становится ареной для хаоса: каждая встреча — союз или смерть, а всё, что вы собрали и построили, можно потерять за секунды.

Со временем у многих появляется желание взять всё под контроль: изменить карту, отключить PvP или вовсе играть одному. В статье мы расскажем, как создать свой сервер в Раст и что для этого нужно. 

Image15

Подготовка к созданию сервера в Rust

Хороший рейд начинается с подготовки: давайте тоже сначала определим все необходимое.

Шаг 1. Выбор типа сервера

Подумайте, для чего или кого вы создаете сервер. От этого зависит тип:

  • Локальный — для игры с коллегами в офисе, в клубе с друзьями, дома с семьей, одиночного режима, минимальная задержка и полный контроль;

  • Публичный  — работает через интернет и доступен всем, требует проброса портов или аренды облачного сервера (назовем облаком). 

На практике для лучшей доступности и производительности рекомендуется запускать публичный игровой сервер с помощью облака. При этом можно настроить сервер даже на персональном компьютере (ПК) в локальной сети, а затем открыть к нему доступ из интернета (однако можно столкнуться с ограничениями со стороны провайдера).

Шаг 2. Выбор платформы

Если вы играете на Windows или Linux, сервер можно запустить на том же ПК. При этом рекомендуется выбирать отдельную машину — это снизит нагрузку и возможные лаги. 

  • Windows — просто, удобно для локальных запусков;
  • Linux — стабильнее, особенно на удаленном хостинге;
  • VPS или выделенный сервер c Linux — лучший выбор для своего публичного Rust-сервера.

В статье мы рассмотрим два сценария настройки:

  • для Windows — на локальном ПК;
  • для Linux — на облачном сервере Timeweb Cloud. Вы можете следовать нашей инструкции, даже если планируете запускать на своем ПК или домашнем сервере с Linux — шаги будут идентичны. 
cloud

Шаг 3. Подбор конфигурации

Выбирать ее нужно, отталкиваясь от размера карты, количества игроков и установленных плагинов. Чем больше — тем выше потребление. На зарубежных хостинг-платформах встречаются калькуляторы, которые выдают примерную конфигурацию на основе пожеланий. 

Для сервера на 20 игроков с картой размером 2000 единиц (квадрат 2000x2000) на практике встречается такая конфигурация:

  • от 8 ГБ свободной оперативной памяти;
  • от 15 ГБ на диске, предпочтительно SSD или NVMe — быстрый диск критически важен для стабильной работы сервера;
  • быстрый многоядерный процессор.

Важно: здесь требования отличаются от тех, что рекомендует разработчик. Если вы планируете расширять количество игроков или карту, ориентируйтесь на официальные требования:

  • от 12 ГБ оперативной памяти (карты размером 6 000 ед. будут потреблять больше);
  • от 15 ГБ свободного места на диске, предпочтение SSD/NVMe. 

Шаг 4 (опционально). Создание сервера в Timeweb Cloud

Сделать сервер публичным можно даже с обычного ПК, но вы можете столкнуться с нехваткой ресурсов или сетевыми проблемами. Простой способ их избежать — воспользоваться облаком. 

Поэтому в статье мы будем демонстрировать установку на облачном сервере с операционной системой Linux. Если вы настраиваете локальный Раст на ПК, пропустите этот шаг.

Для создания облачного сервера:

  1. Войдите или зарегистрируйтесь в Timeweb Cloud.

  2. В меню нажмите «Облачные серверы» → «Добавить» и соберите для себя подходящую конфигурацию. С расчетом на ~20 игроков, ~10 плагинов, карту размером ~2000 ед. будет минимально достаточно Cloud MSK 80 стоимостью 2,05 руб./час или 1 500 руб./мес. Из опций необходим Публичный IP за 150 руб./мес. 

Image3

  1. Когда конфигурация будет выбрана, нажмите «Заказать». Может быть предложено заполнение платежных данных и пополнение баланса для дальнейшей оплаты услуги. Оплата почасовая. 

  2. После оформления заказа немного подождите — серверу нужно время на создание. Когда все установится, вы увидите это на экране. Также придет уведомление на почту или в Telegram — в зависимости от ваших настроек в разделе «Профиль» → «Настройки аккаунта» → «Уведомления». 

Можно переходить к установке. В ее процессе мы будем подключаться к серверу напрямую. Для этого в панели управления вам доступна «Консоль» — место, откуда можно отправлять команды, нужно лишь ввести логин root и root-пароль (указан во вкладке «Дашборд»). 

Для универсальности мы воспользуемся протоколом SSH вместо Консоли, поэтому откройте удобный для вас терминал. В инструкции используются предустановленные Terminal на MacOS, PowerShell на Windows.

В дальнейшем вам необходимо будет знать IP-адрес сервера и пароль от root-записи. Они указаны на Дашборде:

Image36

  • IPv4: публичный адрес сервера, другие игроки будут использовать его для подключения;
  • Подключение по SSH: будем отправлять эту строку в терминал, чтобы установить соединение с сервером для установки и управления в будущем; 
  • Root-пароль: пароль от суперпользователя — учетной записи, которая имеет все права на управление. 

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

Далее выполните действия в зависимости от операционной системы (ОС), которую используете.

Windows

Важно: в процессе установки и запуска могут потребоваться права администратора.   

В инструкции действия выполняются на том же ПК, откуда запускается игра: 

  • ОС: Windows 11
  • CPU: 6x4.2 ГГЦ
  • RAM: 16 ГБ
  • HDD, 100 ГБ

В таком случае ресурсов будет достаточно, чтобы запустить свой локальный сервер Раст, но впритык.

1. Загрузка SteamCMD

SteamCMD (Steam Console Client) — это официальная утилита Valve, с которой можно просто устанавливать и обновлять игровые сервера. 

  1. Создайте на вашем компьютере папку, где будут храниться файлы сервера. 

Image13

  1. Перейдите на страницу поддержки игры. Там пролистайте до пункта «Can I host a server?» → нажмите «quick start zip here».

Image25

  1. В загруженном архиве находится каталог Server. Распакуйте его содержимое в папку, которую создавали на первом шаге. 

Image9

Сам архив — готовый набор для старта: 

update_script.txt

Набор действий для SteamCMD — он выполняет скачивание и обновление Rust Dedicated Server с appID = 258550. Сверить информацию и ID можно на SteamDB. Там же вы узнаете доступные для установки branches (сборки) — релиз (public/release), тестовая (staging) и другие. 

Скачанные файлы появятся в подпапке ./rustds.

update.bat

Запускает SteamCMD с параметрами из update_script.txt

Run_DS.bat

Сначала повторяет логику update.bat, затем запускает Rust Dedicated Server. В нем мы далее будем указывать параметры для запуска. 

steam

Папка, содержащая SteamCMD. 

  1. Двойным кликом запустите файл update.bat и подождите завершения всех действий. 

По завершении командная строка закроется, а в папке вы увидите новую директорию: rustds. Это все необходимые файлы вашего сервера.

Image26

2. Параметры запуска

Прежде чем запустить сервер впервые, мы проверим и поменяем под себя параметры запуска. 

Откройте Run_DS.bat с помощью любого удобного редактора текста. Мы воспользуемся базовым приложением Блокнот: на Windows 11 кликните правой кнопкой мыши по файлу → выберите «Изменить в Блокноте». 

На более ранних версиях Windows нажмите правой кнопкой мыши → «Изменить» либо «Открыть с помощью…» → указать путь для приложения.

Первая строка отключает отображение всех основных команд в консоль, что делает вывод чище и понятнее, а вторая является точкой для бесконечного цикла (см. далее). 

echo off
:start

Скрипт входит в папку steam, в ней дважды запускает SteamCMD с параметром, который побуждает его использовать скрипт обновления, а после возвращается в родительский каталог. 

cd steam
steamcmd.exe +runscript ../update_script.txt
steamcmd.exe +runscript ../update_script.txt
cd ..

Нужно убрать одну из строк steamcmd.exe … — дважды повторять одно действие нет необходимости, это делает запуск медленнее. 

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

cd rustds

И запускает его с несколькими параметрами. Из них будет лишним -autoupdate, он официально больше не поддерживается. 

RustDedicated.exe -batchmode +server.hostname "My Server Name" +server.port 28015 +server.identity "my_server" +server.seed 1234567 -logFile "output.txt" -autoupdate

Если сервер отключится, скрипт вернется в основную директорию и повторит весь процесс заново, вернувшись к точке start. В этом и есть суть бесконечного цикла — запустить Rust Dedicated в случае неожиданной остановки процесса. 

cd ../
goto start

Мы еще рассмотрим подробно каждый параметр для запуска, а пока заменим стандартный файл на нашу заготовку и сохраним:

echo off
:start

cd steam
steamcmd.exe +runscript ../update_script.txt
cd ..

cd rustds
RustDedicated.exe -batchmode ^
     +server.hostname "Timeweb Cloud" ^
     +server.port 28015 ^
     +server.identity "my_first_server" ^
     +server.seed 1234567 ^
     +server.maxplayers 5 ^
     +server.worldsize 1000 ^

cd ../
goto start

Так мы проверим обновления и запустим Dedicated Server без графического интерфейса с настройками:

  • hostname — публичное имя: Timeweb Cloud;
  • port — порт, по которому будет подключение: 28015;
  • identity — внутреннее имя, сервер будет создавать и хранить свои данные и игроков в папке my_first_server;
  • seed — ключ для процедурной генерации (каким правилам будет следовать генератор): 1234567;
  • maxplayer — максимально допустимое число игроков: 5;
  • worldsize — размер карты: 1000 ед.

Символ ^ здесь не выполняет отдельных действий, но дает возможность описать параметры запуска в несколько строк, а не в одну — читать становится удобнее. 

Linux

Важно: на этапе установки вам нужен доступ к пользователю root либо к пользователю с sudo-доступом.

Описанные действия выполняются на виртуальном сервере Timeweb Cloud с конфигурацией Cloud MSK 80, который мы создали выше:

  • ОС: Ubuntu 22.04
  • CPU: 4x3.3 ГГЦ
  • RAM: 8 ГБ
  • NVME, 80 ГБ

Инструкция универсальна – она подойдет, даже если у вас обычный ПК с ОС Linux или домашний сервер.   

1. Загрузка SteamCMD

SteamCMD (Steam Console Client) — это официальная утилита Valve, с которой можно просто устанавливать и обновлять игровые сервера. 

  1. Откройте консоль своей системы, либо подключитесь к серверу через SSH:
ssh user@host

Здесь user — имя пользователя, а host — IP-адрес или домен сервера/компьютера. 

Если подключаетесь к серверу впервые, ваш клиент попросит убедиться, что вы обращаетесь к нужной машине, и сравнить «отпечаток» ее ключа. Напишите «yes», чтобы продолжить.

Image37

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

  1. После входа установим необходимые для продолжения пакеты и утилиты.

Обновите информацию об актуальных пакетах:

sudo apt update

Установите зависимости:

sudo apt install -y lib32gcc-s1 unzip curl screen nano unzip

Здесь опция -y отвечает «Yes» на возможные вопросы установщика.

lib32gcc-s1

Базовые 32-битные библиотеки, которые необходимы для работы SteamCMD

unzip

Средство для распаковки zip-архивов, потребуется в процессе работы с плагинами

cURL

Консольный HTTP/FTP‑клиент, потребуется для скачивания SteamCMD

screen

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

nano

Текстовый редактор

Последние три пакета уже предустановлены на виртуальных серверах Timeweb Cloud.

  1. По рекомендации Valve создайте для SteamCMD отдельного системного пользователя. Его небезопасно использовать под root.
sudo useradd -r -m -s /bin/bash steam

Подробнее о параметрах при создании пользователя:

    • m создаст домашнюю директорию, /home/steam.
    • r помечает пользователя как системного. 
    • s явно указываем /bin/bash — это тип оболочки. Если у вас «чистая» система, без указания этого параметра может поставиться другая оболочка, которая менее дружелюбна к пользователю. Если вы в Linux новичок — рекомендуется оставить параметр. 
  1. Теперь можно перейти под нового пользователя:
sudo -iu steam
  1. Создайте под ним каталог Steam и сразу войдите в него:
mkdir ~/Steam && cd ~/Steam
  1. Скачайте клиент SteamCMD. Загрузите его с помощью cURL и сразу распакуйте его через tar:
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

Указанные параметры скачают клиент в фоне — без отображения технической информации. Если вдруг сервер выполнит переадресацию (например, файл переехал), параметр -L заставит curl послушать это и в конечном итоге выполнить скачивание. 

  1. Запустите этот скрипт сразу с загрузкой Rust Dedicated:
./steamcmd.sh +force_install_dir "rust_server" \
  +login anonymous \
  +app_update 258550 validate \
  +quit
  • +force_install_dir — указываем, куда именно будем устанавливать сервер. В этом случае он распакуется в той же директории, где и сам steamcmd.sh, но в собственной папке rust_server (путь: ~/Steam/rust_server).

  • +login позволяет скачать публичный сервер без авторизации в личном аккаунте Steam.

  • +app_update скачивает приложение с ID 258550 — это Rust Dedicated Server. Сверить информацию и ID можно на SteamDB. Там же вы узнаете доступные для установки branches (сборки) — релиз (public/release), тестовая (staging) и другие. 

  • +validate в команде проверяет наличие поврежденных файлов, скачивает отсутствующие. 

  • +quit совершит выход из скрипта сразу, как тот закончит выполнение своих действий. 

Теперь нужно подождать, пока SteamCMD выполнит обновление и начнет скачивание Rust Dedicated Server. В результате мы должны получить строку «Success! App '258550' fully installed», что скажет об успешном завершении процесса. Мы почти готовы запустить свой сервер Раст.

2. Параметры запуска

Установщик создал скрипт для запуска, он находится в ./rust_server/runds.sh. Нам достаточно только лишь поправить его. Перейдите в директорию с сервером, далее она будет нашей основной:

cd rust_server

Откройте  файл с помощью редактора nano:

nano runds.sh

В нем уже есть две строки:

  • Первая объявляет переменную, в которой объединится два каталога с библиотеками, которые будут использоваться сервером для загрузки зависимостей:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:dirname $0/RustDedicated_Data/Plugins:dirname $0/RustDedicated_Data/Plugins/x86_64
  • Вторая запускает сервер в консольном режиме (batchmode):
./RustDedicated -batchmode -logfile 2>&1

Параметр -logfile 2>&1 заставляет его вести журнал действий и ошибок прямо в консоли.

Удалите содержимое и поместите туда нашу заготовку, при необходимости отредактируйте:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $0`/RustDedicated_Data/Plugins:`dirname $0`/RustDedicated_Data/Plugins/x86_64

./RustDedicated -batchmode \
    +server.hostname "Timeweb Cloud" \
    +server.port 28015 \
    +server.identity "my_first_server" \
    +server.seed 1234567 \
    +server.maxplayers 20 \
    +server.worldsize 2000

Закройте nano сочетанием клавиш CTRL + X. На вопросе «Save modified buffer?» нажмите Y, чтобы подтвердить изменения, далее Enter, чтобы их сохранить в файл. 

Так мы запустим Dedicated Server без графического интерфейса с настройками:

  • hostname — публичное имя: Timeweb Cloud
  • port — порт, по которому будет подключение: 28015
  • identity — внутреннее имя, сервер будет создавать и хранить собственные файлы (данные карты, игроков и т.д.) в папке my_first_server
  • seed — ключ для процедурной генерации (каким правилам будет следовать генератор): 1234567
  • maxplayer —максимально допустимое число игроков: 20
  • worldsize — размер карты: 2000 ед.

Символ \ не выполняет отдельных действий, но дает нам возможность описать параметры запуска в несколько строк, а не в одну —  читать и редактировать становится удобнее. 

3. Подстраховка оперативной памяти

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

Проверим доступную память на сервере:

free -h

Примерный вывод будет таким:

Image17

Смотрите на Swap. Если он пуст, то его нужно создать: 8 гигабайт оперативной памяти должно быть достаточно при выбранной нами конфигурации сервера, однако во время генерации карты пики могут превышать 7.5 доступных ГБ. Это приведет к тому, что система «убьет» Rust Dedicated еще до того как он успеет полностью запуститься.

Сам swap — это механизм виртуальной памяти, основанный на дисковом пространстве, который помогает «разгружаться» оперативной памяти. Поэтому он поможет избежать возможную проблему с нехваткой.

Сперва выйдите из пользователя steam — нам нужны права суперпользователя:

exit

Префикс steam@server_name:~$ должен поменяться на root@server_name.

Зарезервируйте на диске 2 ГБ под будущий файл /swapfile:

sudo fallocate -l 2G /swapfile

Через chmod ограничьте права, чтобы только root смог читать файл и писать в него:

sudo chmod 600 /swapfile

Сообщите системе о том, что /swapfile теперь является виртуальной памятью:

sudo mkswap /swapfile

Активируйте его как swap:

sudo swapon /swapfile

Готово. Проверьте, работает ли:

swapon --show

После всех действий вывод будет похожим:

Image16

Если в будущем будете обнулять карту или генерировать новые, swap можно сделать постоянным. Для этого нужно открыть /etc/fstab:

nano /etc/fstab

Последней строкой указать в нем созданный swap:

/swapfile none swap sw 0 0

Должно получиться так:

Image21

Закройте nano сочетанием клавиш CTRL + X. На вопросе «Save modified buffer?» нажмите Y, чтобы подтвердить изменения, далее Enter, чтобы их сохранить в файл. 

Не забудьте снова залогиниться под steam:

sudo -iu steam

И вернуться в рабочую папку:

cd ~/Steam/rust_server

Запуск локального сервера Раст

Ранее у нас отлично получилось задать минимальные настройки. Теперь самое время запустить свой локальный сервер Раст и попробовать к нему подключиться. На этом шаге предполагается, что компьютер с Rust Dedicated и компьютеры друзей/коллег находятся в одной сети. Например, подключены к одному роутеру. 

Если вы используете облако — ваш игровой сервер по умолчанию доступен как публичный, поэтому переходите к запуску публичного сервера.

Шаг 1. Запуск сервера

Windows

Запуск сервера

Запустите скрипт Run_DS.bat. После дождитесь завершения проверки всех обновлений. При первом запуске Windows может показать всплывающее окно:

Image19

Нажмите «Разрешить», чтобы другие устройства в вашей сети могли подключаться.

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

Когда все закончится, вы увидите на экране что-то вроде:

map      : Procedural Map
players : 0 (5 max) (0 queued) (0 joining)
106,880 ents, 0 slprs

Это говорит о том, что карта была сгенерирована и загружена, игровые объекты прогружены, а сервер уже ожидает игроков. Можно подключаться, выполнять команды в консоли сервера. О них читайте ниже. 

Проверка локального IP-адреса устройства

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

Чтобы его узнать, нажмите WIN + R. В открывшемся окне напишите cmd и нажмите ОК.

Image10

Выполните команду ipconfig.

Image35

Вы увидите информацию о подключении. Найдите раздел, начинающийся с «Wireless LAN adapter» или «Ethernet adapter», — в строке IPv4 Address будет ваш локальный IP, например:

Адаптер Ethernet Ethernet:
   …
   IPv4-адрес. . . . . . . . . . . . : 192.168.1.103

Передайте этот адрес друзьям.

Linux

Запуск сервера

Команды выполняем от имени пользователя steam

Вернитесь в каталог с Rust Dedicated, если вдруг его покинули:

cd ~/Steam/rust_server

Запустите скрипт runds.sh через виртуальное окно screen:

screen -S rust ./runds.sh

При таком запуске игровой сервер продолжит работу, даже если вы отключитесь от SSH. Параметр -S при создании окна назначает ему явное название. 

При первом запуске будет генерироваться карта, поэтому ожидание может занять несколько минут. В качестве подтверждения успешного запуска ожидайте строки:

SteamServer Initialized
Server startup complete
SteamServer Connected

При необходимости выйти из окна, не останавливая сервер, нажмите сочетание клавиш CTRL + A, затем кнопку D. В ответе будет:

[detached from {id}.rust] 

Это подтвердит, что screen остался активным.

Вернуться к нему можно:

  • через screen -r, если окно одно;

  • через screen -r rust, если окон много и вы задали ему имя rust;

  • через screen -r <ID>.

Проверить список активных окон, их имена и ID можно командой:

screen -list

Доступность порта внутри локальной сети

В Linux порт по умолчанию не заблокирован, но если используется ufw (или другой файрвол), нужно явно разрешить используемый UDP порт:

sudo ufw allow 28015/udp

Проверка локального IP-адреса устройства

ip a | grep inet

Если вы повторяли инструкцию для Linux-сервера, который находится в локальной сети, то ваш IP — строка, в которой есть адрес, начинающийся на 192.168. или 10.:

inet 192.168.0.2/24 metric 100 brd 192.168.0.255 scope global enp2s0

Image30

Копируйте первый и отправляйте его друзьям. 

Шаг 2. Подключение к серверу

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

  1. Откройте Rust и нажмите F1 — откроется консоль.

  2. Введите команду:

client.connect 192.168.0.2:28015

Замените IP на тот, который вы узнали ранее через ipconfig (Windows) или ip a (Linux).

Если вы меняли порт в параметрах запуска, укажите его после двоеточия.

Image14

После нажатия Enter вы должны увидеть:

[EAC] Logging in with Steam ticket…
Found 1 server query result: 192.168.0.2:28015 Raknet
Connecting: 192.168.0.2:28015 (Raknet)

Это значит, что соединение установлено, и вы подключаетесь к своему локальному серверу.

  • Если вы не меняли порт, можно не указывать его вообще: client.connect 192.168.0.2.

  • Если сервер и клиент (сама игра) находятся на одном устройстве, можно использовать 127.0.0.1 вместо IP.

Запуск публичного сервера Раст

Вы можете сделать свой сервер публичным  — его будут видеть все игроки в разделе с серверами во вкладке «Сообщество» или «Модифицированные» — в зависимости от настроек и модификаций. В них сервер попадает через 5-10 минут после запуска.

Image1

Мы рассмотрим два способа, как открыть свою творческую «песочницу» для всех. 

Вариант 1. Самый простой — облако 

Проще всего для этого воспользоваться облачным сервером. Создайте собственный сервер, как это написано в начале статьи, затем установите Rust Dedicated и настройте его по инструкции из раздела «Загрузка и настройка собственного сервера» для Linux, затем вернитесь к этому пункту. 

Если вы выполнили все описанные шаги, до запуска осталось немного:

  1. Убедитесь, что находитесь в каталоге с Rust Dedicated Server:
cd ~/Steam/rust_server
  1. Запустите скрипт runds.sh через виртуальное окно screen, явно указав имя с помощью опции -S:
screen -S rust ./runds.sh

При первом запуске будет генерироваться карта, поэтому ожидание может занять несколько минут. В качестве подтверждения успешного запуска ожидайте строки:

SteamServer Initialized
Server startup complete
SteamServer Connected

При необходимости выйти из окна, не останавливая сервер, нажмите сочетание клавиш CTRL + A, затем кнопку D. В ответе будет:

[detached from {id}.rust] 

Это подтвердит, что screen остался активным.

Вернуться к нему можно:

  • через screen -r, если окно одно;
  • через screen -r rust, если окон много и вы задали ему имя rust;
  • через screen -r <ID>.

Проверить список активных окон, их имена и ID можно командой

screen -list 
  1. Подключитесь к серверу из игры, когда будете готовы, заменив в команде server_ip на тот IP-адрес, который указан на Дашборде:
client.connect server_ip:28015

Либо вы можете подождать несколько минут, а затем найти свой игровой сервер среди остальных: в главном меню нажмите на «Играть», а в открывшемся списке серверов перейдите в «Сообщество». Серверов может быть много, поэтому сразу в строке поиска введите название своего (из server.hostname).

Вариант 2. Из локального в публичный

Перед продолжением рекомендуется уточнить у провайдера, какой у вас IP и можно ли принимать по нему входящие соединения, если открыть порт. Если вы не уверены или желаете избежать сложностей, рекомендуем вернуться к первому варианту. 

Бывает несколько видов IP-адресов, которые выдает провайдер, когда подключает вас к интернету:

«Серый» (CGNAT)

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

«Белый» динамический

Порт пробросить можно, но адрес может поменяться в любой момент

Статический IP 

Идеальный вариант. Обычно выделяется провайдером по запросу за отдельную плату

  1. Зайдите в настройки вашего роутера (обычно http://192.168.0.1 или http://192.168.1.1) и авторизуйтесь. 
  2. Найдите раздел с настройками Port Forwarding или NAT. На примере интерфейса TP-Link путь может быть таким: «Расширенные настройки» → «Nat переадресация» → «Перенаправление порта». Интерфейсы могут отличаться, поэтому воспользуйтесь инструкцией производителя.

Image22

  1. Пробросьте порт:

Image28

Параметр

Значение

Внешний порт

28015

Внутренний порт

28015

Протокол

UDP

IP-адрес

Локальный IP вашего ПК с сервером, например 192.168.1.103

Если есть поля «внешний IP», «локальный IP», внешний остается пустым, а IP компьютера с сервером заносите в «локальный IP».

Так, если кто-то из глобальной сети обратится по ВАШ_ПУБЛИЧНЫЙ_IP:28015, запрос придет к вам на роутер, а роутер перенаправит его на указанный вами компьютер, где наконец достучится до Rust Dedicated Server.

Повторите действия для порта 28017, если нужно, чтобы сервер был в списке с другими серверам. Мы объявим этот порт в следующем разделе инструкции. 

  1. Убедитесь, что файрвол в Windows или UFW в Linux не блокирует порт.

Windows

Откройте «Панель управления». Перейдите в раздел «Система и безопасность» → «Брандмауэр Защитника Windows».

Нажмите на «Разрешение взаимодействия с приложением или компонентом в брандмауэере Защитника Windows». 

Image5

Проверьте на чекбоксы — они должны быть активны. 

Image33

Linux

Для проверки нам вновь потребуется права суперпользователя, для этого выйдите из пользователя steam:

exit

Проверьте, активен ли UFW (файрвол):

sudo ufw status

Если вы видите «Status: inactive», значит доступны все подключения. Ничего делать не нужно. Переходите к следующему шагу.

Если видите «Status: active», нужно открыть порт:

sudo ufw allow 28015/udp comment 'Rust server port'

# comment поможет в будущем определить, для чего создано правило. 

Проверьте, что правило применилось:

sudo ufw status numbered

Ожидаемый вывод:

28015/udp     ALLOW     Anywhere     # Rust server port

Повторите действия для порта 28017, если желаете, чтобы сервер появился в списке других публичных серверов Раст. Этот порт мы объявим в следующем разделе инструкции.

  1. Узнайте свой публичный IP-адрес, например, на сайте 2ip.ru.

Image32

  1. Если сервер выключен или еще не поднимался, запустите его так, словно вы включаете его локально. Но в этот раз вы и ваши друзья должны попробовать подключиться по публичному IP-адресу и правильному порту. Пока сервер запущен и слушает порт, здесь можно убедиться в его доступности. Должно быть написано «Порт открыт». 

Image7

  1. Можно подключаться к северу по публичному IP:
client.connect server_ip:28015

Основные настройки и конфигурация сервера

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

Основные параметры запуска

В таблице ниже мы собрали базовые настройки запуска, которые меняются чаще всего. 

Параметр

Что делает

Особенности

-batchmode

Запускает сервер в терминале без графической оболочки 

 

+server.port 28015

Указывает, какой порт будет слушать сервер

По умолчанию 28015. Это UDP-порт.

+server.queryport 28017

Порт, по которому сервисы и мониторинги обращаются к вашему серверу

В частности нужен, чтобы Rust мог отобразить ваш сервер в списке с остальными. Это UDP-порт.

Если не указать явно, по умолчанию он будет равен server.port + 1 или rcon.port +1 (возьмет самый большой, прибавит к нему 1). 

+server.level "Procedural Map"

Тип карты 

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

+server.seed 1234

Случайный ключ для генерации карты

Может быть от 0 до 2147483647. Подробнее ниже.

+server.worldsize 4000

Размер карты

Может быть от 1000 до 6000 единиц. Чем больше — тем больше места на диске и свободных ОЗУ вам необходимо. 

+server.maxplayers 10

Максимальное количество игроков

Чем больше игроков, тем мощнее должен быть процессор

+server.hostname "Tom Server"

Публичное название сервера

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

+server.description "Мой первый сервер в Rust"

Описание для сервера

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

+server.url "http://mysite.com"

Ссылка на сайт проекта

Если у вас есть сайт или блог, можете указать в этом параметре ссылку на него. В окне подключения «Открыть сайт» переведет на указанную страницу.

+server.headerimage "http://mysite.com/serverimage.jpg"

Ссылка на изображение/постер 

Если указано изображение, оно отобразится на экране подключения к серверу.

+server.logoimage <url>

Ссылка на логотип сервера

Если есть, укажите ссылку на логотип размером размером 256x256 

+server.identity "my_first_server"

Внутреннее имя сервера 

В папке с установленным Rust Dedicated сервер создаст my_first_server, где будет хранить все свои файлы

+rcon.port 28016

Порт для удаленного подключения (RCON)

RCON клиенты могут подключаться по этому порту, чтобы удаленно управлять и администрировать сервером. По умолчанию он равен server.port (у нас 28015). Это TCP-порт.

+rcon.password strong_password 

Пароль, который нужен при RCON-подключении

Обязательно измените strong_password на собственный сложный пароль

+rcon.web 1

Задает тип подключения

Предлагается 1, это открывает RCON доступ через WebSocket — более устойчивое подключение, интерактивный формат работы

-logfile <name> 

Указывается имя файла логов

 

Больший список доступных параметров, а затем и команд администратора можно узнать в консоли сервера с помощью команды find.

Удаленное управление через RCON

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

Потребуется в том числе, если вы установили сервер на Linux — в отличие от Windows, на нем недоступна локальная интерактивная консоль.

Настройка RCON 

  1.  Остановим запущенный сервер.
    • В Windows отправьте в консоль сервера команду quit.
    • В Linux в открытом терминале нажмите сочетание клавиш CTRL + C.

Сервер сохранит данные и безопасно выключится. 

  1. Создадим новый файл конфигурации.

Ранее мы передавали параметры сервера при его запуске, что является не совсем правильным подходом. Теперь там мы оставим только необходимое, а все остальное вынесем в общий файл с настройками.

Windows

  1. Откройте удобный текстовый редактор. Мы воспользуемся стандартным Блокнотом. Вставьте туда и отредактируйте по желанию: 
# основное
server.maxplayers 20

# карточка сервера
server.hostname "Timeweb Cloud" 
server.description "Установка и настройка Rust сервера\nПодробная инструкция"
server.url "https://timeweb.cloud"

# прочие настройки вы можете добавлять по мере необходимости со следующей строки (без #)
  1. Сохраните этот файл под именем server.cfg в папке с путем:
ваша_папка\rustds\server\внутреннее_имя\cfg\

Image24

  1. Перейдите в папку rustds\server\внутреннее_имя. В нем снова откройте RunDS.bat для редактирования. Добавьте туда строки для RCON подключения и уберите те, которые уже записали в server.cfg. В результате может получиться так: 
echo off
:start

cd steam
steamcmd.exe +runscript ../update_script.txt
cd ..

cd rustds
RustDedicated.exe -batchmode ^
    +server.port 28015 ^
    +server.queryport 28017 ^
    +server.identity "my_first_server" ^
    +server.seed 1234567 ^ 
    +server.worldsize 1000 ^
    +rcon.port 28016 ^
    +rcon.password "strong_password" ^
    +rcon.web 1 
cd ../

goto start

Обязательно измените rcon.password, иначе сервер будет уязвим. 

  1. Сохраните файл и снова запустите сервер. Дождитесь полного запуска.

Linux

  1. Откройте в редакторе скрипт запуска своего сервера Раст.
nano ~/Steam/rust_server/runds.sh
  1. Добавьте туда строки для RCON подключения и уберите лишние (с hostname, description, url, maxplayers) — мы перенесем их в общий файл с конфигом. Файл должен получиться таким:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $0`/RustDedicated_Data/Plugins:`dirname $0>
./RustDedicated -batchmode \
    +server.port 28015 \
    +server.queryport 28017 \
    +server.identity "my_first_server" \
    +server.seed 1234567 \
    +server.worldsize 2000 \
    +rcon.port 28016 \
    +rcon.password "strong_password" \
    +rcon.web 1 \
    -logfile 2>&1

Обязательно измените rcon.password, иначе сервер будет уязвим. 

  1. При необходимости поменяйте значения и сохраните изменения. Теперь в файлах вашего сервера нужно отредактировать конфигурационный файл (если файла не существует, nano создаст его при сохранении). 
nano ~/Steam/rust_server/server/my_first_server/cfg/server.cfg
  1. Вставьте в него наш текст и отредактируйте по желанию: 
# основное
server.maxplayers 20

# карточка сервера
server.hostname "Timeweb Cloud" 
server.description "Установка и настройка Rust сервера\nПодробная инструкция»
server.url "https://timeweb.cloud"

# прочие настройки вы можете добавлять по мере необходимости со следующей строки (без #)
  1. Сохраните изменения, снова запустите сервер и дождитесь его полного запуска:
screen -S rust ~/Steam/rust_server/runds.sh

Здесь мы снова используем screen, так как предыдущее окно закрылось при выключении сервера. 

Подключение к RCON и авторизация

В интернете можно найти разные способы по подключению к RCON. Facepunch выпустил для пользователей свою панель Websocket RCON. Отличный вариант для удаленного управления публичным сервером. 

Если вы запустили сервер как локальный, но у вас не проброшен порт rcon.port, эта панель не подойдет. Однако в интернете можно найти локальные клиенты. Большинство из них не умеют работать с WebSocket, поэтому предварительно в конфиге замените rcon.web 1 на rcon.web 0 и перезапустите сервер.

  1. Перейдите на страницу с панелью.

К сожалению, стандартный клиент не настроен на работу с зашифрованным трафиком, поэтому убедитесь, что в начале ссылки указано http — без буквы S в конце, иначе не получится подключиться к своему серверу Rust. В будущем рекомендуем перейти на любое другое решение, которое будет безопасным. 

Image34

  1. Отталкиваясь от данных в server.cfg:
    • в Address введите ваш_публичный_ip:rcon.port;

    • в Password напишите пароль, который указывали в rcon.password (у нас он 28016).

И нажмите Connect. Мы не меняли свои настройки и успешно подключились по нашему IP 5.129.197.148:28016 с паролем strong_password.

После авторизации вы увидите мониторинг ресурсов и часть информации о сервере.

Image18

Вам доступны вкладки: 

  • Server (вы находитесь здесь);

  • Console — отсюда отправляются команды для управления сервером. Например, ban;

  • Chat — вы видите всю историю чата с момента запуска сервера, можете отправлять новые от его имени и видеть чужие в режиме реального времени;

  • Player List — список игроков, которые прямо сейчас находятся на сервере. Можно узнать имя игрока, его Steam ID, и даже кикнуть с сервера двумя нажатиями.

Выдача прав администратора

  1. Узнайте ваш Steam ID одним из способов:
    • Найдите в консоли момент, когда вы подключались:
stepanik537 with steamid 76561198147940103 joined from ip *****:50954
    • Посмотрите в RCON во вкладке Player List:

Image12

    • Не выходя из консоли, напишите:
users

Ответ:

76561198147940103:"stepanik537"
1 users
  1. В консоли сервера/RCON отправьте команду:
ownerid ПОЛУЧЕННЫЙ_STEAM_ID 

В подтверждение увидите: «Added owner …». Это дает право пользователю отправлять команды администратора прямо из консоли игры. Например, noclip для полета.

Аналогичным образом можно выдать и права модератора, отличается только команда — moderatorid STEAM_ID.

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

Поиск доступных команд администратора

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

Если нужно что-то отыскать, используйте find <фрагмент> в консоли сервера. Это покажет существующие переменные и команды, их описание. Например, если ищете что-то связанное с блокировкой, напишите find ban. Сервер покажет существующие подходящие команды

Генерация новой карты

Чтобы сгенерировать новую карту,  которая будет отличаться от предыдущей, поменяйте server.seed в скрипте запуска Rust Dedicated. Можно указать случайный набор символов, а можно воспользоваться сервисом для поиска подходящих ключей. Сначала указываете параметры, а затем отбираете подобранные варианты.

Под каждой картой в нем пишется два числа по порядку:

размер карты (server.worldsize) / ключ генерации (server.seed)

Копируйте последний и вставляйте его в runds.sh (Linux) и Run_DS.bat (Windows) возле +server.seed.

Image6

Здесь, например, мы бы копировали 114514, а в скрипте запуска указали бы +server.seed 114514.

Если до этого момента сервер уже генерировал какую-либо карту, лучше всего  поменять server.identity на другой (если желаете сохранить файлы) или удалить папку для текущего server.identity. После этого запускать сервер. 

Установка модов и плагинов на сервер

Расширение возможностей, упрощение рутины или «фановые» модификации — одни из основных преимуществ создания собственного сервера в Расте. 

Чтобы сделать это возможным, установим uMod (Oxide) — одно из самых популярных решений, имеет огромный маркетплейс плагинов для Rust, 7 days to die и других игр.

После установки ваш сервер перестанет отображаться в списке серверов Rust Сообщество, но появится в Модифицированных.

1. Остановка сервера

Отправьте quit в консоль (или RCON) либо нажмите CTRL + C в консоли для безопасной остановки.

2. Резервная копия каталога с Rust Dedicated

На практике всегда перед установкой модификаций рекомендуется делать резервные копии. Если случайно установить на Linux сборку для Windows, либо поставить поврежденную версию модификации, проще всего будет откатиться к резервной копии, чем вручную искать поврежденные файлы или устанавливать все заново.

Windows

Скопируйте runds в любое безопасное место или сделайте архив с ней (оригинальная папка при этом должна остаться на своем месте). 

Linux

Сделайте копию папки рядом с основной, но под другим именем:

cp -r ~/Steam/rust_server ~/Steam/rust_server.bak

cp сделает полную копию rust_server с именем rust_server.bak.

В будущем храните копии в сжатых архивах. 

3. Установка uMod

Windows

  1. Перейдите на страницу загрузки.

Image31

  1. Нажмите на Rust — начнется загрузка архива Oxide.Rust.zip.
  2. Когда архив будет скачан, распакуйте его содержимое в папку rustds (папку RustDedicated_Data из архива нужно переместить в вашу_папку_с_сервером\rustds\).

Image11

  1. При распаковке появится уведомление о том, что файлы уже существуют. Выберите «Заменить файлы в папке назначения». 

Image27

Linux

  1. Перейдите к репозиторию проекта. Скопируйте ссылку на архив со сборкой для Linux:

Image4

Для последней версии Rust Dedicated Server нужно использовать последнюю версию (latest) uMod. 

  1. Переключитесь в терминал вашего сервера. В нем перейдите в корень Rust Dedicated:
cd ~/Steam/rust_server
  1. Подставив ссылку внутри кавычек, скачайте последний релиз uMod для Rust Dedicated и временно сохраните его с именем umod.zip:
curl -sqL "ссылка_с_предыдущего_шага" -o umod.zip
  1. Распакуйте новый архив и сразу удалите его (нет нужды хранить):
unzip -o umod.zip && rm umod.zip
  1. Запустите сервер:
screen -S rust ./runds.sh
  1. В процессе запуска в консоли увидим примерно такую строку (у вас версия может быть выше):
Loading Oxide Core v2.0.4128…

Она указывает на успешный запуск модификации. Вручную проверить тоже можно: в консоли сервера (или в RCON) выполните команду

oxide.version

Ожидаемый результат:

Oxide.Rust Version: 2.0.6433
Oxide.Rust Branch: master

4. Установка первого плагина

Найдите подходящий для вас плагин на сайте модификации. Для удобства пользуйтесь фильтрами. 

Обращайте внимание на дату последнего обновления, описание к плагину и то, что в блоке Supported Games отражен сам Rust/указан значок универсальной платформы (U).

Мы будем устанавливать Portable Vehicles — возможность переносить транспортные средства в инвентаре, как предметы. 

Image8

Windows

  1. Нажмите на Download для загрузки плагина (расширение .cs).
  2. Скачавшийся файл поместите в ваша_папка\rustds\oxide\plugins\.

Linux

  1. Нажмите на значок планшета рядом с кнопкой Download — так вы скопируете прямую ссылку на скачивание. 
  2. Перейдите в терминал сервера, нажмите CTRL + A, затем D, чтобы отключиться от screen:
[detached from {id}.rust] 
  1. Подставьте значения под выбранный плагин с 1 шага и скачайте его:: 
curl -sqL "ВАША_ССЫЛКА" -o ~/Steam/rust_server/oxide/plugins/НАЗВАНИЕ_ПЛАГИНА.cs

В нашем случае с PortableVehicles.cs команда будет такой:

curl -sqL "https://umod.org/plugins/PortableVehicles.cs" -o ~/Steam/rust_server/oxide/plugins/PortableVehicles.cs

uMod (oxide) заметит, если вы поместите файл в папку с плагинами, поэтому он перезапустится и попытается скомпилировать и загрузить ваш плагин. После действий ожидаем в консоли сервера строки:

[CSharp] Started Oxide.Compiler v successfully
PortableVehicles was compiled successfully in 1584ms
Loaded plugin Portable Vehicles v1.1.9 by Paulsimik

Если этих строк не появилось, то принудительно загрузите плагин (oxide.reload ИМЯ_ПЛАГИНА):

oxide.reload PortableVehicles

Вывод команды: 

Unloaded plugin Portable Vehicles v1.1.9 by Paulsimik
Loaded plugin Portable Vehicles v1.1.9 by Paulsimik

Проверить загруженные плагины также можно из консоли (RCON):

oxide.plugins

Вывод команды: 

Listing 1 plugins:
  01 "Portable Vehicles" (1.1.9) by Paulsimik (0.00s / 0 B) - PortableVehicles.cs

5. Проверка работы плагина

Ориентируйтесь на описание к плагину — в нем приведены принципы работы. Portable Vehicles проверяет права пользователя. Из приложенных к описанию нас заинтересует: 

  • portablevehicles.admin — права администратора (игрок может выдавать транспортные средства (ТС) всем игрокам); 

  • portablevehicles.use — права на использование плагина, выполнение команд в чате (игрок может выдать ТС только себе).

Чтобы их выдать через uMod (Oxide), существует команда:

oxide.grant <user or group (пользователю или группе)> <никнейм или SteamID> <право>

Заполните под себя и отправьте к консоль: 

oxide.grant user stepanik537 portablevehicles.admin
oxide.grant user stepanik537 portablevehicles.use

Получите подтверждение о наделении правами:

Image2

Теперь если в игре отправить в чат /pv, увидите доступные команды

  • /pv <никнейм> <имя ТС> — админ может выдать другому игроку;

  • /pv <имя ТС> — игрок может выдать себе.

В описании тоже указаны доступные ТС. Часть из них на скриншоте.

Image29

Мы возьмем лодку (boat) и седан (sedan). Отправьте в чат, чтобы получить лодку:

/pv car boat

Она появится в инвентаре как предмет, останется только разместить в воде. 

Image20

Плагин успешно работает, осталось сесть в транспорт и отправиться к желаемой точке на карте.

Image23

Типичные проблемы и их решение

В таблице приведем возможные проблемы, которые могут возникнуть в работе Rust,и способы их устранения.

Симптом

Причина

Решение

Failed to load bundle

Неполная установка

На Windows полностью выключите сервер и заново запустите Run_DS.bat

На Linux выполните команду:

./steamcmd.sh +force_install_dir "rust_server" \

  +login anonymous \

  +app_update 258550 validate \

  +quit

EMFILE: too many open files (Linux)

Ограничение ulimit

Добавьте * soft nofile 8192 и * hard nofile 8192 в /etc/security/limits.conf

EAC: Authentication timed out

Не синхронизирована дата/время

Включите systemd-timesyncd или NTP

Публичный сервер не виден в списке с остальными

1) server.port или server.queryport 

UDP закрыт 

2) отключен античит

1. Проверьте, не закрыты ли эти порты. Желательно их явно указывать в настройках.

Явно разрешите эти порты для файрвола/брандмауэра:
ufw allow SERVER_PORT/udp

ufw allow QUERY_PORT/udp

Вместо SERVER_PORT и QUERY_PORT подставьте свои. Каждый порт при этом должен быть проброшен до сервера. 

2. Важно, чтобы у вас параметры были: 

server.secure 1

server.encryption 1 

Если они равны нулю — выключен Valve Anti-Cheat и подключение не защищено, а Rust не может показывать такие серверы рядом с остальными.

Поменяйте значения на 1 и подождите 5‑10 минут для обновления.

Плагины не загружаются, в oxide/logs — CS‑ошибка

Нехватка .NET API в uMod или устаревший плагин

Обновите Oxide и сам плагин. Если плагин перестал поддерживаться автором, стоит искать альтернативу или искать копию (fork).

Процесс сервера убивается при генерации карты

В пике понадобилось больше оперативной памяти, чем было доступно

Если у вас еще нет swap, создайте файл на 2-4 ГБ. Если есть — его может быть недостаточно, увеличьте его размер.
Вы также можете уменьшить размер карты или игроков.

Rocking Chair/Convex Mesh warnings

Слишком сложные коллизии предметов

Никак не влияет: сервер автоматически упрощает сетку

RCON не отвечает (ERR 1006)

1) Не тот тип подключения

2) Порт rcon.port/TCP закрыт

1. Узнайте, какой тип подключения использует клиент RCON. Если с WebSocket, в вашем конфиге должно быть rcon.web 1. В обратном случае rcon.web 0.

2. В вашем случае порт может быть закрыт по умолчанию (или не проброшен, если вы вывели локальный сервер в паблик). Откройте порт по инструкции, описанной для вашей ОС. 

Не сохраняются настройки после перезапуска

Настройка не сохраняется автоматически

Часть изменений, внесенных через консоль/RCON, до сих пор могут не сохраняться автоматически. Чтобы сервер запомнил изменения, отправьте в консоль:

writecfg  

Разверните Rust на собственном сервере

Заключение

Мы прошлись по базовым шагам по созданию своего сервера Rust. Этим вы открываете путь к персонализированному геймплею — все настройки теперь зависят только от вас. Чтобы проект жил долго и стабильно:

  1. Обновляйте Rust Dedicated и uMod сразу после выхода патчей.

  2. Перед обновлениями делайте резервные копии.

  3. При большом масштабе вашего проекта храните отдельный локальный сервер Раст для тестов конфигураций.

  4. Следите за производительностью (CPU/RAM/диск IO); масштабируйтесь до того, как игроки начнут жаловаться на лаги.

  5. Используйте RCON‑права только с надежными паролями, а лучше по закрытому порту.

  6. Автоматизируйте резервное копирование 

Такой подход избавит от критических сбоев и сохранит вашу «песочницу» интересной для друзей и публичных игроков.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
30 апреля 2025 г.
106
38 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев