MAATRIX GAMES / Блог / Как поднять сервер Terraria: пошаговая инструкция

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

MAATRIX GAMES

Хочешь погонять Terraria с друзьями без танцев с бубном вокруг домашнего роутера и постоянного "а ты не выключил комп?" — держи разбор, как поднять выделенный сервер на Linux-VPS. Terraria — едва ли не самая лёгкая игра из всех, под которые вообще стоит арендовать сервер: хватает 1 ГБ RAM, никакого GPU, а сам процесс поднятия занимает от силы 15–20 минут, если не путаться в консольных командах при создании мира.

Минимальные требования и что понадобится

Terraria — 2D-песочница, и требования у дедиката смешные по меркам остальных игр каталога:

  • RAM: от 1 ГБ хватает с запасом даже на средний мир и 4–6 игроков. Большой мир (large) и толпа NPC в City съедят чуть больше — закладывай 1,5–2 ГБ, если планируешь долгую фарм-сессию.
  • CPU: 1 ядро тянет спокойно, Terraria не требовательна к процессору в отличие от того же Rust или ARK.
  • Диск: несколько сотен мегабайт под сам сервер плюс место под миры и бэкапы — 5–10 ГБ SSD более чем достаточно.
  • ОС: любой современный Linux — Ubuntu 22.04/24.04 или Debian 12 отлично подходят, дальше в статье команды под них.
  • Доступ: SSH до сервера с правами sudo и открытый исходящий интернет для скачивания архива.

Если берёшь VPS под Terraria, младший тариф с 1 ГБ RAM из каталога MAATRIX GAMES закрывает вопрос — переплачивать за мощность тут особо не за что.

Скачиваем и распаковываем сервер

Официальный дедицированный сервер Terraria для Linux распространяется в виде архива с сайта terraria.org (раздел загрузок для дедиков) — внутри лежат сборки под Windows, Mac и Linux сразу. Альтернативный путь — через SteamCMD, у Terraria Dedicated Server есть отдельный App ID в Steam, что удобно, если сервер уже настроен на автообновления через steamcmd для других игр.

Вариант через прямую загрузку:

cd /opt
sudo mkdir terraria-server
sudo chown $USER:$USER terraria-server
cd terraria-server
wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-XXXX.zip -O server.zip
sudo apt update && sudo apt install -y unzip
unzip server.zip

Номер версии в имени архива (XXXX) на сайте меняется с каждым патчем — просто бери ссылку из актуального раздела загрузок. После распаковки внутри появится папка с номером версии игры (например что-то вроде 1450 — конкретную цифру смотри у себя в архиве), а в ней — три подпапки: Windows, Mac и Linux. Тебе нужна именно Linux.

cd 1450/Linux
chmod +x TerrariaServer.bin

TerrariaServer.bin — это обёртка, которая поднимает сервер поверх Mono-рантайма; в актуальных сборках всё нужное уже упаковано в архив, доустанавливать зависимости вручную обычно не приходится. Если при первом запуске всё же ругается на нехватку какой-то системной библиотеки — это старая известная болячка Linux-сборок, лечится доустановкой недостающего пакета через apt install (в логе ошибки обычно прямо указано имя библиотеки).

Если предпочитаешь SteamCMD:

steamcmd +login anonymous +force_install_dir /opt/terraria-server +app_update 105601 validate +quit

Оба пути кладут одинаковый набор файлов, дальше инструкция одна для обоих случаев.

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

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

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

Запускаем сервер напрямую, без конфига — он сам проведёт тебя по интерактивному мастеру создания мира:

./TerrariaServer.bin

Консоль последовательно спросит:

  1. Max Players — максимум игроков одновременно (по умолчанию 8, для соло-сессии с друзьями хватает 4–8).
  2. Server Port — порт, по умолчанию 7777. Меняй, только если знаешь зачем.
  3. Automatically forward port with UPnP — на VPS отвечай n, UPnP там не работает, порт пробрасывать будем вручную через firewall (см. ниже).
  4. Server Password — пароль на вход, можно оставить пустым для публичного сервера или задать, если играете закрытой командой.
  5. World — выбор существующего мира (если уже есть .wld файл) или создание нового (n → New World).
  6. При создании нового мира спросит Choose World Size (1 — small, 2 — medium, 3 — large), Choose Difficulty (0 — Classic, 1 — Expert, 2 — Master, 3 — Journey) и Enter name for world.

После ответа на последний вопрос сервер сгенерирует мир (на large-мире это может занять пару минут) и запустится. В логе появится Server started, и можно подключаться из клиента Terraria через "Join via IP" на IP_сервера:7777.

Миры по умолчанию сохраняются в ~/.local/share/Terraria/Worlds/ — этот путь пригодится, если захочешь позже перенести мир на другой сервер или сделать ручной бэкап через cp.

Настройка serverconfig.txt

Отвечать на вопросы мастера каждый раз при перезапуске — так себе удовольствие. Правильный путь — один раз описать все параметры в serverconfig.txt и запускать сервер с флагом -config, минуя интерактив полностью.

Создай файл рядом с TerrariaServer.bin:

nano serverconfig.txt

Базовый рабочий конфиг:

