Skip to content

feat!: add Ubuntu 26.04 image, unified Dockerfile, Supercronic-based crons, Node.js v24 LTS - #95

Open
snowyyd wants to merge 4 commits into
GameServerManagers:mainfrom
snowyyd:refactor/cron
Open

feat!: add Ubuntu 26.04 image, unified Dockerfile, Supercronic-based crons, Node.js v24 LTS#95
snowyyd wants to merge 4 commits into
GameServerManagers:mainfrom
snowyyd:refactor/cron

Conversation

@snowyyd

@snowyyd snowyyd commented Aug 1, 2026

Copy link
Copy Markdown

The Ubuntu 26.04 base image was added and is now the default image (tags: latest, ubuntu, ubuntu-26.04). This is a breaking change.

In addition, all Dockerfile.* files were consolidated into a single file. The action-docker-publish.yml workflow has been updated (and simplified) to reflect this change.

The Node.js version was updated from v20 (EOL) to Node.js v24 (the latest LTS to date). This is a breaking change.

Finally, the use of cron (system-based) was replaced with supercronic (user-based). The main advantage is that the process now runs entirely under the linuxgsm user and does not require SUID/SGID permissions (unlike crontab, which requires SGID to modify crontabs); this facilitates the use of containers with stricter security policies (such as no-new-privileges).

Compatibility with UPDATE_CHECK has been maintained. It is possible to optionally load a saved crontab using LGSM_READ_CRONTAB. If that variable is not defined, then entrypoint-user.sh will overwrite the crontab file on each execution.

To correctly support user-specified UPDATE_CHECK values (in minutes), a helper script was added to convert the minutes to valid cron syntax (unlike the current implementation, which generates invalid cron syntax with the default UPDATE_CHECK value).

Summary

  • Added Ubuntu 26.04 image.
  • BREAKING CHANGE: Base image upgraded from Ubuntu 24.04 to 26.04.
  • Consolidated all Dockerfile. into a single one.
  • Simplified action-docker-publish.yml workflow.
  • BREAKING CHANGE: Upgraded Node.js from v20 EOL to v24 LTS.
  • Replaced cron with supercronic.
  • Added optional persistence/custom crontab file.

Since this is a fairly significant change involving two breaking changes, it would be ideal to run some tests to verify that it works correctly.

The original idea of saving a reusable crontab file comes from #94. Credit goes to the original author @WildPenquin.

snowyyd added 4 commits August 1, 2026 02:43
BREAKING CHANGE: `latest` tag now points to ubuntu 26.04

refactor: unify all Dockerfile files
BREAKING CHANGE: Node.js version is now latest LTS (v24)
Replaced the systemd-based cron with the user-based supercronic.

Since supercronic does not require SUID/SGID permissions, it can be run directly in containers with stricter security policies (`--security-opt=no-new-privileges`).

The crontab file is now stored in `$LGSM_CONFIG/crontab` and is read only if `LGSM_READ_CRONTAB` env var is `true`.

Compatibility with `UPDATE_CHECK` is maintained, and a helper script has been added to correctly parse and convert the user supplied value (minutes) into valid cron syntax.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant