When launching a dedicated Factorio headless server configured with complex overhaul modpacks (such as Space Exploration, Krastorio 2, or customized 2.0 expansions), administrators often encounter an immediate connection blocker: the mod packages match byte-for-byte, yet joining players receive a hard rejection: Mod settings mismatch or Cannot join - different mod startup settings.
In this practical guide, we examine the lifecycle of mod settings in Factorio, the internal role of mod-settings.dat, how to migrate configured settings from a desktop client to a headless server, and how to verify prototype checksum parity during startup.
Hierarchy of Factorio Mod Settings: Startup, Map, and Player#
Factorio partitions mod parameters into three distinct operational tiers:
- Startup Settings: Define prototype structures, entity recipes, fluid mechanics, and tech requirements. These are loaded before map generation and are persisted inside the binary file
mods/mod-settings.dat. - Map Settings: Runtime gameplay parameters (biter expansion rates, peaceful mode toggles) that live directly inside the
level.datfile within each.zipsave archive. - Per-Player Settings: Graphical UI overlays, alerts, and client-side rendering options unique to each client.
A discrepancy in even a single startup parameter causes prototype divergence, making lockstep simulation between client and server mathematically impossible.
Why Mod Settings Mismatch Rejection Occurs#
When a headless Factorio server starts without a mods/mod-settings.dat file in its mods/ directory, the engine generates default values dictated by the mod authors.
If an administrator customized settings via the local GUI client on their desktop (for example, adjusting resource richness multipliers or tweaking inventory dimensions), the local machine persists those tweaks in its own mod-settings.dat. When connecting, the server detects divergent prototype definitions and rejects the handshake.
Inspect whether a startup settings binary exists in your server installation:
ls -la /opt/factorio/mods/mod-settings.dat
If the file is absent, the headless server is running on unmanaged default settings.
Transferring and Synchronizing the mod-settings.dat File#
The most reliable synchronization workflow is configuring mod variables inside your desktop Factorio client and transferring the generated mod-settings.dat directly to the server.
Locate the file on your local machine:
- Linux:
~/.factorio/mods/mod-settings.dat - Windows:
%appdata%\Factorio\mods\mod-settings.dat
Transfer the file to your remote server via scp:
scp ~/.factorio/mods/mod-settings.dat user@your-server-ip:/tmp/
Move the file into the server's mods/ directory and assign proper service user ownership:
sudo mv /tmp/mod-settings.dat /opt/factorio/mods/mod-settings.dat
sudo chown factorio:factorio /opt/factorio/mods/mod-settings.dat
sudo chmod 644 /opt/factorio/mods/mod-settings.dat
Service Launch and Validating Mod Checksums#
Restart the Factorio headless systemd daemon:
sudo systemctl restart factorio && sudo journalctl -u factorio -n 30 --no-pager
Audit prototype initialization logs within factorio-current.log:
grep -E "Loading mod settings|Checksum of" /opt/factorio/factorio-current.log
Log lines indicating Loading mod settings: ... followed by consistent prototype checksum strings (Checksum of base: ...) verify that the headless instance has loaded your binary parameters. Players with matching client configurations can now connect without settings mismatch prompts.
If you are looking to deploy dedicated Factorio Space Age instances with one-click modpack synchronization, automated world snapshots, and zero UPS degradation, dependable Factorio server hosting provides specialized infrastructure tuned for large-scale multi-surface factories.