world=/opt/terraria-server/1450/Linux/Worlds/MyWorld.wld
autocreate=2
worldname=MyWorld
difficulty=0
maxplayers=8
port=7777
password=
motd=Добро пожаловать на сервер!
worldpath=/opt/terraria-server/1450/Linux/Worlds
banlist=banlist.txt
secure=1
language=en-US
upnp=0
npcstream=60

Что важно понимать по ключам:

  • world — путь к конкретному файлу мира. Если файла ещё нет и указан autocreate, сервер создаст его сам при первом запуске с этим конфигом.
  • autocreate — размер нового мира (1/2/3), работает только если world указывает на несуществующий файл.
  • difficulty — 0 Classic, 1 Expert, 2 Master, 3 Journey. Обрати внимание: Expert и Master заметно жёстче для выживания в одиночку, для казуальной игры с новичками бери Classic.
  • secure=1 — включает дополнительные серверные проверки анти-чита, рекомендуется держать включённым на публичных серверах.
  • upnp=0 — на VPS UPnP всё равно бесполезен, порт открываем через firewall вручную.
  • banlist — путь к текстовому файлу со списком забаненных, создастся автоматически при первом бане через консоль (ban <имя>).

Запуск с этим конфигом:

./TerrariaServer.bin -config serverconfig.txt

Если хочешь переопределить что-то на лету без правки файла, доступны те же параметры флагами командной строки: -port 7778, -players 16, -pass secret123, -worldname MyWorld, -motd "текст" — они имеют приоритет над значениями из serverconfig.txt.

Для более гибкого управления сервером (права, регионы, экономика, античит поверх ванильного) многие держат вместо ванильного дедика TShock — сторонний серверный софт с системой плагинов и правами доступа. Ставится отдельно поверх той же логики, но это уже тема для отдельного разбора, если появится интерес к продвинутой админке.

Проброс порта и firewall

По умолчанию Terraria слушает TCP-порт 7777 — UDP ей не нужен, это частая путаница с играми на других движках. Если на VPS уже стоит ufw, открой порт так:

sudo ufw allow 7777/tcp
sudo ufw status

Если фильтруешь трафик через iptables напрямую:

sudo iptables -A INPUT -p tcp --dport 7777 -j ACCEPT

На арендованном VPS обычно нет NAT-роутера между сервером и интернетом — в отличие от домашнего сервера, где пришлось бы лезть в настройки роутера и пробрасывать порт вручную через его веб-морду. На VPS достаточно открыть порт в firewall самой машины, и всё. Если провайдер даёт отдельную панель с облачным firewall (security groups) — не забудь продублировать правило и там, иначе локальный ufw не спасёт.

Хочешь сменить порт с дефолтного 7777 — меняй значение port= в serverconfig.txt и синхронно открывай новый порт в firewall, иначе клиенты просто не достучатся до сервера.

Автозапуск и управление сервером через systemd

Ручной запуск через SSH-сессию умирает, как только ты закрываешь терминал (если не завернул команду в screen/tmux). Правильный вариант для боевого сервера — systemd-юнит, который держит процесс живым и поднимает его заново после перезагрузки VPS.

Создай юнит:

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

Содержимое:

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

[Service]
Type=simple
User=terraria
WorkingDirectory=/opt/terraria-server/1450/Linux
ExecStart=/opt/terraria-server/1450/Linux/TerrariaServer.bin -config serverconfig.txt
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Замени пользователя terraria на актуального (для отдельного непривилегированного пользователя под игровые сервисы — хорошая практика, но подойдёт и обычный пользователь без root). Дальше:

sudo systemctl daemon-reload
sudo systemctl enable terraria
sudo systemctl start terraria
sudo systemctl status terraria

Логи сервера при таком запуске смотри через:

sudo journalctl -u terraria -f

Минус systemd-подхода — стандартный ExecStart не даёт интерактивной консоли сервера (команды вроде save, kick, ban вводятся обычно прямо в открытую консоль процесса). Для управления запущенным сервером без прямого доступа к stdin обычно либо держат сервер в screen/tmux вместо systemd и подключаются к сессии командой (screen -r terraria), либо используют внешние инструменты для RCON-подобного управления через TShock, где команды доступны через сетевой протокол, а не только локальную консоль.

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

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

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

В 9 случаях из 10 дело в закрытом порте — проверь ufw status и правила облачного firewall у провайдера. Также убедись, что клиент подключается именно на TCP-порт из serverconfig.txt, а не на дефолтный, если ты его менял.

Сколько реально нужно RAM для 10+ игроков?

Для небольшой компании 1 ГБ хватает. При росте до 10+ игроков и большом мире с активным фармом лучше взять 2 ГБ — прямой корреляции "1 игрок = N мегабайт" официально нет, но с запасом жить спокойнее, чем упереться в своп на боевом мире.

Можно ли перенести существующий мир с домашнего компьютера на сервер?

Да — скопируй файл .wld (и опционально .twld для карты) из папки Worlds на своей машине в worldpath на сервере, укажи точный путь в параметре world= конфига и перезапусти сервер.

Как забанить или замьютить игрока?

Через консоль сервера командой ban <имя> (нужен интерактивный доступ к процессу — см. пункт про screen/tmux выше) или через админ-инструменты TShock, если используешь его вместо ванильного дедика.

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

Да, ванильный дедик не обновляется сам — скачивай новый архив с terraria.org (или обнови через steamcmd) и замени файлы, сохранив папку Worlds отдельно перед обновлением на всякий случай.