Questa guida illustra l’installazione di un server Factorio headless utilizzando Docker, basata sull’immagine open-source factoriotools/factorio. L’obiettivo è semplificare la configurazione e l’avvio del server, consentendo di dedicare più tempo al gioco e meno alla risoluzione di problemi tecnici. Verranno fornite configurazioni generali, esempi chiari per ciascun passaggio e istruzioni per personalizzare le impostazioni del server tramite il file server-settings.json.
Prerequisiti
Prima di procedere, assicurarsi di avere:
- Docker Engine e Docker Compose installati sul server.
- Una licenza valida di Factorio per l’uso del server headless.
- Le porte UDP 34197 (e opzionalmente TCP 27015 per RCON) aperte sul firewall.
- Un editor di testo per creare i file di configurazione (
docker-compose.ymle, opzionalmente, un template perserver-settings.json).
Docker Compose
Il file docker-compose.yml qui sotto configura un singolo servizio per il server Factorio. Utilizza la versione 3.8 di Docker Compose e imposta il riavvio automatico (restart: always). Il volume ./factorio:/factorio garantisce la persistenza dei dati, inclusi salvataggi, mod e configurazioni. Le impostazioni del server (come nome, descrizione e password) non sono gestite tramite variabili d’ambiente dirette, ma modificando il file server-settings.json nel volume (vedi sezione “Configurazione del servizio”).
version: '3.8'
services:
factorio:
image: factoriotools/factorio:latest
container_name: factorio
restart: always
ports:
- "34197:34197/udp"
- "27015:27015/tcp" # Opzionale: per RCON
environment:
TZ: Europe/Rome
GENERATE_NEW_SAVE: false # Genera una nuova mappa se true
LOAD_LATEST_SAVE: true # Carica l'ultimo salvataggio
PORT: 34197
volumes:
- ./factorio:/factorioNote:
- L’immagine
:latestutilizza l’ultima versione stabile di Factorio. Per una versione specifica, sostituire con:2.0.0(ad esempio). - La porta UDP 34197 è standard per Factorio; la TCP 27015 è per RCON (Remote Console), utile per la gestione remota.
- Non sono incluse variabili per RCON password, che viene generata automaticamente e salvata in
/factorio/rconpw. Per sicurezza, modificarla manualmente.
Il file .env (opzionale)
Per variabili sensibili come il token Factorio (per aggiornamenti mod), creare un file .env nella stessa posizione del docker-compose.yml:
FACTORIO_TOKEN=il_tuo_token_factorio
FACTORIO_USERNAME=il_tuo_usernameQueste variabili possono essere referenziate nel docker-compose.yml come ${FACTORIO_TOKEN} per abilitare UPDATE_MODS_ON_START: true.
Consiglio: Generare un token sicuro dal sito factorio.com e utilizzarlo solo se necessario per gli aggiornamenti automatici dei mod.
Avvio dei container
Per avviare il container, spostarsi nella directory contenente i file docker-compose.yml (e .env, se utilizzato) ed eseguire:
docker-compose up -dQuesto avvia il servizio in modalità detached. Il primo avvio genera i file di configurazione nel volume ./factorio. Per connettersi al server dal client Factorio, utilizzare l’indirizzo IP del server e la porta 34197.
Dettaglio dei servizi
Il file docker-compose.yml definisce un singolo servizio principale (factorio), responsabile dell’esecuzione del server headless. Le caratteristiche principali sono:
- Avvio del container: La politica di riavvio (
restart: always) garantisce il riavvio automatico in caso di problemi, ideale per ambienti di produzione. - Persistenza dei dati: Il volume
./factorio:/factoriomemorizza salvataggi, mod, log e configurazioni (inclusiserver-settings.jsonemap-settings.json), preservandoli tra riavvii e aggiornamenti. - Variabili d’ambiente supportate: Di seguito, una tabella con le principali variabili configurabili. Queste influenzano l’avvio e la generazione della mappa, ma non le impostazioni del server (gestite via JSON).
| Variabile | Descrizione | Valore predefinito | Note |
|---|---|---|---|
TZ |
Fuso orario del container. | - | Esempio: Europe/Rome. |
GENERATE_NEW_SAVE |
Genera una nuova mappa se non esiste un salvataggio. | false | Impostare su true per una nuova partita; combina con PRESET per preset (es. death-world). |
LOAD_LATEST_SAVE |
Carica l’ultimo salvataggio disponibile. | true | Impostare su false per caricare un salvataggio specifico via SAVE_NAME. |
PORT |
Porta UDP su cui il server ascolta. | 34197 | Modificare la mappatura porte in Docker se diverso dal default. |
RCON_PORT |
Porta TCP per RCON (gestione remota). | 27015 | Opzionale; mappare solo se necessario. |
SAVE_NAME |
Nome del file di salvataggio da caricare/generare. | _autosave1 | Usare con LOAD_LATEST_SAVE: false. |
PRESET |
Preset per la generazione della mappa (se GENERATE_NEW_SAVE: true). |
- | Esempi: default, rail-world, ribbon-world. |
UPDATE_MODS_ON_START |
Aggiorna i mod all’avvio. | false | Richiede USERNAME e TOKEN da factorio.com. |
TOKEN |
Token per aggiornamenti mod. | - | Sensibile; impostare via .env. |
USERNAME |
Username Factorio per aggiornamenti mod. | - | Impostare via .env. |
Per impostazioni avanzate, consultare la documentazione ufficiale .
Configurazione del servizio
Dopo l’avvio iniziale, personalizzare il server modificando i file nel volume ./factorio/config. In particolare:
Modifica di server-settings.json
Il file server-settings.json controlla impostazioni come nome del server, descrizione, password e numero massimo di giocatori. Dopo il primo avvio, arrestare il container (docker-compose down), modificare il file e riavviare (docker-compose up -d).
Esempio di server-settings.json base (personalizzare i valori):
{
"name": "Factorio Super Server",
"description": "Un server Factorio dedicato per amici e avventure industriali.",
"visibility": "lan", // Opzioni: "public", "lan", false
"max_players": 10,
"require_user_verification": true,
"require_user_group_membership_for_joining": false,
"auto_save_interval": 300, // Secondi tra salvataggi automatici
"auto_save_slots": 5, // Numero di slot per salvataggi
"minimum_latency_in_ticks": 0, // Latenza minima per nascondere giocatori
"afk_autokick_interval": 0, // Autokick per inattività (0 = disabilitato)
"password": "5up3r_P4s5w0rd", // Password per accesso (cambiare!)
"allow_commands": "admins-only",
"game_password": "", // Password per comandi
"verify_user_identity": true
}Note:
- Per una configurazione dinamica, creare un template con placeholder (es.
"name": "${SERVER_NAME}") e sovrascrivere l’entrypoint neldocker-compose.ymlper usareenvsubst(vedi documentazione GitHub per esempi). - Assicurarsi che i file nel volume siano di proprietà dell’utente
845(Factorio):sudo chown -R 845:845 ./factorio.
Gestione RCON
Per accedere via RCON, utilizzare tool come rcon-cli o comandi Docker: docker exec -it factorio rcon /players. La password è in ./factorio/rconpw; modificarla per sicurezza.
Aggiunta di mod
Copiare i file mod nella directory ./factorio/mods e riavviare il container. Per aggiornamenti automatici, impostare UPDATE_MODS_ON_START: true con credenziali Factorio.
Note sulla sicurezza
- Password: Utilizzare password complesse per il server e RCON. Non esporre porte inutili (es. rimuovere mappatura RCON se non usata).
- Firewall: Limitare l’accesso alla porta UDP 34197 solo agli IP autorizzati.
- Aggiornamenti: Eseguire regolarmente
docker-compose pullper aggiornare l’immagine e mantenere la sicurezza. - Permessi: Impostare i permessi corretti sul volume per evitare errori di accesso.
Conclusione
Seguendo questa guida, è possibile installare e configurare un server Factorio headless tramite Docker in modo efficiente e persistente. La modifica di server-settings.json offre flessibilità per personalizzazioni avanzate, mentre le variabili d’ambiente semplificano aspetti come la generazione della mappa. Per ulteriori dettagli, consultare la documentazione di factoriotools/factorio-docker
.