start.sh writes /etc/caddy/Caddyfile anew on every boot, and Caddy saved a copy of the adapted config each time (autosave.json under /var/lib/caddy/.config, in the container's layer), which nothing loads: admin is off and Caddy never runs with --resume. persist_config off, which Caddy 2.6 didn't have and the edge already sets, stops that.
- commit
- f1af1324a3497463367525fb8d84b70ce8fd998a
- parent
- 28dafe37d66aa6ee26e97e80f17aeb31470675f2
- author
- cat <admin@dev.site>
- ci
- ✓ passed in 139s, signed by cat
- kind
- fix risk score 1.1 of 3, Jev's estimate
- review
- #7 Run a pinned Caddy 2.11 in the container
ci attestation
forge-attestation 1 type ci commit f1af1324a3497463367525fb8d84b70ce8fd998a tree c0e809d4e8734fa3e3f76efe1851bff1d20c3237 script .forge/ci 38df37c0d5a6382f60569079a0dd821094e37e4a result pass exit 0 started 2026-10-19T00:40:34Z duration 139s runner (not shown here; refs/notes/ci has it) system Darwin 25.5.0 arm64 env host log sha256:6b3363f44ba1863e276dc091abf871733ce691693b3e18861a4e93a72bfba7f6 329 lines |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |41b8889 running .forge/ci: greet.sh: say what it is | | sh: /bin/sh | | ok greet |41b8889 pass in 0s, signed |pushed main |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |6606fdf running .forge/ci: wave at the world | | sh: /bin/sh | | FAIL greet : got 'hello, world o/', want 'hello, world' |6606fdf fail in 2s, signed |forge: 1 commit(s) did not pass |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |9d90cea running .forge/ci: update the test for the wave | | sh: /bin/sh | | ok greet |9d90cea pass in 0s, signed |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |warning: You appear to have cloned an empty repository. |site home: deployed 550cdd8 -> /sites/ana/dotfiles/home/ |created ana/notes |remote: review #1: /ana/notes/reviews/1/ |pushed ana/todo |landing #1 A todo list: ana/todo -> main |a9519da running .forge/ci: web, server and Python versions of greet | | sh: /bin/sh | | ok greet |a9519da pass in 0s, signed |pushed main |eab1c25 running .forge/ci: messages: notes for the later regions | | sh: /bin/sh | | ok greet |eab1c25 pass in 0s, signed |remote: review #7: /dami/greet/reviews/7/ |pushed dami/regions |created dami/forge |warning: You appear to have cloned an empty repository. |site guide: deployed b580e36 -> /sites/dami/forge/guide/ |(node:41691) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/dotfiles in 0s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:42021) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/notes in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:42286) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/forge in 0s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:42653) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/greet in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:43828) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built - in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |226 of 226 pages render the same without 11ty |guide: 4 files, links ok |ok
Signature: good, cat
| M | server/ | 5 | +++-- |
@@ -101,9 +101,10 @@ if [ -n "${FORGE_OWNER:-}" ] && [ -n "${FORGE_OWNER_KEY:-}" ] && ! grep -q "^$FO
101101 fi102102 as_git $forge keys sync103103 104-# TLS is terminated in front of us; Caddy serves plain HTTP on 8080.104+# TLS is terminated in front of us; Caddy serves plain HTTP on 8080. The105+# config is written anew on every boot, so Caddy keeps no copy of it.105106 {106- printf '{\n\tauto_https off\n\thttp_port 8080\n\tadmin off\n}\n\n'107+ printf '{\n\tauto_https off\n\thttp_port 8080\n\tadmin off\n\tpersist_config off\n}\n\n'107108 as_git $forge server caddyfile :8080 "$pages" "${pages:+http://$pages}"108109 } >/etc/caddy/Caddyfile109110