
You set up a modded Project Zomboid server, the mods download correctly, the server starts clean, and then players get kicked at the login screen with:
File doesn't exist on the client: <some lua file>
The frustrating part is that the file usually does exist on the client. Here is what is actually happening.
If your message says "File doesn't match the one on the server" instead, that is a separate checksum error with its own causes. It has its own section further down.
The real cause on Linux servers
Project Zomboid verifies that server and client are running identical Lua code by hashing the Lua files on both sides and comparing the checksums. If they differ, it refuses the connection.
The problem is that a Linux server and a Windows client do not necessarily walk the mod file list in the same order or with the same case handling. Same files, same mods, different sort order going into the hash, so the two sides produce different checksums and the connection is rejected. Nothing is actually missing.
This became a lot more visible from Build 42.13.2 onward, and it hits Linux-hosted servers with Windows players specifically, which is most rented hosting.
The fix
Set DoLuaChecksum to false in your server config.
In your .ini config file (for example servertest.ini, or whatever your server's config is named), find:
DoLuaChecksum=true
Change it to:
DoLuaChecksum=false
Restart the server and players should connect. It is also what got a Build 42 Linux dedicated server working in this December 2025 thread on The Indie Stone's forum, where the same mods seemed to work on a Windows server.
One important caveat
DoLuaChecksum exists for a reason. It catches genuine mod mismatches, where a player really is running a different version of a mod than the server.
If your error was caused by the Linux/Windows sort-order issue, turning it off is a correct fix and costs you nothing. If your error was caused by an actual mod version mismatch, turning it off does not fix the mismatch, it just stops the game from warning you about it, and you may get strange gameplay bugs or errors later instead of a clear message at login.
So before you flip it: make sure your mod list is genuinely consistent. If only some players get the error and others connect fine, suspect a real mismatch on those players' end first.
"File doesn't match the one on the server" is a different error
The other checksum error looks like this:
File doesn't match the one on the server: <file path>
Here the file is not missing. Both sides have it, but the checksum of the player's copy does not match the server's copy. Usually that means one side has an older or different version of the file. The server log records it as the player being kicked because "Lua/script checksums do not match".
In the official forum and Steam threads about this error, most of the fixes that worked come down to getting both sides onto the same files.
The server is behind on an update. Steam updates the game and its Workshop mods on your players' PCs, but a dedicated server keeps its old files until it is updated. After a mod update, restart the server so it downloads the new version. After a game patch, update the server's game files as well. If you run the server yourself with SteamCMD, that is the same app_update 380870 validate command you installed it with. The admin command checkModsNeedUpdate tells you whether a mod has been updated and writes the answer to the server log.
The player's own files are damaged or out of date. This also happens with no mods installed. Have the player delete the folder that contains the file named in the error, then verify the game files in Steam. If that does not help, do the same on the server. If every player gets the error and not just one, look at the server first.
Two mods ship a file with the same name. Some versions of the message list a client path and a server path for the file. Compare them. In one report on The Motorious Zone Vehicle Pack, the client path pointed into a separate Kei car pack and the server path pointed into Motorious Zone, which already includes those cars. The mod author's advice was to disable the separate versions, and that fixed it. If your two paths point into different mods, keep only one of them. Build 42 was meant to cut down on this: in its October 2023 dev blog, The Indie Stone wrote that the game's use of Mod IDs "has been altered to be appended by the workshop ID of each mod", because re-uploads and modpacks that share one Mod ID were causing file mismatch errors when players connected.
The player and the server are on different branches. If the player runs a different Steam branch than the server, such as a beta branch the server is not on, their files differ. In one Build 42 report on the official forum, the player switched their Steam beta setting to match the server and could join again.
Setting DoLuaChecksum=false stops this kick too, because it switches the whole check off. Try the steps above first. When the files really differ, players can still run into other errors after that, and the caveat above applies.
Save yourself the next three hours
While you are in the config, these are the other Build 42 mod issues that produce similar "the mods are clearly there but it does not work" symptoms:
Mod IDs are case sensitive. If you see Mod "X" not found, compare your entry against the mod's Mod ID character for character. That is the id= line in the mod's mod.info file, which many Workshop pages also list in their description. It is not the same as the Workshop item ID.
You need both lines, not one. Every mod needs its Workshop ID in WorkshopItems= and its Mod ID in Mods=. Getting one and not the other is a common setup mistake. On Build 42 servers the Mod IDs are often written with a backslash in front, which Build 41 lists did not have:
Mods=\ModIDOne;\ModIDTwo
WorkshopItems=WorkshopIDOne;WorkshopIDTwo
Both lines are semicolon separated. The Mod ID is the mod's id= value, the Workshop ID is the number at the end of the mod's Workshop URL, and the backslash only ever goes in front of Mod IDs, never in WorkshopItems=.
Where the backslash comes from: in a 42.13 bug report on The Indie Stone's forum from December 2025, a server admin traced required mod "ModName" not found to the game reading the mod's ID as \ModName while the config said ModName, and adding the backslash in Mods= was the workaround. In the Linux server thread mentioned above, the same change got that server to load its Workshop mods. The 42.15.0 patch notes of 9 March 2026 then list "Fixed ModID, WorkshopID logic" without saying what that means for the config, and neither the patch notes nor PZwiki's server settings page show the format for current builds (checked 25 October 2026). Build 42 configs shared online use both forms. So do not copy the format from a guide, ours included.
Let the game write it: on your own PC, subscribe to the mods, open Host, then Manage Settings, add the Workshop items and the mods, save, and open the .ini file the game just wrote in Zomboid/Server. Copy its Mods= and WorkshopItems= lines into the server's config exactly as they are. Our Build 42 mods guide goes through those steps with the Map= line as well.
The server rewrites its own config on shutdown. If you edit the config while the server is running, your changes get overwritten when it stops. Always stop the server first, then edit, then start.
Force a mod update when a mod goes stale. Unsubscribing and resubscribing on the client forces Steam to re-download it, which resolves cases where a partially updated mod is producing the mismatch.
Still stuck?
Work through it in this order, it saves time:
- Stop the server before editing anything.
- Confirm every mod appears in both
Mods=andWorkshopItems=, in the format your own game writes under Host and Manage Settings. - Confirm Mod IDs match the mod's
id=exactly, including capitalisation. - If only specific players fail, have them unsubscribe and resubscribe to the mods.
- If the error says the file doesn't match the one on the server, update and restart the server, then have the player verify their game files.
- If all players fail on a Linux server, set
DoLuaChecksum=false.
Space-Node's Project Zomboid hosting runs Build 42 with full config file access through the panel, so you can make all of the above changes yourself in a couple of minutes. If you would rather we look at it, open a ticket with your mod list.
Related: Build 42 stable, what changed and how to update, Project Zomboid dedicated server setup guide, Why Your Eco Server Lags, Squad EOS Authentication Timed Out and Heartbeat Timeout
Running a modded Zomboid server? View Project Zomboid Hosting Plans