Terraria Руководство

Как настроить сервер Terraria на Ubuntu 24.04

Установка PC-сервера Terraria 1.4.5.8 на Ubuntu: выбор мира, TCP 7777, сохранение через консоль и резервная копия за пределами VPS.

Как настроить сервер Terraria на Ubuntu 24.04

Запустим обычный PC-сервер под отдельным пользователем Linux, явно выберем мир и сохраним его при перезапусках. Инструкция рассчитана на Ubuntu 24.04 x86_64 и Terraria 1.4.5.8, с подключением по IP. Для tModLoader, TShock и игры между платформами совместимость проверяют отдельно.

Нужны чистый VPS с публичным IPv4, SSH и sudo. Для небольшой группы без модов выделите несколько гигабайт памяти и проверьте расход при генерации мира: это начальная оценка, а не гарантия вместимости. Перед изменением firewall убедитесь, что доступна консоль восстановления у провайдера.

Скачайте сервер той же версии, что и игра#

Сначала сравните полный номер версии у всех игроков. В официальном архиве 1.4.5.8 есть каталог 1458/Linux, launcher и файлы встроенной среды выполнения. Если клиент другой версии, выберите соответствующий сервер на сайте Terraria, не подбирая цифры в URL наугад.

Из обычной административной SSH-сессии:

bash
sudo apt update
sudo apt install -y curl unzip tmux ufw nano file binutils
sudo useradd --system --user-group --create-home \
  --home-dir /srv/terraria --shell /bin/bash terraria
sudo install -d -o terraria -g terraria -m 750 \
  /srv/terraria/worlds /srv/terraria/backups
curl --fail --location \
  https://terraria.org/api/download/pc-dedicated-server/terraria-server-1458.zip \
  --output /tmp/terraria-server-1458.zip
sha256sum /tmp/terraria-server-1458.zip
sudo unzip -q /tmp/terraria-server-1458.zip -d /opt/terraria-release
sudo chmod +x /opt/terraria-release/1458/Linux/TerrariaServer \
  /opt/terraria-release/1458/Linux/TerrariaServer.bin.x86_64
file /opt/terraria-release/1458/Linux/TerrariaServer.bin.x86_64

Последняя команда определяет архитектуру, но не запускает игру. Сохраняйте весь Linux-каталог: одного бинарника недостаточно. Поставляемый launcher TerrariaServer переходит в свой каталог и задаёт окружение; дальше используем его. Не устанавливайте произвольную системную Mono или .NET, пока не проверили целостность самой поставки.

Создайте мир в интерактивной консоли#

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

Домашний каталог серверного пользователя — /srv/terraria. Откройте интерактивную сессию от его имени:

bash
sudo -iu terraria
umask 077
cd /opt/terraria-release/1458/Linux
tmux new-session -s terraria
./TerrariaServer -worldpath /srv/terraria/worlds

В диалоге сервера создайте мир, выберите размер и сложность, назовите его Coop. Затем выберите созданный мир, лимит восемь игроков, порт 7777, откажитесь от автоматического проброса портов и задайте непустой пароль. Это пример настроек закрытой группы; для мира Journey нужны и совместимые персонажи.

Дождитесь завершения генерации и проверьте версию в консоли. Командой help посмотрите доступные команды именно этой сборки. Введите save, дождитесь сохранения, затем exit, чтобы сохранить и остановить сервер. Эти команды вводят в консоль игры, не в Bash. Для обычной остановки не используйте exit-nosave: справочник команд сервера различает эти действия.

После завершения процесса проверьте фактическое имя файла:

bash
find /srv/terraria/worlds -maxdepth 1 -type f -name '*.wld' -print
nano /srv/terraria/serverconfig.txt

Скопируйте точное имя с учётом регистра. Если получилось Coop.wld, внесите:

ini
world=/srv/terraria/worlds/Coop.wld
worldpath=/srv/terraria/worlds
maxplayers=8
port=7777
password=REPLACE_WITH_A_PRIVATE_PASSWORD
upnp=0

Замените заглушку пароля до запуска. Эти общие параметры описаны в Windows/serverconfig.txt скачанного архива. Для готового мира не включайте autocreate: ошибку в пути нужно исправить, а не получить из-за неё новый мир. Ограничьте доступ к конфигурации:

bash
chmod 600 /srv/terraria/serverconfig.txt
./TerrariaServer -config /srv/terraria/serverconfig.txt

Для отсоединения нажмите Ctrl+B, затем D. Консоль продолжит работать после закрытия SSH. Позже из исходной административной сессии можно вернуться:

bash
sudo -iu terraria tmux attach-session -t terraria

Tmux переживает разрыв соединения, но не запускает игру после перезагрузки VPS. После reboot создайте новую tmux-сессию под terraria, перейдите в тот же Linux-каталог и запустите ту же конфигурацию. Второй процесс с тем же миром одновременно не запускайте.

Откройте доступ и проверьте вход в мир#

Firewall настраивают из обычной административной SSH-сессии. Посмотрите фактический SSH-порт через sudo sshd -T и разрешите его до включения UFW. Пример предполагает SSH на TCP 22:

bash
sudo ufw allow 22/tcp
sudo ufw allow 7777/tcp
sudo ufw enable
sudo ufw status verbose
sudo ss -ltnp 'sport = :7777'

При другом SSH-порте сначала замените 22. Разрешите TCP 7777 и в firewall провайдера. Для сервера в частной сети понадобится правило на роутере, направленное на его локальный адрес. Одного разрешения UDP для такого TCP-подключения недостаточно.

В PC-клиенте совпадающей версии выберите Multiplayer → Join via IP, введите публичный IPv4 VPS, порт 7777 и пароль. Названия в русской локализации могут отличаться. Прослушиваемый сокет подтверждает локальный запуск; вход персонажа в нужный мир проверяет больше. Сделайте узнаваемое изменение, сохраните мир, перезапустите сервер через exit и убедитесь, что изменение осталось.

Храните копию за пределами VPS#

Предупредите игроков, в подключённой серверной консоли введите save, дождитесь завершения и введите exit. Копировать данные можно после возврата launcher в Bash. Всё ещё под пользователем terraria:

bash
(
  set -e
  umask 077
  terraria_backup="/srv/terraria/backups/terraria-$(date -u +%Y%m%dT%H%M%SZ).tar.gz"
  tar -czf "$terraria_backup" -C /srv/terraria worlds serverconfig.txt
  tar -tzf "$terraria_backup"
)

Копируйте весь worlds, включая существующие .bak и другие резервные файлы мира. Копия рядом с оригиналом поможет после неудачного редактирования, но исчезнет вместе с тем же диском. В отдельной административной SSH-сессии введите точный путь к архиву и создайте защищённую копию в домашнем каталоге SSH-пользователя:

bash
read -r -p "Exact archive path: " game_archive
ssh_admin=$(id -un)
ssh_group=$(id -gn)
ssh_home=$(getent passwd "$ssh_admin" | cut -d: -f6)
sudo install -o "$ssh_admin" -g "$ssh_group" -m 600 \
  "$game_archive" "$ssh_home/terraria-export.tar.gz"

С рабочей машины замените обе заглушки:

bash
scp YOUR_SSH_USER@YOUR_VPS_IP:terraria-export.tar.gz .

Копию для передачи может читать только её владелец. После скачивания и проверки удалите эту промежуточную копию; внешний архив тоже храните защищённым, поскольку в нём есть серверный пароль.

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

Найдите первый уровень, на котором произошёл сбой#

НаблюдениеСледующая проверкаЧто это означает
Launcher сразу завершаетсяЗапустите интерактивно из его каталога и сохраните полную ошибкуПроблема файлов, прав или среды возникает до сети
Консоль сообщает о несовпадении версийСравните полные версии клиента и сервераFirewall не исправит несовместимость сборок
Сервер неожиданно предлагает создать мирПроверьте world= и точное имя файлаДругой путь или пользователь могут выбрать другое сохранение
Сокет есть, извне войти нельзяПроверьте firewall провайдера и публичный адресЛокальное прослушивание не проверяет внешний маршрут
Пропали последние измененияПроверьте остановку через exit, восстановите копию остановленного мираУбийство процесса не подтверждает сохранение

Старые Linux-инструкции часто объединяют автогенерацию, запуск службы и её остановку. Первый интерактивный запуск разделяет эти неисправности и даёт конкретный файл мира для сохранения. Следующее улучшение — управляемая служба, которая при остановке действительно передаёт игре команду сохранения и выхода. Сначала проверьте этот цикл на временном мире.