Как поднять сервер Factorio: пошаговая инструкция
Есть два способа поиграть в Factorio с друзьями: либо один из вас держит игру запущенной и раздаёт хостинг через клиент, либо где-то крутится отдельный headless-сервер, который живёт своей жизнью независимо от того, кто онлайн. Второй вариант почти всегда лучше — фабрика не встанет посреди ночной смены, если хост-игрок решит выйти поспать, а сам сервер жрёт заметно меньше ресурсов, потому что не рисует картинку. Дальше — как поднять такой сервер на VPS, от первой закачки до автозапуска после перезагрузки.
Содержание
Что понадобится и системные требования
Factorio — игра не про графику, а про пересчёт огромного количества сущностей (белтов, инсёртеров, поездов, жидкостей) каждый тик, поэтому по CPU сервер довольно прожорливый на поздних этапах, а вот по памяти — скромный.
Минимум для старта:
- 2 ГБ RAM — хватит на небольшую базу и 2-4 игроков на ранней стадии.
- 1-2 vCPU — Factorio однопоточный по основной симуляции, так что важнее частота ядра, а не их число.
- 1-2 ГБ диска под саму игру и сейвы (плюс запас под автосейвы, если храните историю).
- Linux x86_64 — headless-сборка официально идёт под Linux и Windows, но на VPS почти всегда ставят Linux.
Если база разрастётся до тысяч гидравлических насосов и составов на десятки вагонов, 2 ГБ станет мало — с ростом карты закладывайте 4 ГБ и выше, особенно если планируете моды вроде Space Exploration или Krastorio 2, которые сильно увеличивают сложность симуляции.
Скачивание headless-версии сервера
Официальный headless-сервер Factorio распространяется бесплатно с сайта разработчиков, отдельно от Steam-версии клиента, и не требует лицензии для запуска самого сервера (лицензия нужна игрокам, которые подключаются).
Заходим на VPS по SSH и качаем архив:
mkdir -p ~/factorio-server
cd ~/factorio-server
wget https://factorio.com/get-download/stable/headless/linux64 -O factorio-headless.tar.xz
Распаковываем:
tar -xJf factorio-headless.tar.xz
cd factorio
Внутри окажется папка bin/x64/factorio — сам исполняемый файл, data/ с базовыми ассетами и config/ для настроек. Версию headless-сборки желательно держать той же, что и у клиентов игры — Factorio строго проверяет совпадение версий при подключении, и даже минорное расхождение (например, 2.0.44 против 2.0.45) не даст зайти на сервер.
Проверить версию можно так:
./bin/x64/factorio --version
Поднять сервер Factorio за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверСоздание карты
Прежде чем запускать сервер, нужен файл сохранения (сейв) с картой. Создать его можно прямо через headless-бинарник, без графического клиента:
./bin/x64/factorio --create ~/factorio-server/factorio/saves/base.zip
Это сгенерирует карту со стандартными настройками генерации мира. Если нужны кастомные параметры — размер руды, частота нефти, враждебность биттеров и так далее — сначала подготовьте JSON с настройками карты (map-gen-settings.json и map-settings.json, их можно вытащить из клиентской игры через меню создания игры → "Экспорт в файл настроек карты") и передайте флагами:
./bin/x64/factorio --create ~/factorio-server/factorio/saves/base.zip \
--map-gen-settings map-gen-settings.json \
--map-settings map-settings.json
Дальше сервер запускается уже с готовым сейвом, а не пересоздаёт мир каждый раз — команда --create нужна только один раз, при инициализации.
Настройка server-settings.json
Конфиг сервера лежит в data/server-settings.example.json — скопируйте его в рабочий файл:
cp data/server-settings.example.json data/server-settings.json
Открываем и правим ключевые поля:
{
"name": "Моя фабрика на MAATRIX",
"description": "Дружелюбный сервер, вход по паролю",
"tags": ["survival", "ru"],
"max_players": 8,
"visibility": {
"public": false,
"lan": true
},
"username": "",
"password": "supersecret123",
"token": "",
"game_password": "supersecret123",
"require_user_verification": true,
"max_upload_slots": 5,
"auto_pause": false,
"autosave_interval": 10,
"autosave_slots": 5,
"afk_autokick_interval": 0,
"auto_pause_when_players_connect": false
}
Что важно из этого:
visibility.public—true, если хотите, чтобы сервер появился в общем списке серверов Factorio (потребуетusername/tokenот аккаунта factorio.com для авторизации в матчмейкинге). Для приватной игры с друзьями оставляйтеfalseи подключайтесь по прямому IP.game_password— пароль для входа игроков. Без него на публично видимый сервер может зайти кто угодно.require_user_verification— проверка через Factorio-аккаунт, отсекает пиратские копии и часть читеров.autosave_interval— интервал автосейвов в минутах. 10 минут — разумный баланс между сохранностью прогресса и нагрузкой на диск при большой карте.max_players— 0 означает без ограничения.
Запуск сервера и проброс порта
Базовый запуск с указанием сейва и конфига:
./bin/x64/factorio --start-server ~/factorio-server/factorio/saves/base.zip \
--server-settings data/server-settings.json
По умолчанию сервер слушает UDP-порт 34197. Если хотите другой порт (например, если на VPS уже занят стандартный):
./bin/x64/factorio --start-server ~/factorio-server/factorio/saves/base.zip \
--server-settings data/server-settings.json \
--port 34198
Полезные дополнительные флаги:
--rcon-port 27015и--rcon-password mypassword— включает RCON для удалённого администрирования (полезно для ботов статистики или интеграции с Discord).--server-whitelist whitelist.jsonвместе с--use-server-whitelist true— жёсткий белый список игроков вместо пароля.--console-log console.log— писать консоль сервера в отдельный лог-файл, удобно для дебага крашей.
Если сервер запустился нормально, в консоли пойдут строки вида Hosting game и цикл тиков — значит, симуляция крутится и можно подключаться.
Теперь про сетевую часть. Сервер использует UDP 34197 (или тот, что указали флагом --port). Это единственный порт, который нужен для игры — RCON на отдельном порту нужен только если вы его включали.
Если VPS за NAT (редко, но бывает у некоторых домашних роутеров или отдельных облачных конфигураций) — пробросьте порт на роутере в разделе Port Forwarding: протокол UDP, порт 34197, на внутренний IP машины с сервером.
На самой VPS чаще всего достаточно открыть порт в файрволе. Для ufw:
sudo ufw allow 34197/udp
Для firewalld:
sudo firewall-cmd --permanent --add-port=34197/udp
sudo firewall-cmd --reload
Если провайдер даёт отдельную панель сетевых правил (Security Groups в облаке, файрвол в панели хостинга) — проверьте и там, иначе локальные правила ufw ничего не решат: трафик срежется раньше, на уровне облака.
Проверить, что порт реально слушается, можно с самого сервера:
ss -uln | grep 34197
Игроки подключаются через Play → Multiplayer → Connect to address, указывая IP-сервера:порт (порт можно не писать, если стандартный 34197).
Автозапуск через systemd
Ручной запуск в терминале умирает вместе с сессией SSH, если не обернуть его в screen/tmux или системный сервис. Второе надёжнее — сервер переживёт перезагрузку VPS сам, без вашего участия.
Создаём unit-файл:
sudo nano /etc/systemd/system/factorio.service
Содержимое (замените youruser на реального пользователя, от которого крутится сервер — не root):
[Unit]
Description=Factorio headless server
After=network.target
[Service]
Type=simple
User=youruser
WorkingDirectory=/home/youruser/factorio-server/factorio
ExecStart=/home/youruser/factorio-server/factorio/bin/x64/factorio \
--start-server /home/youruser/factorio-server/factorio/saves/base.zip \
--server-settings /home/youruser/factorio-server/factorio/data/server-settings.json
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Включаем и запускаем:
sudo systemctl daemon-reload
sudo systemctl enable factorio
sudo systemctl start factorio
Смотреть логи и статус:
sudo systemctl status factorio
sudo journalctl -u factorio -f
Restart=on-failure вернёт сервер в строй, если он вдруг упадёт (например, из-за бага в моде), а enable гарантирует автозапуск при ребуте VPS — не нужно каждый раз заходить по SSH и поднимать процесс руками.
Обновление и бэкапы
Factorio регулярно выпускает патчи, и версия сервера обязана совпадать с версией у игроков — старая привычка "работает и ладно" тут не сработает, если Steam обновит клиенты автоматически, а сервер останется на старой сборке.
Обновление headless-сервера — это просто замена бинарника на новую версию с сайта factorio.com, тем же способом, что и при первой установке. Перед обновлением обязательно остановите сервис:
sudo systemctl stop factorio
# скачать и распаковать новую версию поверх старой папки factorio/
sudo systemctl start factorio
Бэкапы сейвов — отдельная привычка, которую стоит завести сразу, а не после первого краша диска. Простой вариант — cron-задача, копирующая папку saves/ куда-то за пределы самой VPS:
crontab -e
0 */6 * * * tar -czf /home/youruser/backups/factorio-$(date +\%Y\%m\%d-\%H\%M).tar.gz -C /home/youruser/factorio-server/factorio saves/
Это создаёт архив сейвов каждые 6 часов. Держите бэкапы не только на самой VPS, но и где-то ещё (облачное хранилище, другой сервер) — локальный бэкап не спасёт, если ляжет весь диск целиком.
Поднять сервер Factorio за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер запустился, но игроки не могут подключиться.
Почти всегда это файрвол — либо не пробросили UDP 34197 на роутере, либо облачный провайдер блокирует порт на уровне Security Group отдельно от ufw. Проверьте ss -uln | grep 34197 на сервере и попробуйте телнетом/nc снаружи.
Можно ли поставить моды на сервер?
Да — кладёте .zip-файлы модов в папку mods/ рядом с saves/ и добавляете mod-list.json с перечнем включённых модов. Версии модов на сервере и у клиентов должны совпадать, иначе при подключении Factorio попросит их синхронизировать или откажет в коннекте.
Сколько игроков потянет сервер на 2 ГБ RAM?
На старте карты — 4-6 человек спокойно. По мере роста базы (сотни составов, крафтовые цепочки на десятки уровней) нагрузка растёт нелинейно, и лучше заранее запланировать апгрейд RAM, а не ждать, пока тикрейт начнёт проседать под вечер выходного дня.
Как сменить карту, не теряя старый сейв?
Просто создайте новый файл через --create с другим именем и укажите его в --start-server (или в конфиге сервиса). Старый .zip при этом никуда не денется — сможете вернуться к нему в любой момент.
Нужен ли Steam-аккаунт для headless-сервера?
Нет, сама headless-сборка бесплатна и работает без Steam. Лицензия Factorio нужна только у игроков, которые подключаются к серверу через клиент.