To install mods on a Factorio server, download them from the in-game Mod Portal or the official Factorio Mod Portal, place the mod ZIP files in the server instance’s mods directory, and launch the save with the headless server. Every connected player must run the same Factorio build and the exact mod versions enabled by the server. The simplest multiplayer workflow is to let clients accept Sync mods with server, which downloads and enables the server’s set automatically. For a file-managed dedicated server, you remain responsible for dependencies, startup settings, backups, and network access.
What do you need before installing Factorio mods on a server?
Prepare the server, the save, and a recorded mod list before changing anything. A modded game is a shared software environment: the server defines the active collection, while each client must load a matching collection to join.
- A Factorio installation or dedicated headless package that matches the version your players use.
- A server save file, or permission to create one before launching the server.
- The desired mods from the official Mod Portal, including any required dependencies.
- File-system access to the server’s
modsdirectory, or credentials that allow the headless instance to download mods when synchronization requires it. - A written record of the Factorio build, mod names, mod versions, and important startup settings.
Use a staging copy of the save when adding a large mod pack or changing world-generation behavior. Some mods alter recipes, entities, or map data; testing on a copy gives you a recovery point if the server refuses to load or a mod causes a migration problem.
How do you install mods with Factorio’s Mod Portal?
The in-game Mod Portal is the least error-prone method because it reads each mod’s metadata and downloads required dependencies automatically. Optional dependencies are different: they add integrations or extra features but are not needed for the mod to load.
- Open the Mod Portal. Start Factorio and choose Mods, or open the official Factorio Mod Portal in a browser.
- Choose a mod. Check its supported Factorio versions, required dependencies, optional dependencies, and declared incompatibilities before installing.
- Install it. In the game client, selecting the mod downloads its package and any required dependencies. Leave the ZIP package intact; do not rename files or unpack their contents.
- Enable the collection. Factorio may request a restart after enabling or disabling mods. Restart before testing a save so the complete set is loaded together.
- Repeat for the server environment. If the server is managed through files, copy the downloaded ZIP packages into that server’s
modsdirectory. If the server uses synchronization, configure the server to obtain the same set and versions. - Launch and inspect the log. Start the save, then look for missing dependencies, incompatibility messages, malformed packages, or startup-setting errors before inviting players.
Do not assume that installing a newer version is harmless. A mod update can change prototypes, migration behavior, or startup settings. Keep the exact ZIP versions that worked with the save, and update the server and clients as one planned change.
How do you install mods on a dedicated or headless Factorio server?
A dedicated server normally loads a save file in headless mode, with no graphics. The server process reads mods from its configured mod directory, loads the save, and listens for multiplayer connections.
1. Create or identify the server account and folders
On Linux, the official headless-server guidance describes extracting the package under a location such as /opt/factorio, creating a separate factorio user, and assigning that user ownership of the installation and save directories. Those paths are examples rather than requirements; use a location appropriate to your host and make sure the account running Factorio can read the executable, save, settings file, and mod ZIPs.
Keep each server instance’s saves, settings, logs, and mods organized. If several saves require different mod collections, give each collection its own mod directory instead of replacing one shared directory every time you switch maps.
2. Put the mod packages in the server’s mod directory
Copy every required mod ZIP into the instance’s mods directory. Preserve the original filenames and package contents. Factorio reads the metadata inside each package to determine the mod name and version; manually unpacking or altering that structure can produce a “mod is corrupt” or “metadata not found” error.
Make sure the server has the complete dependency chain. If mod A declares mod B as required, B must be present and enabled. If a package declares an incompatibility with another enabled package, Factorio will prevent that combination from loading; remove one mod or choose a compatible release rather than forcing the files together.
3. Create a save when necessary
If you do not have a save yet, create one before starting multiplayer:
./bin/x64/factorio --create ./saves/my-save.zip
The relative paths in this example assume you run the command from the Factorio installation directory. Replace them with absolute paths or your own layout when using a service manager.
4. Start the server with the save
Use --start-server for a specific save:
./bin/x64/factorio --start-server ./saves/my-save.zip
To start the newest save available to the instance, use:
./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json
You can combine a specific mod directory and server settings file for an isolated instance:
./bin/x64/factorio
--start-server ./saves/my-save.zip
--mod-directory ./mods
--server-settings ./data/server-settings.json
Headless mode initializes no graphics. A server can pause automatically when nobody is connected; the no-auto-pause setting in the server settings file controls that behavior. Confirm command-line option names against the installed build with factorio --help, because command-line interfaces can change between releases.
5. Verify the first startup
Watch the console output and server log through a complete startup. A successful launch should load the save and list the active mods without dependency or compatibility errors. Stop the process and fix any failure before opening the server to players; allowing clients to connect while the collection is incomplete creates avoidable synchronization conflicts.
How do players sync their clients with the server’s mods?
When a player joins through the multiplayer browser, Factorio can offer Sync mods with server. Accepting the prompt downloads and enables the exact mod versions used by the server and can synchronize startup settings. This is normally safer than asking every player to find and install versions manually.
- Start the server with the intended save and complete its mod loading.
- Have the player locate the server in the multiplayer browser and select it.
- When Factorio displays Sync mods with server, accept the prompt.
- Allow downloads to finish, then let Factorio restart or reload the mod set if requested.
- Join again after synchronization completes. If the prompt reports a mismatch, follow the troubleshooting sequence below instead of repeatedly retrying.
Save-based synchronization has an important version choice. In the Load game menu, Factorio normally selects the latest available mod versions when you choose Sync mods with save. Hold CTRL while clicking Sync mods with save to select the exact versions stored with the save. Use the exact-version behavior when preserving an established world or when a newer release changes recipes, migrations, or compatibility.
Keep the server as the source of truth. Record the active set and startup settings after every approved change, and do not update only one client or the server while a session is in progress. Stop the server, change the collection, test the save, and have players synchronize before reconnecting.
Which command-line options control mod installation and synchronization?
The command-line reference provides separate options for choosing a directory, synchronizing a save’s set, and launching the server. They solve different operational problems.
| Option | Purpose | When to use it |
|---|---|---|
--mod-directory PATH |
Selects the mod directory used by that server instance. | Keep separate mod packs isolated when multiple saves or instances run on one host. |
--sync-mods FILE |
Synchronizes mods with a save. | Reproduce the collection recorded by a save; headless downloads require service credentials in player-data.json when files are not already available. |
--start-server FILE |
Starts multiplayer from a named save. | Use when you want an explicit, predictable save path. |
--start-server-load-latest |
Starts the latest available save. | Useful for a routinely restarted instance whose newest save should be selected automatically. |
--server-settings FILE |
Loads server settings from a JSON file. | Apply networking, pause, and other server behavior consistently at startup. |
For a production server, pin the executable, save, settings file, and mod directory in the service definition or startup script. This prevents a restart from silently selecting a different working directory or an unintended mod collection.
Why does Factorio say the mods are different?
The error means the joining instance does not match the server’s required environment. Factorio’s multiplayer documentation states: “All game instances need the installation of exactly the same game-versions and mods.” A matching mod name with a different version is still a mismatch.
Check the Factorio build first
Compare the exact game version shown by the server and client, not merely the major release family. A stable client cannot join a server running another build if the build changes the mod API or save format. Update or roll back one side so both installations use the same version before changing mods.
Compare names and versions
Check every enabled package on both sides. Look for an old ZIP left in the client’s or server’s mods directory, duplicate releases of the same mod, or a mod disabled on one side. The join synchronization prompt is usually the fastest correction because it replaces the client’s versions with the server’s set.
Resolve dependencies and incompatibilities
A missing required dependency prevents loading even when the primary mod is present. An optional dependency can be omitted, but features that depend on it will not appear. Declared incompatibilities also block loading; remove the conflicting package or select releases that support one another.
Check startup settings
Some mods expose startup settings that affect the mod configuration even when the ZIP versions match. Let the server synchronization process apply those settings, and avoid manually editing one client’s startup values while diagnosing a join failure.
Read the server log
Logs usually identify the first actionable problem: a missing ZIP, malformed package, dependency error, incompatibility, or startup-setting mismatch. Fix the earliest reported cause, restart, and test again rather than treating later cascade errors as separate failures.
How do you fix connection problems after the mods match?
Mod synchronization cannot repair a blocked network path. Factorio multiplayer uses UDP and defaults to port 34197; the port can be changed in configuration.
- Confirm the server is listening on the configured UDP port.
- If the server is on a private network, forward that UDP port from the router to the correct host and local address.
- Allow the chosen UDP port through the host firewall.
- Check antivirus or endpoint-security rules that may block the Factorio process.
- Verify that players are using the server’s current public address and port after any configuration change.
A server can appear in a browser yet still fail to accept a connection if forwarding points to an old machine or a firewall allows TCP but not UDP. Test the network only after confirming the game and mod versions, because a successful handshake does not make an incompatible client joinable.
Should you self-host a modded Factorio server or use managed hosting?
Self-hosting gives you direct control of files and commands; managed hosting trades that control for a provider-operated panel and infrastructure. The better choice depends on whether you value administration control or reduced maintenance.
| Factor | Self-hosted server | Managed server |
|---|---|---|
| Control | Direct access to saves, ZIPs, command-line flags, logs, and service processes. | Controls are exposed through a provider panel; low-level access varies by service. |
| Maintenance | You handle Factorio updates, mod updates, backups, monitoring, and process restarts. | The provider may automate some updates, restarts, and backups; verify exactly what is included. |
| Mod workflow | Copy ZIPs, select --mod-directory, or configure synchronization yourself. |
Panels may offer upload, one-click installation, or automatic synchronization, but implementation differs. |
| Networking | You configure UDP forwarding, firewall rules, and public reachability. | The provider supplies a public endpoint; you still need to configure the game and allow the required port in its panel. |
| Cost and performance | Uses existing hardware and bandwidth but consumes your administration time and resources. | Involves a recurring hosting fee in exchange for provider infrastructure and support. |
Regardless of hosting model, retain a local copy of the save and a manifest of the exact mod set. A panel can simplify file transfer, but it cannot make an incompatible Factorio build or mod version safe to load.
What is a safe procedure for updating a modded server?
- Announce a maintenance window. Prevent players from saving while the collection is changing.
- Stop the server cleanly. Copy the current save before replacing any package.
- Record the current state. Note the Factorio build, each mod version, startup settings, and the backup location.
- Update in staging. Put the new ZIPs in a test mod directory and load a copy of the save.
- Read migration and dependency errors. Resolve them before touching the production directory.
- Promote the tested set. Replace the production collection as one operation, then start the server.
- Synchronize clients. Players should accept the server prompt or use exact save synchronization before joining.
- Keep a rollback set. If the update breaks the save or introduces a gameplay problem, restore the prior save and mod ZIPs together.
This process avoids the most common failure: a server running one collection while players retain another. It also gives you a known-good rollback point instead of relying on an untested downgrade.
What should you check before inviting players?
- The server and clients target the same exact Factorio version.
- Every required mod dependency is present and enabled.
- No declared incompatibility remains in the active collection.
- The save loads successfully with the intended startup settings.
- The server log contains no unresolved package or migration error.
- The chosen mod directory is the one passed to the running instance.
- The UDP port is listening, forwarded when necessary, and allowed by host security software.
- A clean save backup and a versioned mod manifest exist.
- A test client can complete synchronization and enter the world.
Frequently Asked Questions
Can Factorio clients download mods automatically when joining a server?
Yes. When the server advertises its mod set, the client can accept Sync mods with server and download the required packages. The player still needs a compatible Factorio game version, and the download can fail if the server cannot provide credentials or network access.
Where does a dedicated Factorio server store its mods?
By default, the server uses its configured instance mod directory. You can choose another location with --mod-directory PATH; use that option when separate saves need separate collections or when the service runs from an unexpected working directory.
Do optional dependencies have to be installed?
No. Required dependencies are needed for the declaring mod to load, while optional dependencies provide integrations or additional features. Installing an optional package can change available features, so record it if your save depends on that behavior.
What happens if nobody is connected to a headless Factorio server?
Headless servers can pause automatically when no players are connected. The no-auto-pause setting in the server settings file controls whether that behavior is changed.
Can I use different mod packs for different Factorio saves on one machine?
Yes. Assign each instance or save its own directory with --mod-directory, and start it with the corresponding save and settings file. This prevents one server’s updates from silently replacing the collection required by another world.