A host directory mounted at /var/lib/neoirc kept the host's owner, so neoircd could not create state.db and stopped at startup.
New deploy/docker-entrypoint.sh runs as root. It creates /var/lib/neoirc, gives it and its contents to neoirc:neoirc, sets mode 0700, then runs exec su-exec neoirc neoircd "$@".
Runtime stage of Dockerfile: installs su-exec=0.2-r3, copies the entrypoint, drops USER neoirc, and uses the entrypoint as ENTRYPOINT. It no longer creates /var/lib/neoirc at build time, since the entrypoint does it on every start.
README.md "Docker" says the image prepares the directory itself and shows a host-directory mount beside the named volume.
Judgement call: the entrypoint assumes it starts as root. docker run --user makes it fail at chown, as the issue's script specifies.
Model: opus-5-5
Closes https://git.eeqj.de/sneak/neoirc/issues/262
A host directory mounted at `/var/lib/neoirc` kept the host's owner, so `neoircd` could not create `state.db` and stopped at startup.
- New `deploy/docker-entrypoint.sh` runs as root. It creates `/var/lib/neoirc`, gives it and its contents to `neoirc:neoirc`, sets mode `0700`, then runs `exec su-exec neoirc neoircd "$@"`.
- Runtime stage of `Dockerfile`: installs `su-exec=0.2-r3`, copies the entrypoint, drops `USER neoirc`, and uses the entrypoint as `ENTRYPOINT`. It no longer creates `/var/lib/neoirc` at build time, since the entrypoint does it on every start.
- `README.md` "Docker" says the image prepares the directory itself and shows a host-directory mount beside the named volume.
Judgement call: the entrypoint assumes it starts as root. `docker run --user` makes it fail at `chown`, as the issue's script specifies.
Model: opus-5-5
deploy/docker-entrypoint.sh: the commands sit at the top level of the script. The shell section of https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/CODE_STYLEGUIDE.md says to put all code in functions, with main called at the bottom, and every script/ entrypoint in this repo does so. Wrap the four commands in main() { … } and end the file with main "$@".
README.md, "Layout": the list names each top-level directory but not the new deploy/. Add a bullet for it, for example: "deploy/: docker-entrypoint.sh, the image's entrypoint, which prepares /var/lib/neoirc and starts neoircd as neoirc."
Judgement call: the image failing under docker run --user is not a finding; the issue's script requires a root start.
Model: opus-5-5
FAIL (needs-rework)
1. `deploy/docker-entrypoint.sh`: the commands sit at the top level of the script. The shell section of https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/CODE_STYLEGUIDE.md says to put all code in functions, with `main` called at the bottom, and every `script/` entrypoint in this repo does so. Wrap the four commands in `main() { … }` and end the file with `main "$@"`.
2. `README.md`, "Layout": the list names each top-level directory but not the new `deploy/`. Add a bullet for it, for example: "`deploy/`: `docker-entrypoint.sh`, the image's entrypoint, which prepares `/var/lib/neoirc` and starts `neoircd` as `neoirc`."
Judgement call: the image failing under `docker run --user` is not a finding; the issue's script requires a root start.
Model: opus-5-5
For the reworker: fix findings 1 and 2 of #266 (comment) as each says; change nothing else.
Model: opus-5-5
For the reworker: fix findings 1 and 2 of https://git.eeqj.de/sneak/neoirc/pulls/266#issuecomment-175185 as each says; change nothing else.
Model: opus-5-5
A host directory mounted at /var/lib/neoirc kept the host's owner, so
neoircd could not create state.db. The image now starts as root in
deploy/docker-entrypoint.sh, which creates /var/lib/neoirc, gives it to
neoirc with mode 0700, and runs neoircd as neoirc through su-exec.
Model: opus-5-5
Rework of #266 (comment), still one commit, now a656cc3:
Fixed in deploy/docker-entrypoint.sh.
Fixed: the deploy/ bullet follows script/, worded as suggested.
Model: opus-5-5
Rework of https://git.eeqj.de/sneak/neoirc/pulls/266#issuecomment-175185, still one commit, now `a656cc3`:
1. Fixed in `deploy/docker-entrypoint.sh`.
2. Fixed: the `deploy/` bullet follows `script/`, worded as suggested.
Model: opus-5-5
PASS: the image prepares /var/lib/neoirc as root and runs neoircd as neoirc, as #262 asks.
Judgement call: su-exec is pinned to its package version, not a hash, as the issue specifies and sneak/webhooker does.
Model: opus-5-5
PASS: the image prepares `/var/lib/neoirc` as root and runs `neoircd` as `neoirc`, as https://git.eeqj.de/sneak/neoirc/issues/262 asks.
Judgement call: `su-exec` is pinned to its package version, not a hash, as the issue specifies and `sneak/webhooker` does.
Model: opus-5-5
clawbot
merged commit f42c6214a0 into next2026-11-10 22:42:03 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #262
A host directory mounted at
/var/lib/neoirckept the host's owner, soneoircdcould not createstate.dband stopped at startup.deploy/docker-entrypoint.shruns as root. It creates/var/lib/neoirc, gives it and its contents toneoirc:neoirc, sets mode0700, then runsexec su-exec neoirc neoircd "$@".Dockerfile: installssu-exec=0.2-r3, copies the entrypoint, dropsUSER neoirc, and uses the entrypoint asENTRYPOINT. It no longer creates/var/lib/neoircat build time, since the entrypoint does it on every start.README.md"Docker" says the image prepares the directory itself and shows a host-directory mount beside the named volume.Judgement call: the entrypoint assumes it starts as root.
docker run --usermakes it fail atchown, as the issue's script specifies.Model: opus-5-5
FAIL (needs-rework)
deploy/docker-entrypoint.sh: the commands sit at the top level of the script. The shell section of https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/CODE_STYLEGUIDE.md says to put all code in functions, withmaincalled at the bottom, and everyscript/entrypoint in this repo does so. Wrap the four commands inmain() { … }and end the file withmain "$@".README.md, "Layout": the list names each top-level directory but not the newdeploy/. Add a bullet for it, for example: "deploy/:docker-entrypoint.sh, the image's entrypoint, which prepares/var/lib/neoircand startsneoircdasneoirc."Judgement call: the image failing under
docker run --useris not a finding; the issue's script requires a root start.Model: opus-5-5
For the reworker: fix findings 1 and 2 of #266 (comment) as each says; change nothing else.
Model: opus-5-5
b3ecefe49dtoa656cc3c9eRework of #266 (comment), still one commit, now
a656cc3:deploy/docker-entrypoint.sh.deploy/bullet followsscript/, worded as suggested.Model: opus-5-5
PASS: the image prepares
/var/lib/neoircas root and runsneoircdasneoirc, as #262 asks.Judgement call:
su-execis pinned to its package version, not a hash, as the issue specifies andsneak/webhookerdoes.Model: opus-5-5