Migrating a multiplayer Factorio dedicated server to a new VPS or redeploying an existing game world often springs a frustrating surprise on automation teams: after connecting to the newly deployed host, players find their personal blueprint books intact, yet shared base designs, balancer arrays, and railway junctions have completely disappeared from group access. Teams frequently assume save corruption or cloud desynchronization has occurred.
The root cause lies in Factorio's fundamental architectural separation of blueprint storage tiers: client-side personal blueprints and world-bound game blueprints reside in entirely distinct data containers. Understanding how each tier is stored and synchronized allows seamless server transitions without stranding critical factory schematics.
Blueprint Storage Tiers: Client Library vs World-Bound Blueprints#
In Factorio, the blueprint library (accessed via the default B hotkey) is bifurcated into two tabs featuring independent lifecycles:
- «My Blueprints» — the player's private client library. Stored locally on the user's workstation inside the binary file
blueprint-storage.datwithin the application directory (~/.factorio/on Linux or%APPDATA%\Factorioon Windows). These blueprints are never automatically uploaded to the server or shared with fellow engineers. - «Game Blueprints» — the collective team repository. These schematics are saved directly inside the server's world archive (
.zip) and synchronized across all active participants in real time.
Prior to performing migration work or moving save files, backing up the client-side blueprint repository prevents accidental overwrite or desynchronization issues:
cp ~/.factorio/blueprint-storage.dat ~/.factorio/blueprint-storage.dat.bak
ls -lh ~/.factorio/blueprint-storage.dat*
Because blueprint-storage.dat utilizes Factorio's proprietary binary serialization format, manual modification with text editors is unsupported.
Embedding Blueprints into the World Archive Before Migration#
If administrators or teammates stored critical production books exclusively under their local «My Blueprints» tab, moving the world save to a new server renders those designs inaccessible whenever the original author is offline. To ensure operational blueprints survive migration and remain accessible to any team member, they must be explicitly placed into the «Game Blueprints» tab prior to exporting the map.
Once blueprints reside under «Game Blueprints» and the game is saved, the dedicated server bundles them directly into the level.dat binary header of the save archive. Operators can verify archive integrity without extracting the contents:
unzip -l /opt/factorio/saves/megabase-multiplayer.zip | grep -E "level\.dat|blueprint"
The presence of level.dat confirms that save metadata, including the shared game blueprint registry, remains intact.
Save Export and Mod Dependency Parity#
On a production Factorio headless server, generating consistent backups requires temporarily halting the background service. Exporting a save archive while an active tick or background autosave routine is executing risks generating an unrecoverable half-written archive.
Stop the service daemon and package both the world save and the accompanying modifications into a single archive:
systemctl stop factorio.service
tar -czvf /opt/factorio/backups/factorio-save-export-$(date +%F).tar.gz /opt/factorio/saves/megabase-multiplayer.zip /opt/factorio/mods/
Synchronizing the mods/ directory alongside the save archive is critical. If blueprints reference signals, circuit combinators, or production machinery from overhaul mods (such as Space Exploration or Krastorio 2), importing those blueprints on a host with mismatched or missing mod versions results in red «Unknown entity» placeholders and prevents automated construction robots from placing ghost structures.
Verify mod configuration parity between the source and target environments prior to launch:
diff -u /opt/factorio-source/mods/mod-list.json /opt/factorio-target/mods/mod-list.json
A clean, empty diff output confirms full alignment of the enabled mod catalog.
Target Deployment, Permissions Audit, and Access Verification#
Once the world save reaches the target server, place the archive in the saves/ directory. Factorio headless daemons generally operate under a dedicated unprivileged system account (factorio), requiring ownership validation before system initialization:
chown -R factorio:factorio /opt/factorio/saves/
systemctl start factorio.service
systemctl status factorio.service --no-pager
Once the server reports active execution, any connected player can press B and navigate to the «Game Blueprints» tab. All transferred books and single schematics will appear ready for copying into local libraries or immediate placement by construction networks.
To maintain uncompromising multiplayer tick rates and ensure rapid state synchronization for heavy factory layouts, host your server on a high-performance gaming cloud backed by low-latency NVMe storage.
References#
- Factorio Official Wiki on Blueprint Management: https://wiki.factorio.com/Blueprint
- Multiplayer Dedicated Server Administration Guide: https://wiki.factorio.com/Multiplayer
- Factorio Application Directory Structure Reference: https://wiki.factorio.com/Application_directory




