Установка игрового сервера Factorio на Linux: различия между версиями
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
Статья переписана по результатам установки на чистой Ubuntu 24.04, добавлены снимки экрана |
||
| Строка 1: | Строка 1: | ||
Инструкция по установке выделенного сервера Factorio на VDS с Ubuntu 24.04. Все команды и снимки экрана сняты с настоящего сервера: инструкция проверена 14 ноября 2026 года на чистой Ubuntu 24.04.4 с сервером версии 2.1.24. | |||
== | == Что понадобится == | ||
* | * VDS с '''Ubuntu 24.04 LTS''' и доступом '''root''' по SSH. | ||
* | * '''Память:''' сервер с новым миром занимает около 400 МБ, с большой базой — несколько гигабайт. Для начала хватит VDS с 2 ГБ. | ||
* | * '''Диск:''' архив сервера — 60 МБ, после распаковки около 300 МБ. Достаточно 2 ГБ свободного места. | ||
* '''Процессор:''' от 1 ядра; Factorio важна скорость одного ядра, а не их число. | |||
Серверная версия игры (headless) скачивается с сайта разработчика бесплатно и без входа в учётную запись. | |||
== 1. Обновите систему == | |||
<pre>sudo apt update && sudo apt upgrade -y</pre> | |||
На свежей системе обновление идёт от 5 минут до получаса. По ходу могут появиться два места, где нужно ваше участие. | |||
'''Окно выбора раскладки клавиатуры.''' Обновление остановится и покажет окно «Configuring keyboard-configuration». Ничего менять не нужно: нажмите '''Enter''', в следующем окне снова '''Enter'''. | |||
<pre>sudo | [[Файл:Ubuntu-apt-keyboard-dialog.png|800px]] | ||
'''Сообщение о новом ядре.''' Если в конце вы видите «Pending kernel upgrade», система обновила ядро и ждёт перезагрузки. | |||
[[Файл:Ubuntu-apt-kernel-reboot.png|800px]] | |||
Перезагрузите сервер и подключитесь снова через минуту: | |||
<pre>sudo reboot</pre> | |||
== 2. Установите нужные пакеты == | |||
<pre>sudo apt install -y wget xz-utils</pre> | |||
== | == 3. Создайте пользователя для сервера == | ||
Игровой сервер не должен работать от root. Создайте для него отдельного пользователя и переключитесь на него: | |||
<pre>sudo useradd -m -s /bin/bash factorio | |||
sudo su - factorio</pre> | |||
Пароль этому пользователю не нужен: входить под ним по SSH никто не будет. | |||
4. | == 4. Скачайте сервер == | ||
<pre>mkdir -p ~/factorio-server | |||
cd ~/factorio-server | |||
wget -O factorio-headless.tar.xz https://factorio.com/get-download/stable/headless/linux64 | |||
tar -xf factorio-headless.tar.xz | |||
cd factorio | |||
./bin/x64/factorio --version</pre> | |||
Ссылка всегда отдаёт последнюю стабильную версию. Последняя команда показывает, какая версия скачалась, — она должна совпадать с версией игры у игроков. | |||
[[Файл:Factorio-linux-download.png|800px]] | |||
== 5. Решите, нужен ли мир с дополнением Space Age == | |||
В серверную версию входит платное дополнение Space Age, и по умолчанию оно включено. На такой сервер смогут зайти только игроки, у которых дополнение куплено. | |||
<pre>nano | |||
'''Если у игроков нет Space Age''' — отключите его до создания мира. Создайте файл со списком модов: | |||
<pre>mkdir -p mods | |||
nano mods/mod-list.json</pre> | |||
<pre>{ | <pre>{ | ||
" | "mods": [ | ||
{"name": "base", "enabled": true}, | |||
{"name": "elevated-rails", "enabled": false}, | |||
{"name": "quality", "enabled": false}, | |||
{"name": "recycler", "enabled": false}, | |||
{"name": "space-age", "enabled": false} | |||
] | |||
}</pre> | }</pre> | ||
== 6. | Сохраните файл (в nano: '''Ctrl+O''', '''Enter''', '''Ctrl+X'''). | ||
'''Если дополнение есть у всех''' — этот шаг пропустите. | |||
== 6. Создайте мир == | |||
<pre>./bin/x64/factorio --create saves/my-world.zip</pre> | |||
Команда создаёт новый мир и завершается словом «Goodbye». Файл мира появляется в каталоге <code>saves</code>. | |||
[[Файл:Factorio-linux-create.png|800px]] | |||
Чтобы перенести на сервер свой мир из одиночной игры, вместо этого положите его файл <code>.zip</code> в каталог <code>saves</code> и в шаге 8 укажите его имя. | |||
== 7. Настройте сервер == | |||
Настройки хранятся в файле <code>server-settings.json</code>. Создайте его из образца и откройте: | |||
< | |||
<pre>cp data/server-settings.example.json data/server-settings.json | |||
nano data/server-settings.json</pre> | |||
Что стоит изменить: | |||
* <code>"name"</code> — название сервера. | |||
<pre>nano | * <code>"game_password"</code> — пароль для входа. Пустые кавычки — вход без пароля. | ||
* <code>"visibility"</code> → <code>"public"</code> — показывать ли сервер в общем списке игры. Для общего списка нужна учётная запись factorio.com: её имя и токен вписываются в поля <code>"username"</code> и <code>"token"</code>. Если учётной записи нет или сервер только для своих, поставьте <code>false</code> — иначе в журнале будет ошибка «Missing token». | |||
* <code>"max_players"</code> — предел числа игроков, 0 — без предела. | |||
* <code>"auto_pause"</code> — ставить игру на паузу, когда на сервере никого нет (по умолчанию <code>true</code>). | |||
* <code>"autosave_interval"</code> — как часто сервер сохраняет мир, в минутах. | |||
После правки проверьте главные строки: | |||
<pre>grep -E '"(name|public|game_password)"' data/server-settings.json</pre> | |||
[[Файл:Factorio-linux-settings.png|800px]] | |||
== 8. Создайте скрипт запуска == | |||
<pre>nano ~/factorio-server/start-server.sh</pre> | |||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
cd /home/factorio/factorio-server/factorio | cd /home/factorio/factorio-server/factorio | ||
./bin/x64/factorio --start-server my-world.zip --server-settings server-settings.json</pre> | exec ./bin/x64/factorio --start-server saves/my-world.zip --server-settings data/server-settings.json</pre> | ||
Сделайте его исполняемым и вернитесь к root: | |||
<pre>chmod +x ~/factorio-server/start-server.sh | |||
exit</pre> | |||
== 9. Настройте автозапуск == | |||
<pre>sudo nano /etc/systemd/system/factorio-server.service</pre> | <pre>sudo nano /etc/systemd/system/factorio-server.service</pre> | ||
Вставьте: | |||
<pre>[Unit] | <pre>[Unit] | ||
Description=Factorio Dedicated Server | Description=Factorio Dedicated Server | ||
| Строка 116: | Строка 138: | ||
ExecStart=/home/factorio/factorio-server/start-server.sh | ExecStart=/home/factorio/factorio-server/start-server.sh | ||
Restart=always | Restart=always | ||
RestartSec=5 | |||
[Install] | [Install] | ||
WantedBy=multi-user.target</pre> | WantedBy=multi-user.target</pre> | ||
== 10. Запустите сервер и проверьте его == | |||
<pre>sudo systemctl daemon-reload | <pre>sudo systemctl daemon-reload | ||
sudo systemctl enable factorio-server | sudo systemctl enable factorio-server | ||
sudo systemctl start factorio-server</pre> | sudo systemctl start factorio-server | ||
sudo systemctl status factorio-server --no-pager -n 0</pre> | |||
Состояние должно быть '''active (running)''': | |||
[[Файл:Factorio-linux-service-status.png|800px]] | |||
Сервер готов, когда в журнале есть строка «Hosting game at IP ADDR», а порт 34197 занят. Там же видно, какие моды загружены: если вы отключали Space Age, в списке будет только <code>base</code>. | |||
<pre>sudo journalctl -u factorio-server -o cat | grep -E "Loading mod .*\(data.lua\)|Hosting game" | tail -4 | |||
sudo ss -uln | grep 34197</pre> | |||
[[Файл:Factorio-linux-journal.png|800px]] | |||
Управление службой: | |||
<pre>sudo systemctl stop factorio-server # остановить (мир сохраняется) | |||
sudo systemctl restart factorio-server # перезапустить | |||
sudo journalctl -u factorio-server -f # смотреть журнал, выход — Ctrl+C</pre> | |||
== 11. Откройте порт в файрволе == | |||
'''Внимание:''' сначала разрешите SSH и только потом включайте файрвол. Иначе связь с сервером оборвётся. Если SSH у вас на нестандартном порту, вместо первой команды выполните <code>sudo ufw allow НОМЕР_ПОРТА/tcp</code>. | |||
<pre>sudo ufw allow OpenSSH | |||
sudo ufw allow 34197/udp | |||
sudo ufw enable</pre> | |||
Если появится вопрос «Command may disrupt existing ssh connections. Proceed with operation (y|n)?», ответьте '''y'''. Проверьте результат: | |||
<pre>sudo ufw status</pre> | |||
[[Файл:Factorio-linux-ufw.png|800px]] | |||
== 12. Зайдите на сервер == | |||
В игре выберите сетевую игру, подключение по адресу и введите <code>IP_СЕРВЕРА:34197</code>. Пошагово со снимками — в статье [[Как зайти на сервер Factorio]]. | |||
== Обновление сервера == | |||
После выхода новой версии игры остановите сервер, скачайте свежий архив поверх старого и запустите снова: | |||
<pre>sudo systemctl stop factorio-server | |||
sudo -u factorio bash -c "cd /home/factorio/factorio-server && wget -O factorio-headless.tar.xz https://factorio.com/get-download/stable/headless/linux64 && tar -xf factorio-headless.tar.xz" | |||
sudo systemctl start factorio-server</pre> | |||
Миры, настройки и список модов при этом сохраняются. Если загрузка архива остановилась на полпути (при проверке такое случилось один раз), прервите её клавишами '''Ctrl+C''' и повторите вторую команду. | |||
== Где лежат миры и моды == | |||
* Миры и автосохранения: <code>/home/factorio/factorio-server/factorio/saves/</code> | |||
* Моды: <code>/home/factorio/factorio-server/factorio/mods/</code> — сюда кладутся архивы модов с портала [https://mods.factorio.com mods.factorio.com]. Набор модов на сервере и у игроков должен совпадать. | |||
== Если что-то пошло не так == | |||
{| class="wikitable" | |||
! Что видите !! Причина и решение | |||
|- | |||
| В журнале «Matching server connection failed: … Missing token» || В настройках включён общий список (<code>"public": true</code>), но не указаны имя и токен учётной записи factorio.com. Впишите их или поставьте <code>"public": false</code>. Сам сервер при этой ошибке работает. | |||
|- | |||
| Игроки без Space Age не могут зайти || Мир создан с дополнением. Отключите его по шагу 5 и создайте новый мир по шагу 6. | |||
|- | |||
| Служба в состоянии «failed» || Посмотрите причину: <code>sudo journalctl -u factorio-server -n 50 --no-pager</code>. Чаще всего это опечатка в имени файла мира или ошибка в <code>server-settings.json</code> (лишняя или пропущенная запятая). | |||
|- | |||
| После обновления игры игроки не могут подключиться || Версия сервера отличается от версии игры. Обновите сервер. | |||
|- | |||
| Сервер запущен, но зайти не удаётся || Проверьте, что порт открыт (<code>sudo ufw status</code>): Factorio использует порт 34197 по протоколу UDP. | |||
|} | |||
'''Для размещения игровых серверов рекомендуем услуги [https://ark-hoster.ru ARK-HOSTER.RU]:''' | |||
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' — для небольших и средних серверов | |||
* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' — для высоконагруженных игровых серверов | |||
Текущая версия от 18:15, 14 ноября 2026
Инструкция по установке выделенного сервера Factorio на VDS с Ubuntu 24.04. Все команды и снимки экрана сняты с настоящего сервера: инструкция проверена 14 ноября 2026 года на чистой Ubuntu 24.04.4 с сервером версии 2.1.24.
Что понадобится
- VDS с Ubuntu 24.04 LTS и доступом root по SSH.
- Память: сервер с новым миром занимает около 400 МБ, с большой базой — несколько гигабайт. Для начала хватит VDS с 2 ГБ.
- Диск: архив сервера — 60 МБ, после распаковки около 300 МБ. Достаточно 2 ГБ свободного места.
- Процессор: от 1 ядра; Factorio важна скорость одного ядра, а не их число.
Серверная версия игры (headless) скачивается с сайта разработчика бесплатно и без входа в учётную запись.
1. Обновите систему
sudo apt update && sudo apt upgrade -y
На свежей системе обновление идёт от 5 минут до получаса. По ходу могут появиться два места, где нужно ваше участие.
Окно выбора раскладки клавиатуры. Обновление остановится и покажет окно «Configuring keyboard-configuration». Ничего менять не нужно: нажмите Enter, в следующем окне снова Enter.
Сообщение о новом ядре. Если в конце вы видите «Pending kernel upgrade», система обновила ядро и ждёт перезагрузки.
Перезагрузите сервер и подключитесь снова через минуту:
sudo reboot
2. Установите нужные пакеты
sudo apt install -y wget xz-utils
3. Создайте пользователя для сервера
Игровой сервер не должен работать от root. Создайте для него отдельного пользователя и переключитесь на него:
sudo useradd -m -s /bin/bash factorio sudo su - factorio
Пароль этому пользователю не нужен: входить под ним по SSH никто не будет.
4. Скачайте сервер
mkdir -p ~/factorio-server cd ~/factorio-server wget -O factorio-headless.tar.xz https://factorio.com/get-download/stable/headless/linux64 tar -xf factorio-headless.tar.xz cd factorio ./bin/x64/factorio --version
Ссылка всегда отдаёт последнюю стабильную версию. Последняя команда показывает, какая версия скачалась, — она должна совпадать с версией игры у игроков.
5. Решите, нужен ли мир с дополнением Space Age
В серверную версию входит платное дополнение Space Age, и по умолчанию оно включено. На такой сервер смогут зайти только игроки, у которых дополнение куплено.
Если у игроков нет Space Age — отключите его до создания мира. Создайте файл со списком модов:
mkdir -p mods nano mods/mod-list.json
{
"mods": [
{"name": "base", "enabled": true},
{"name": "elevated-rails", "enabled": false},
{"name": "quality", "enabled": false},
{"name": "recycler", "enabled": false},
{"name": "space-age", "enabled": false}
]
}
Сохраните файл (в nano: Ctrl+O, Enter, Ctrl+X).
Если дополнение есть у всех — этот шаг пропустите.
6. Создайте мир
./bin/x64/factorio --create saves/my-world.zip
Команда создаёт новый мир и завершается словом «Goodbye». Файл мира появляется в каталоге saves.
Чтобы перенести на сервер свой мир из одиночной игры, вместо этого положите его файл .zip в каталог saves и в шаге 8 укажите его имя.
7. Настройте сервер
Настройки хранятся в файле server-settings.json. Создайте его из образца и откройте:
cp data/server-settings.example.json data/server-settings.json nano data/server-settings.json
Что стоит изменить:
"name"— название сервера."game_password"— пароль для входа. Пустые кавычки — вход без пароля."visibility"→"public"— показывать ли сервер в общем списке игры. Для общего списка нужна учётная запись factorio.com: её имя и токен вписываются в поля"username"и"token". Если учётной записи нет или сервер только для своих, поставьтеfalse— иначе в журнале будет ошибка «Missing token»."max_players"— предел числа игроков, 0 — без предела."auto_pause"— ставить игру на паузу, когда на сервере никого нет (по умолчаниюtrue)."autosave_interval"— как часто сервер сохраняет мир, в минутах.
После правки проверьте главные строки:
grep -E '"(name|public|game_password)"' data/server-settings.json
8. Создайте скрипт запуска
nano ~/factorio-server/start-server.sh
#!/bin/bash cd /home/factorio/factorio-server/factorio exec ./bin/x64/factorio --start-server saves/my-world.zip --server-settings data/server-settings.json
Сделайте его исполняемым и вернитесь к root:
chmod +x ~/factorio-server/start-server.sh exit
9. Настройте автозапуск
sudo nano /etc/systemd/system/factorio-server.service
Вставьте:
[Unit] Description=Factorio Dedicated Server After=network.target [Service] Type=simple User=factorio WorkingDirectory=/home/factorio/factorio-server/factorio ExecStart=/home/factorio/factorio-server/start-server.sh Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
10. Запустите сервер и проверьте его
sudo systemctl daemon-reload sudo systemctl enable factorio-server sudo systemctl start factorio-server sudo systemctl status factorio-server --no-pager -n 0
Состояние должно быть active (running):
Сервер готов, когда в журнале есть строка «Hosting game at IP ADDR», а порт 34197 занят. Там же видно, какие моды загружены: если вы отключали Space Age, в списке будет только base.
sudo journalctl -u factorio-server -o cat | grep -E "Loading mod .*\(data.lua\)|Hosting game" | tail -4 sudo ss -uln | grep 34197
Управление службой:
sudo systemctl stop factorio-server # остановить (мир сохраняется) sudo systemctl restart factorio-server # перезапустить sudo journalctl -u factorio-server -f # смотреть журнал, выход — Ctrl+C
11. Откройте порт в файрволе
Внимание: сначала разрешите SSH и только потом включайте файрвол. Иначе связь с сервером оборвётся. Если SSH у вас на нестандартном порту, вместо первой команды выполните sudo ufw allow НОМЕР_ПОРТА/tcp.
sudo ufw allow OpenSSH sudo ufw allow 34197/udp sudo ufw enable
Если появится вопрос «Command may disrupt existing ssh connections. Proceed with operation (y|n)?», ответьте y. Проверьте результат:
sudo ufw status
12. Зайдите на сервер
В игре выберите сетевую игру, подключение по адресу и введите IP_СЕРВЕРА:34197. Пошагово со снимками — в статье Как зайти на сервер Factorio.
Обновление сервера
После выхода новой версии игры остановите сервер, скачайте свежий архив поверх старого и запустите снова:
sudo systemctl stop factorio-server sudo -u factorio bash -c "cd /home/factorio/factorio-server && wget -O factorio-headless.tar.xz https://factorio.com/get-download/stable/headless/linux64 && tar -xf factorio-headless.tar.xz" sudo systemctl start factorio-server
Миры, настройки и список модов при этом сохраняются. Если загрузка архива остановилась на полпути (при проверке такое случилось один раз), прервите её клавишами Ctrl+C и повторите вторую команду.
Где лежат миры и моды
- Миры и автосохранения:
/home/factorio/factorio-server/factorio/saves/ - Моды:
/home/factorio/factorio-server/factorio/mods/— сюда кладутся архивы модов с портала mods.factorio.com. Набор модов на сервере и у игроков должен совпадать.
Если что-то пошло не так
| Что видите | Причина и решение |
|---|---|
| В журнале «Matching server connection failed: … Missing token» | В настройках включён общий список ("public": true), но не указаны имя и токен учётной записи factorio.com. Впишите их или поставьте "public": false. Сам сервер при этой ошибке работает.
|
| Игроки без Space Age не могут зайти | Мир создан с дополнением. Отключите его по шагу 5 и создайте новый мир по шагу 6. |
| Служба в состоянии «failed» | Посмотрите причину: sudo journalctl -u factorio-server -n 50 --no-pager. Чаще всего это опечатка в имени файла мира или ошибка в server-settings.json (лишняя или пропущенная запятая).
|
| После обновления игры игроки не могут подключиться | Версия сервера отличается от версии игры. Обновите сервер. |
| Сервер запущен, но зайти не удаётся | Проверьте, что порт открыт (sudo ufw status): Factorio использует порт 34197 по протоколу UDP.
|
Для размещения игровых серверов рекомендуем услуги ARK-HOSTER.RU:
- VPS/VDS серверы — для небольших и средних серверов
- Выделенные серверы — для высоконагруженных игровых серверов