Commit Graph

136 Commits

Author SHA1 Message Date
admin d7ffcbe74d rallly: raise app memory 256M -> 768M (OOM-killed at 256M)
rallly 4.11.1 (Next.js 16) booted and was immediately killed by the cgroup OOM
killer, 14 times in 420s:

  ▲ Next.js 16.2.6
  - Local:  http://localhost:3000
  ✓ Ready in 0ms
  Killed

Migrations applied fine; it simply cannot live in 256M any more. App limit
256M -> 768M; sidecar Postgres left at 256M; .felhom.yml mem_limit updated to
the new sum (768+256 = 1024M) per the REUSE.md rule.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 01:05:32 +02:00
admin 63f0ca5622 homebox: add required HBOX_AUTH_API_KEY_PEPPER (0.26 panics without it)
With the tag fixed so the image actually pulls, homebox 0.26.2 then panicked on
every start (16 restarts):

  panic: auth.api_key_pepper must be set to at least 32 bytes; generate with
  `openssl rand -base64 48` and provide via HBOX_AUTH_API_KEY_PEPPER.
  Rotating it invalidates all issued API keys

Added as a generated base64key:48 secret (matching upstream's own suggestion)
and marked data_key: true -- rotating it invalidates every issued API key, so
restore must recover the original rather than mint a new one.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:54:20 +02:00
admin 05cb216968 papra: add required AUTH_SECRET (app refuses to boot without it)
papra was NOT version-bumped by this campaign -- it crash-looped at its existing
26.6.1-rootless pin, so this is a PRE-EXISTING catalog defect: papra has never
been deployable from this template.

  Invalid configuration: In production, the auth secret must not be the default
  one. Please set a secure auth secret using the AUTH_SECRET environment
  variable.

Added as a generated hex:32 secret and marked data_key: true -- it signs
sessions, so regenerating it on restore would invalidate every login.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:42:29 +02:00
admin 1c06ef00bd n8n: raise memory 512M -> 1536M (V8 heap OOM proven during validation)
n8n 2.31.3 died on a fresh deploy under the 512M limit:

  FATAL ERROR: Ineffective mark-compacts near heap limit
  Allocation failed - JavaScript heap out of memory

Note the container still reported *healthy* while the Node process was crashing,
so docker health alone did not catch this -- the log scan did.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:42:29 +02:00
admin 4ce7beea9e outline: set PGSSLMODE=disable (1.x defaults to SSL; the sidecar Postgres has none)
outline 1.9.1 crash-looped (15 restarts in 420s) on a fresh deploy:

  SequelizeConnectionError: The server does not support SSL connections
  Set the PGSSLMODE environment variable to 'disable' or enable SSL on your
  database server.

The stack's own Postgres sidecar is on the app-internal network and does not
serve SSL, so the correct answer is to disable it client-side. Env var proven
wrong by the deploy.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:42:28 +02:00
admin 9938c5564e gramps-web: raise memory 384M -> 1024M (OOM proven during validation)
v25.6.0 could not stay up under the 384M limit. Live evidence from the demo box:

  [ERROR] Worker (pid:559) was sent SIGKILL! Perhaps out of memory?
  [ERROR] Worker (pid:556) was sent SIGKILL! Perhaps out of memory?

gunicorn kept booting replacement workers that were killed in turn, so the
container never reached healthy and Traefik returned 404. mem_limit in
.felhom.yml raised to match the compose limit; mem_request 100M -> 384M.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:02:25 +02:00
admin 25a2480396 homebox: v0.16.3 -> 0.26.2 and drop the 'v' tag prefix (old pin no longer resolves)
Upstream stopped publishing v-prefixed tags on ghcr.io/sysadminsmedia/homebox.
Neither the new v0.26.2 NOR the previously shipped v0.16.3 resolves any more --
so homebox was already undeployable from the catalog before this campaign; the
deploy is accepted and then no container is ever created because the pull fails.
Pinned to the un-prefixed 0.26.2, which resolves.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-19 00:02:25 +02:00
admin 604284f91c gokapi: revert v2.2.4 -> v1.9.6 (v2 refuses to start against the seeded config)
Campaign 7 bumped gokapi to v2.2.4. It crash-loops on a FRESH deploy:

  Gokapi v2.2.4 starting
  Warning: Salt for admin password invalid, generating new salt.
  Please update to version 2.0.0 before running this version.

The catalog seeds a v1-era config.json (ConfigVersion 21). v2.2.4 sees that
config version and demands an intermediate v2.0.0 migration pass -- even with an
empty data volume -- so it never comes up.

Making v2 work needs the seeded config regenerated in the v2 format, which is
template/config restructuring and therefore OUTSIDE this campaign's allowed-fix
set (pins, healthchecks, start_period, proven-wrong env, OOM limits). Shipping
the broken pin would break gokapi for every NEW customer deploy, so the pin is
reverted to the last known-good version and the upgrade is recorded as a
finding for a dedicated task.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:32:20 +02:00
admin 8f35697931 uptime-kuma: pin floating ':2' -> 2.4.0
House style is a specific upstream tag. ':2' is a floating major that silently
moves under customers on every pull -- the same class of problem as ':latest',
just narrower. Pinned to the current 2.x release.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:39 +02:00
admin e5657c926b zipline: 4.0.0 -> 4.6.1
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:06 +02:00
admin e43fa89f80 wger: 2.3 -> 2.6
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:06 +02:00
admin 501c02fbfc wanderer: meilisearch v1.12 -> v1.49 (app image left: ghcr.io/flomp/wanderer does not resolve, see campaign doc)
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:06 +02:00
admin 3fa63cddbd vikunja: 0.24.6 -> 2.3.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:06 +02:00
admin 4ff5b8f95b vaultwarden: 1.33.2-alpine -> 1.36.0-alpine
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin 7fc24df469 tandoor: 1.5.26 -> 2.6.13 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin 712c760fc8 sparkyfitness: v0.17.2 -> v0.17.3 (server + web)
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin 507eb3f6dd sonarr: 4.0.13 -> 4.0.19
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin 780f4f457f seerr: 2.3.0 -> 2.7.3
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin 52e03be3eb romm: 4.5.0 -> 5.0.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin e3f3a815e9 rallly: 3.11.2 -> 4.11.1 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin e0b6da6376 radarr: 5.17.2 -> 6.3.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:05 +02:00
admin cf8b6456ee privatebin: 1.7.5 -> 2.0.5 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin f01ed3f963 paperless-ngx: 2.15.3 -> 2.20.15
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin 4d6b55d2cb outline: 0.82.0 -> 1.9.1 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin 0ee1ce42eb opengist: 1.10 -> 1.13
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin bc2a2dbe08 onlyoffice: 8.3.0 -> 9.4.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin 5e2c1ae31e nextcloud: 31.0.14-apache -> 34.0.1-apache [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin c615bde179 navidrome: 0.54.5 -> 0.63.2
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin ec7f9c41ec n8n: 1.79.3 -> 2.31.3 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:04 +02:00
admin 9055a6aa0b mealie: v3.10.2 -> v3.20.1
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:03 +02:00
admin aa27d0c054 komga: 1.20.0 -> 1.25.0
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:03 +02:00
admin a3f9b02ebf kimai: apache-2.25.0 -> apache-2.57.0
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:27:03 +02:00
admin 373d6cfb08 emby: fix lying healthcheck (curl absent; image ships only BusyBox)
The healthcheck ran 'curl -f', but the Emby image has neither curl nor a
standalone wget -- only BusyBox. The probe ENOENT'd every run, the container
stayed permanently unhealthy, and Traefik will not route to an unhealthy
container, so the customer got a 404 while Emby itself was serving fine.

Switched to the BusyBox-wget family via the /bin/busybox multi-call binary.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 23:14:02 +02:00
admin 4dd4f47363 jellyfin: 10.11.6 -> 10.11.11
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin cb10409098 homepage: v1.2.0 -> v1.13.2
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin 893e26ac8b homebox: v0.16.3 -> v0.26.2
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin 2f6ef07f50 home-assistant: 2026.2.2 -> 2026.7.2
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin 4ebd11d021 gramps-web: v24.12.1 -> v25.6.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin b789acc427 grafana: 11.5.1 -> 13.1.0 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:13 +02:00
admin 0873294781 gokapi: v1.9.6 -> v2.2.4 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin 12e36d3c01 glance: v0.7.4 -> v0.8.5
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin 6742d5faf1 gitea: 1.23.4 -> 1.27.0
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin e881018fd4 ghost: 6.19.2-alpine -> 6.53.0-alpine
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin bcd2c35c7a emby: 4.9.0.42 -> 4.10.0.20
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin a2115b27c7 docmost: 0.25.3 -> 0.95.0
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin 19a6ea421e code-server: 4.96.4 -> 4.129.0
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:12 +02:00
admin da04c3583f claper: 1.8 -> 2.5 [MAJOR]
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:59:11 +02:00
admin c7de1e6364 adventurelog: fix lying frontend healthcheck (wget in a distroless image)
The frontend healthcheck ran 'wget --spider', but the image is distroless: no
shell, no wget, no curl, and node itself is only reachable at an absolute path
(/nodejs/bin/node, off PATH). The probe therefore ENOENT'd on every run, the
container stayed permanently unhealthy, and Traefik -- which will not route to
an unhealthy container -- returned 404 to the customer even though the app was
serving 200 on :3000 the whole time.

Replaced with the Node-exec family using the absolute interpreter path.
Live-verified on the demo box.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:55:40 +02:00
admin 147cee7795 calcom: v4.6.9 -> v6.2.0 [MAJOR]
MAJOR: two major versions (v4 -> v6); breaking notes pending upstream changelog
review, recorded in the campaign doc.

Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:37:35 +02:00
admin b5abc84d4e audiobookshelf: 2.19.5 -> 2.35.1
Campaign 7 catalog sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
2026-07-18 22:37:34 +02:00