Skip to content

fix: update base image to nodejs-22-steamcmd-ubuntu-24.04 (fixes GLIBC restart loop) - #1

Merged
compscidr merged 2 commits into
mainfrom
fix/ubuntu-24.04-base
Jul 14, 2026
Merged

fix: update base image to nodejs-22-steamcmd-ubuntu-24.04 (fixes GLIBC restart loop)#1
compscidr merged 2 commits into
mainfrom
fix/ubuntu-24.04-base

Conversation

@compscidr

Copy link
Copy Markdown
Owner

Problem

rust-weekly and rust-monthly on nas.local have been stuck in restart loops (7k+ and 21k+ restarts). Root cause from container logs:

/steamcmd/rust/RustDedicated: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.34' not found (required by /steamcmd/rust/RustDedicated)
/steamcmd/rust/RustDedicated: /lib/x86_64-linux-gnu/libm.so.6: version 'GLIBC_2.35' not found (required by UnityPlayer.so)

Facepunch's current RustDedicated build requires glibc >= 2.34, but the nodejs-16-steamcmd-ubuntu-20.04 base ships glibc 2.31. The server binary dies instantly after the (~6GB) steam install/validate, the start script exits, and the unless-stopped restart policy loops forever.

Verified the fix: ldd RustDedicated inside ubuntu:24.04 resolves all glibc symbols (only UnityPlayer.so unresolved, which is expected — it's loaded via LD_LIBRARY_PATH at runtime).

Change

  • Bump base to didstopia/base:nodejs-22-steamcmd-ubuntu-24.04 — same fix upstream Didstopia/rust-server made in May 2026
  • Drop stale package-lock.json files (also mirrors upstream); npm install regenerates them at build time under node 22

Merging publishes a new ghcr.io/compscidr/rust-server:latest via the docker-publish workflow.

🤖 Generated with Claude Code

RustDedicated now requires GLIBC >= 2.34 (2.32/2.33/2.35 for
UnityPlayer.so), but the ubuntu-20.04 base only ships glibc 2.31.
The server binary fails to load immediately after install, causing
containers to exit and restart-loop forever.

Mirrors upstream Didstopia/rust-server, which moved to the
nodejs-22-steamcmd-ubuntu-24.04 base and dropped the stale
package-lock files (regenerated by npm install at build time).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 14, 2026 01:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the container base image to Ubuntu 24.04 / Node.js 22 to resolve RustDedicated’s newer GLIBC requirements and stop restart-loop deployments, while also aligning the repo with upstream by removing Node lockfiles.

Changes:

  • Bump Docker base image from didstopia/base:nodejs-16-steamcmd-ubuntu-20.04 to didstopia/base:nodejs-22-steamcmd-ubuntu-24.04.
  • Remove package-lock.json files from the embedded Node helper apps (shutdown/restart/scheduler/heartbeat/rcon).

Reviewed changes

Copilot reviewed 1 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Dockerfile Updates base image to Ubuntu 24.04 / Node 22 to satisfy GLIBC requirements.
shutdown_app/package-lock.json Removes npm lockfile for shutdown helper app.
restart_app/package-lock.json Removes npm lockfile for restart helper app.
scheduler_app/package-lock.json Removes npm lockfile for scheduler helper app.
heartbeat_app/package-lock.json Removes npm lockfile for heartbeat helper app.
rcon_app/package-lock.json Removes npm lockfile for rcon helper app.
Files not reviewed (5)
  • heartbeat_app/package-lock.json: Generated file
  • rcon_app/package-lock.json: Generated file
  • restart_app/package-lock.json: Generated file
  • scheduler_app/package-lock.json: Generated file
  • shutdown_app/package-lock.json: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Dockerfile Outdated
@@ -1,4 +1,4 @@
FROM didstopia/base:nodejs-16-steamcmd-ubuntu-20.04
FROM didstopia/base:nodejs-22-steamcmd-ubuntu-24.04
Comment thread Dockerfile Outdated
…digest

- Regenerate package-lock.json for all helper apps under node 22
  instead of deleting them, and switch builds to npm ci for
  reproducible dependency resolution
- Pin didstopia/base:nodejs-22-steamcmd-ubuntu-24.04 by manifest
  digest so rebuilds of the same commit get the same runtime
  (verified: image builds clean with these changes)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@compscidr

Copy link
Copy Markdown
Owner Author

Addressed both review comments in 041bd2d:

  • Restored package-lock.json for all five helper apps, regenerated under Node 22, and switched the Dockerfile to npm ci for reproducible installs
  • Pinned the base image by manifest digest (sha256:ae8f7b...) with the tag kept for readability

Verified the image builds cleanly with these changes.

@compscidr
compscidr merged commit b268961 into main Jul 14, 2026
compscidr added a commit to compscidr/iac that referenced this pull request Aug 3, 2026
The rust servers were disabled in ae1518c while they were broken.
Root cause was the ghcr.io/compscidr/rust-server image being built
on ubuntu 20.04 (glibc 2.31) while RustDedicated now requires
glibc >= 2.34 — fixed in compscidr/rust-server#1 by moving to the
ubuntu 24.04 base. Re-enabling the role so ansible manages the
containers again and pulls the fixed image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
compscidr added a commit to compscidr/iac that referenced this pull request Aug 3, 2026
The rust servers were disabled in ae1518c while they were broken.
Root cause was the ghcr.io/compscidr/rust-server image being built
on ubuntu 20.04 (glibc 2.31) while RustDedicated now requires
glibc >= 2.34 — fixed in compscidr/rust-server#1 by moving to the
ubuntu 24.04 base. Re-enabling the role so ansible manages the
containers again and pulls the fixed image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants