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

Установка модов на headless-сервер Factorio через Mod Portal API

Автоматизированная загрузка и обновление модов для headless-сервера Factorio: авторизация через Mod Portal API, скачивание зависимостей и mod-list.json.

Установка модов на headless-сервер Factorio через Mod Portal API

Управление модами на выделенном сервере Factorio без графической оболочки (headless Linux) часто вызывает сложности у администраторов. Ручное скачивание десятков zip-архивов через домашний браузер с последующей передачей по SFTP отнимает много времени, приводит к ошибкам версий и ломает зависимости между модификациями.

Официальный портал модов Wube предоставляет публичный REST API, позволяющий автоматизировать поиск, проверку совместимости и загрузку модификаций прямо из командной строки Linux с помощью curl и jq. В этом руководстве подробно рассмотрена работа с API портала модов, авторизация через сервисный токен и формирование файла mod-list.json.

Получение сервисного токена в player-data.json#

Для скачивания файлов модификаций с официального сервера Wube требуется аутентификация. Загружать файлы анонимно нельзя.

Используйте сервисный токен вашей учётной записи Factorio. Если игра запускалась на сервере или локальном ПК, токен уже сохранён в файле player-data.json:

bash
cat /opt/factorio/player-data.json | grep -E "(service-username|service-token)"

Либо задайте переменные окружения для скриптов автоматизации:

bash
FACTORIO_USER="your_username"
FACTORIO_TOKEN="your_token_from_player_data"

Запрос метаданных мода через Mod Portal API#

Перед загрузкой архива необходимо получить актуальный список релизов, совместимых с вашей версией сервера (например, Factorio 2.0 или 1.1), и имена зависимых модов.

Выполните публичный GET-запрос к API портала (на примере популярного мода Flib):

bash
curl -s "https://mods.factorio.com/api/mods/flib" | jq '.releases[-1] | {version, factorio_version, file_name, download_url, sha1}'

Команда выведет JSON с информацией о последнем стабильном релизе: имя файла архива, поддерживаемую версию базовой игры, контрольную сумму sha1 и относительный путь для скачивания (download_url).

Скачивание архива мода через curl#

Используя полученный URL релиза и учётные данные, скачайте zip-архив напрямую в директорию mods:

bash
MOD_URL="/api/downloads/data/flib_0.15.0.zip"
OUTPUT_FILE="/opt/factorio/mods/flib_0.15.0.zip"

curl -L -f -o "$OUTPUT_FILE" \
  "https://mods.factorio.com${MOD_URL}?username=${FACTORIO_USER}&token=${FACTORIO_TOKEN}"

Обязательно сверьте контрольную сумму скачанного файла перед запуском:

bash
sha1sum "$OUTPUT_FILE"

Параметр curl -L критически важен, так как портал модов выполняет 302-редирект на CDN-хранилище файлов.

Управление активными модами в mod-list.json#

Сервер Factorio определяет, какие именно модификации из папки mods должны загружаться в игровой мир, на основании файла конфигурации mod-list.json.

Создайте или обновите список активных модов с помощью утилиты jq:

bash
cat << 'EOF' | sudo tee /opt/factorio/mods/mod-list.json
{
  "mods": [
    {
      "name": "base",
      "enabled": true
    },
    {
      "name": "flib",
      "enabled": true
    }
  ]
}
EOF

Проверьте корректность синтаксиса JSON:

bash
jq . /opt/factorio/mods/mod-list.json > /dev/null && echo "mod-list.json is valid"

Запустите тестовую проверку сервера Factorio без запуска бесконечной игры:

bash
/opt/factorio/bin/x64/factorio --check-config

Если утилита завершилась без ошибок и вывела Configuration check successful, все зависимости модов разрешены, а сервер готов к запуску многопользовательской сессии.

Для сборки крупных сборок из 50+ модов (Space Age, Krastorio, SE) и автоматического обновления аддонов без ручной возни с токенами администраторы используют панель управления серверами, где управление библиотекой модов Factorio интегрировано в единый веб-интерфейс.

Источники#