Выделенный headless-сервер Factorio на базе операционной системы Linux Ubuntu предоставляет максимальную производительность для автоматизации фабрик любого масштаба. В отличие от запуска игры через графический интерфейс Steam, headless-версия не расходует ресурсы видеокарты, оптимизирована для многопоточного выполнения симуляции на серверных процессорах и идеально подходит для непрерывной круглосуточной работы.
В этой статье мы рассмотрим развёртывание официального архива Factorio на Ubuntu 22.04/24.04, создание генерации мира, настройку сетевой безопасности и запуск через отказоустойчивую службу systemd с корректной обработкой сигналов завершения.
Создание изолированного пользователя и загрузка архива#
Безопасность Linux-сервера требует запуска сторонних сетевых демонов от непривилегированного пользователя. Создадим системного пользователя factorio с заблокированной командной оболочкой и домашней папкой /opt/factorio:
sudo useradd -r -m -d /opt/factorio -s /usr/sbin/nologin factorio && sudo apt update && sudo apt install -y curl tar xz-utils
Загрузите актуальную стабильную версию headless-сервера с официального сайта Wube Software и распакуйте архив:
cd /tmp && curl -L https://www.factorio.com/get-download/stable/headless/linux64 -o factorio_headless.tar.xz && sudo tar -xf factorio_headless.tar.xz -C /opt/ && sudo chown -R factorio:factorio /opt/factorio
Генерация нового мира и создание конфигурации#
Перед первым запуском сервера необходимо создать файл сохранения (мир), в котором будет развиваться фабрика. Выполните генерацию от имени пользователя factorio:
sudo -u factorio /opt/factorio/bin/x64/factorio --create /opt/factorio/saves/my-world.zip
Сервер создаст файл /opt/factorio/saves/my-world.zip. Далее скопируйте шаблон настроек сервера из директории data/server-settings.example.json в config/server-settings.json, где можно указать название фабрики, пароль для подключения и интервал автосохранений (autosave_interval).
Настройка фаервола для сетевых подключений#
Factorio использует собственный сетевой протокол обмена пакетами состояний поверх UDP. Стандартный игровой порт — 34197. Разрешите входящий трафик в сетевом фильтре UFW:
sudo ufw allow 34197/udp
Если вы хотите запускать многопользовательские миры Factorio вместе с расширением Space Age без ручной работы в командной строке Linux, специализированный хостинг серверов Factorio обеспечивает быструю установку модов из Mod Portal, автоматическое резервное копирование и веб-консоль управления.
Написание юнита автозапуска systemd с корректной остановкой#
Важнейшая часть настройки службы Factorio — обработка сигнала завершения. Если завершить процесс командой SIGKILL, сервер потеряет несохранённый прогресс фабрики. Сигнал SIGINT (Ctrl+C) заставляет Factorio штатно сохранить активный мир на диск перед выходом.
Создайте конфигурационный файл службы /etc/systemd/system/factorio.service:
[Unit]
Description=Factorio Headless Dedicated Server
After=network.target
[Service]
Type=simple
User=factorio
Group=factorio
WorkingDirectory=/opt/factorio
ExecStart=/opt/factorio/bin/x64/factorio --start-server /opt/factorio/saves/my-world.zip --server-settings /opt/factorio/config/server-settings.json
ExecStop=/bin/kill -s INT $MAINPID
Restart=on-failure
RestartSec=15s
TimeoutStopSec=45
[Install]
WantedBy=multi-user.target
Зарегистрируйте созданный юнит в подсистеме systemd, добавьте его в автозапуск при перезагрузке сервера и запустите процесс:
sudo systemctl daemon-reload && sudo systemctl enable --now factorio && sudo systemctl status factorio
Теперь фабрика функционирует в фоновом режиме. Вы можете отслеживать журнал событий и подключения игроков с помощью системной команды journalctl -u factorio -f.




