Skip to content

Migrate the user bundle to /etc/s6-overlay/user-bundles.d - #1143

Merged
frenck merged 1 commit into
mainfrom
migrate-user-bundle
Sep 18, 2026
Merged

frenck merged 1 commit into
mainfrom
migrate-user-bundle

Conversation

@frenck

@frenck frenck commented Sep 18, 2026

Copy link
Copy Markdown
Member

Proposed Changes

s6-overlay 3.2.3.2 (shipped by base 21.0.5) moved the user bundle definition out of /etc/s6-overlay/s6-rc.d and into /etc/s6-overlay/user-bundles.d. The old location still works, but logs a deprecation warning on every container start and will stop being picked up in the next major s6-overlay release.

This moves the bundle to the new location. All seven service definitions stay where they are in s6-rc.d. The stage 2 hook (enable-check.sh), which removes sshd from the bundle when no SSH port is exposed, is updated to point at the new path so that behaviour keeps working.

Verified with a local amd64 build against base 21.0.5: the deprecation warning no longer appears at start, and compiling the s6-rc database the same way rc.init does resolves all seven services (init-docker, init-mosquitto, init-mysql, init-ssh, init-user, sshd, ttyd) through the new bundle location.

Related Issues

Fixes #1128

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Corrected SSH service handling when no network port is exposed, preventing the service from being enabled unnecessarily.
    • This ensures SSH starts only when an SSH port is available, improving container startup behavior and reducing unintended service availability.

s6-overlay 3.2.3.2 deprecates defining the user bundle in
/etc/s6-overlay/s6-rc.d and logs a warning on every container start.
Move the bundle to /etc/s6-overlay/user-bundles.d and update the
stage 2 hook that removes sshd from the bundle when no SSH port is
exposed, so it keeps working against the new location.
@frenck frenck added the maintenance Generic maintenance tasks. label Sep 18, 2026
@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 64edb383-3845-4b5a-acf5-1b1d957ff1df

📥 Commits

Reviewing files that changed from the base of the PR and between 21545ff and c6d9d5a.

📒 Files selected for processing (8)
  • ssh/rootfs/etc/s6-overlay/scripts/enable-check.sh
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/init-docker
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/init-mosquitto
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/init-mysql
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/init-ssh
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/init-user
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/sshd
  • ssh/rootfs/etc/s6-overlay/user-bundles.d/user/contents.d/ttyd

Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review.


Walkthrough

When no SSH port is exposed, enable-check.sh now removes the sshd bundle from the s6-overlay user-bundles.d path.

Changes

SSH bundle migration

Layer / File(s) Summary
Update SSH bundle removal path
ssh/rootfs/etc/s6-overlay/scripts/enable-check.sh
The rm -f command now targets /etc/s6-overlay/user-bundles.d/user/contents.d/sshd.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to c6d9d

The SSH bundle removal path matches the new s6-overlay layout, with no actionable merge-blocking risk identified.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the primary change: moving the s6-overlay user bundle to /etc/s6-overlay/user-bundles.d.
Linked Issues check ✅ Passed The head contains the bundle at /etc/s6-overlay/user-bundles.d/user and does not contain the old s6-rc.d/user path. The head lists all seven required service entries under user/contents.d: `init…
Out of Scope Changes check ✅ Passed The reviewed changes are limited to relocating the user bundle and updating the path used by enable-check.sh. The seven service definitions remain under s6-rc.d. No unrelated Dockerfile, service…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the SSH den,
The bundle hops to its new den.
No port? It slips away,
On the proper path today.
S6 smiles at the change.

Comment @coderabbitai help to get the list of available commands.

@frenck
frenck merged commit 60a2d61 into main Sep 18, 2026
14 checks passed
@frenck
frenck deleted the migrate-user-bundle branch September 18, 2026 21:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance Generic maintenance tasks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate the user bundle to /etc/s6-overlay/user-bundles.d

1 participant