Is your feature request related to a problem? Please describe
I run my server with a frequent auto-reboot cron (every 4 hours). I want the server to periodically check for Palworld patches and apply them automatically, but I do not want the entire server binary redownloaded on every single container restart. Currently this is impossible because AUTO_UPDATE_ENABLED is hard-gated behind UPDATE_ON_BOOT in two places (scripts/start.sh:136 and scripts/update.sh:16), and UPDATE_ON_BOOT=true deletes the appmanifest on every boot, forcing a full reinstall.
The only way to get periodic update checks is to also accept full reinstalls on every boot. With a 4-hour reboot cycle, that's untenable.
Describe the solution you'd like
Decouple AUTO_UPDATE_ENABLED from UPDATE_ON_BOOT so they function as independent features:
UPDATE_ON_BOOT controls only boot-time behavior (reinstall/validate on container start).
AUTO_UPDATE_ENABLED controls only periodic update checks via cron, regardless of the UPDATE_ON_BOOT value.
Specifically, two changes:
-
scripts/start.sh:136 gate the auto-update cron job on
AUTO_UPDATE_ENABLED only:
- if [ "${AUTO_UPDATE_ENABLED,,}" = true ] && [ "${UPDATE_ON_BOOT}" = true ];
+ if [ "${AUTO_UPDATE_ENABLED,,}" = true ];
-
scripts/update.sh:16-20 guard the update script with
AUTO_UPDATE_ENABLED instead of UPDATE_ON_BOOT:
- if [ "${UPDATE_ON_BOOT,,}" != true ]; then
+ if [ "${AUTO_UPDATE_ENABLED,,}" != true ]; then
UpdateRequired() already does a lightweight manifest comparison against the Steam API before downloading, so the cron path would remain efficient ; only downloading when a new manifest is actually detected.
Describe alternatives you've considered
-
Setting UPDATE_ON_BOOT=true and accepting the overhead. With a 4 hour reboot cycle, deleting appmanifest + full SteamCMD validation every boot is far too wasteful.
-
Manual updates. Exec into the container, delete the appmanifest, restart. Viable but defeats the purpose of automation. I suppose I could script this out...?
-
Mounting a patched entrypoint script. Avoids forking the image but is super hokey imo.
Additional context
there's no way to get periodic updates without also accepting boot-time reinstalls:
UPDATE_ON_BOOT |
AUTO_UPDATE_ENABLED |
Result |
false |
false |
No boot reinstall, no cron |
false |
true |
No boot reinstall, cron silently skipped |
true |
false |
Full reinstall every boot, no cron |
true |
true |
Full reinstall every boot + cron |
This is a small, low-risk change (+1/-5 lines) with no breaking behavior.
Feature Report Checklist
Is your feature request related to a problem? Please describe
I run my server with a frequent auto-reboot cron (every 4 hours). I want the server to periodically check for Palworld patches and apply them automatically, but I do not want the entire server binary redownloaded on every single container restart. Currently this is impossible because
AUTO_UPDATE_ENABLEDis hard-gated behindUPDATE_ON_BOOTin two places (scripts/start.sh:136andscripts/update.sh:16), andUPDATE_ON_BOOT=truedeletes the appmanifest on every boot, forcing a full reinstall.The only way to get periodic update checks is to also accept full reinstalls on every boot. With a 4-hour reboot cycle, that's untenable.
Describe the solution you'd like
Decouple
AUTO_UPDATE_ENABLEDfromUPDATE_ON_BOOTso they function as independent features:UPDATE_ON_BOOTcontrols only boot-time behavior (reinstall/validate on container start).AUTO_UPDATE_ENABLEDcontrols only periodic update checks via cron, regardless of theUPDATE_ON_BOOTvalue.Specifically, two changes:
scripts/start.sh:136gate the auto-update cron job onAUTO_UPDATE_ENABLEDonly:scripts/update.sh:16-20guard the update script withAUTO_UPDATE_ENABLEDinstead ofUPDATE_ON_BOOT:UpdateRequired()already does a lightweight manifest comparison against the Steam API before downloading, so the cron path would remain efficient ; only downloading when a new manifest is actually detected.Describe alternatives you've considered
Setting
UPDATE_ON_BOOT=trueand accepting the overhead. With a 4 hour reboot cycle, deleting appmanifest + full SteamCMD validation every boot is far too wasteful.Manual updates. Exec into the container, delete the appmanifest, restart. Viable but defeats the purpose of automation. I suppose I could script this out...?
Mounting a patched entrypoint script. Avoids forking the image but is super hokey imo.
Additional context
there's no way to get periodic updates without also accepting boot-time reinstalls:
UPDATE_ON_BOOTAUTO_UPDATE_ENABLEDfalsefalsefalsetruetruefalsetruetrueThis is a small, low-risk change (+1/-5 lines) with no breaking behavior.
Feature Report Checklist