Palworld 1.0 has an official package loader for Windows dedicated servers. The administrator stages each package under Mods/Workshop, activates its unique PackageName in Mods/PalModSettings.ini, and restarts. The loader validates root Info.json, resolves dependencies, and deploys each server InstallRule to its runtime destination.
Pocketpair’s current documentation is explicit: server-side mods work only on Windows dedicated servers. Do not apply the Windows instructions to Linux and call it supported. Keep a clean server build, world backup, package archive, manifest, and known-good configuration together so rollback is a controlled operation.
Server preflight
Windows dedicated server
The host is the supported Windows server distribution, fully stopped before files or configuration change.
Full world and config backup
Copy saves, PalWorldSettings, PalModSettings, and the current package set outside the live server tree.
Unique PackageName
Read
Info.json. Two active packages with the same PackageName are ambiguous; only one loads and order is undefined.Server InstallRule present
At least one intended rule declares
IsServer: true; a client-only rule is not automatically a server package.Dependencies staged
Every PackageName listed in
Dependenciesis present and activated with a compatible version.Client requirement understood
Know whether players also need a matching client package before reopening the server.
Install an official server package
- 01
Stop the process completely
Confirm the dedicated server is no longer writing saves or holding runtime files. Do not update a live process.
- 02
Create the Workshop staging folder
Use the server’s
Mods/Workshopdirectory, or configure a separateWorkshopRootDir/-workshopdirwhen your host requires shared storage. - 03
Stage one folder per package
Each child folder must contain the package root, including
Info.jsonand the files referenced by its InstallRules. Folder name is for organization; PackageName is the activation identity. - 04
Read and validate Info.json
Check PackageName, Version, MinRevision, Dependencies, and every rule with
IsServer: true. Never invent the identity from the Workshop title. - 05
Edit PalModSettings.ini
Set
bGlobalEnableMod=trueand add oneActiveModList=<PackageName>line per active package. Preserve dependency PackageNames as separate active entries. - 06
Start and watch deployment
Restart. The server installs or updates packages before normal operation. Read the server output/log and confirm every active identity deployed without validation or dependency errors.
- 07
Test a copied world first
Verify startup, connection, the mod’s server behavior, required client files, save, shutdown, and reload before applying the same set to production.
Minimal PalModSettings.ini
Use the exact case-sensitive PackageName values from each package manifest. Repeating ActiveModList is intentional.
[PalModSettings]
bGlobalEnableMod=true
ActiveModList=ExampleCore
ActiveModList=ExampleServerRulesWhere server InstallRules deploy
| Rule type | Server deployment target | Runtime requirement |
|---|---|---|
| UE4SS | Mods/NativeMods/UE4SS | The native core package |
| Lua | Mods/NativeMods/UE4SS/Mods/{PackageName} | Compatible UE4SS core |
| PalSchema | Mods/NativeMods/UE4SS/Mods/PalSchema/mods/{PackageName} | UE4SS and PalSchema |
| LogicMods | Pal/Content/Paks/LogicMods | Compatible UE4SS core |
| Paks | Pal/Content/Paks/~WorkshopMods/{PackageName} | No framework unless the package declares one |
Update, disable, and remove without surprises
To update, stop the server, replace the staged package, preserve or change the PackageName intentionally, and restart. The official loader uses the manifest Version to decide ordinary redeployment; package authors must increment it. Back up first because a new package can also migrate or invalidate persistent world content.
For emergency isolation, launch with -NoMods to disable all packages without rewriting the active list. For a planned removal, follow the author’s cleanup steps, remove its ActiveModList entry, restart and validate a copied world, then remove its staging folder only when no active dependency still needs it.
Server starts but the mod is absent
Global switch is true
bGlobalEnableMod=trueis under the correct settings section and the running instance reads that file.Identity matches manifest
ActiveModListcontains PackageName, not ModName, Workshop title, folder name, or numeric Workshop ID.Rule is server-enabled
The intended InstallRule contains
IsServer: trueand uses a supported rule type.Minimum revision satisfied
The server revision is not below the package
MinRevisionvalue.Dependencies active
Every manifest dependency is staged, listed, compatible, and loaded before evaluating the top-level mod.
Deployment target exists
Inspect the loader-created runtime location after startup instead of copying directly into it first.
Operate and publish correctly
Research sources
The claims in this guide were checked against these current references. Primary sources are marked first.




Comments
Loading discussion...