Compare commits

...

142 Commits

Author SHA1 Message Date
admin e459b0d262 immich/renovate: roll back immich-postgres v17 -> v16 (PG major datadir incompat) + gate postgres-family images
Renovate PR #76 (merged 2026-06-06 10:48) bumped ghcr.io/immich-app/postgres
from `16-vectorchord0.3.0` to `17-vectorchord0.3.0`. PostgreSQL major
upgrades require pg_upgrade or pg_dump/restore — the new server binary
refuses to open a data directory initialized by the previous major:

  FATAL: database files are incompatible with server
  DETAIL: The data directory was initialized by PostgreSQL version 16,
          which is not compatible with this version 17.6

Both immich-postgres and immich-server (depends on Postgres) went into
CrashLoopBackOff. PVC still holds the v16 datadir.

This PR:
  1. Reverts ghcr.io/immich-app/postgres back to `16-vectorchord0.3.0`
     so immich recovers immediately.
  2. Adds a packageRule with `dependencyDashboardApproval: true` covering
     `postgres`, `postgis/postgis`, and `ghcr.io/immich-app/postgres`.
     Any update to these images is now held on the Dashboard's "Pending
     Approval" section -- Renovate won't even open a PR until the user
     explicitly ticks the box. Forces the migration plan to be made
     BEFORE the change reaches main.

This is the same recovery pattern we just used for meilisearch (PR #77)
-- a class of stateful images where the on-disk format isn't
forward-compatible across version bumps.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 11:00:32 +02:00
admin 25c1baf1c3 Merge pull request 'Update grafana/grafana Docker tag to v13' (#58) from renovate/grafana-grafana-13.x into main
Reviewed-on: #58
2026-06-06 08:56:24 +00:00
admin 184c469c51 Merge pull request 'Update redis Docker tag to v8' (#64) from renovate/redis-8.x into main
Reviewed-on: #64
2026-06-06 08:56:16 +00:00
admin 6291423776 Merge pull request 'Update ghcr.io/cloudnative-pg/cloudnative-pg Docker tag to v1.29.1' (#70) from renovate/ghcr.io-cloudnative-pg-cloudnative-pg-1.x into main
Reviewed-on: #70
2026-06-06 08:56:08 +00:00
admin d063513869 Merge pull request 'Update ghcr.io/immich-app/immich-server Docker tag to v2.7.5' (#74) from renovate/ghcr.io-immich-app-immich-server-2.x into main
Reviewed-on: #74
2026-06-06 08:48:14 +00:00
admin 0cd8a3272d Merge pull request 'Update ghcr.io/immich-app/postgres Docker tag to v17' (#76) from renovate/ghcr.io-immich-app-postgres-17.x into main
Reviewed-on: #76
2026-06-06 08:48:07 +00:00
admin 9de82b7295 Merge pull request 'fix: roll back wanderer meilisearch v1.45.2 -> v1.11.3 (index incompat) + dashboardApproval' (#77) from fix/meilisearch-rollback into main 2026-06-06 08:45:24 +00:00
admin 1338bbb6ae wanderer/renovate: roll back meilisearch v1.45.2 -> v1.11.3 + gate future bumps
Renovate PR #32 (merged 2026-06-06 09:30) bumped getmeili/meilisearch
from v1.11.3 to v1.45.2 under the default-allow + 3-day stability rule.
Meilisearch's on-disk index format is NOT forward-compatible across
that range; wanderer-meilisearch went into CrashLoopBackOff with:

  Error: Your database version (1.11.3) is incompatible with your
  current engine version (1.45.2).

The PVC still holds the v1.11.x index, so the safest immediate recovery
is reverting the image tag. Wanderer's search starts working again the
moment the pod comes up on v1.11.3.

To prevent recurrence, add a packageRule that holds ALL meilisearch
updates behind the dashboard's "Pending Approval" checkbox via
`dependencyDashboardApproval: true`. PRs won't be opened until the
user explicitly approves them on the dashboard, so the version bump
can be planned around the documented dump/restore migration path
(https://www.meilisearch.com/docs/learn/update_and_migration/updating).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 10:45:23 +02:00
admin 789c75d253 Merge pull request 'Update codercom/code-server Docker tag to v4.123.0' (#52) from renovate/codercom-code-server-4.x into main
Reviewed-on: #52
2026-06-06 08:36:58 +00:00
admin 3c37d283da Merge pull request 'Update registry.k8s.io/external-dns/external-dns Docker tag to v0.21.0' (#75) from renovate/registry.k8s.io-external-dns-external-dns-0.x into main 2026-06-06 08:33:51 +00:00
Renovate Bot 231d8fd492 Update ghcr.io/immich-app/postgres Docker tag to v17
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:50 +00:00
Renovate Bot 6d46261dff Update registry.k8s.io/external-dns/external-dns Docker tag to v0.21.0
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:44 +00:00
admin 82c397af2c Merge pull request 'Update ghcr.io/immich-app/immich-machine-learning Docker tag to v2.7.5' (#73) from renovate/ghcr.io-immich-app-immich-machine-learning-2.x into main 2026-06-06 08:33:42 +00:00
Renovate Bot c0acfc338c Update ghcr.io/immich-app/immich-server Docker tag to v2.7.5
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:40 +00:00
admin 7956ca930b Merge pull request 'Update ghcr.io/headlamp-k8s/headlamp Docker tag to v0.42.0' (#72) from renovate/ghcr.io-headlamp-k8s-headlamp-0.x into main 2026-06-06 08:33:26 +00:00
Renovate Bot c5887cb6d6 Update ghcr.io/immich-app/immich-machine-learning Docker tag to v2.7.5
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:26 +00:00
admin 2d5aca0df3 Merge pull request 'Update ghcr.io/gethomepage/homepage Docker tag to v1.13.1' (#71) from renovate/ghcr.io-gethomepage-homepage-1.x into main 2026-06-06 08:33:23 +00:00
Renovate Bot 56f2622225 Update ghcr.io/headlamp-k8s/headlamp Docker tag to v0.42.0
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:22 +00:00
Renovate Bot a3525c7ab6 Update ghcr.io/gethomepage/homepage Docker tag to v1.13.1
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:16 +00:00
Renovate Bot e0550cbe54 Update ghcr.io/cloudnative-pg/cloudnative-pg Docker tag to v1.29.1
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:11 +00:00
admin f3d0b7e404 Merge pull request 'Update ghcr.io/stakater/reloader Docker tag to v1.4.17' (#69) from renovate/ghcr.io-stakater-reloader-1.x into main 2026-06-06 08:33:11 +00:00
admin 8bc11a6db7 Merge pull request 'Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.15' (#68) from renovate/ghcr.io-paperless-ngx-paperless-ngx-2.x into main 2026-06-06 08:33:04 +00:00
Renovate Bot 22d5c38bac Update ghcr.io/stakater/reloader Docker tag to v1.4.17
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:33:03 +00:00
admin 8f29f9e645 Merge pull request 'Update dependency ghcr.io/lukegus/termix to release-1.11.2' (#67) from renovate/ghcr.io-lukegus-termix-1.x into main 2026-06-06 08:32:55 +00:00
Renovate Bot a2d69962ed Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.15
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 08:32:55 +00:00
Renovate Bot a993456653 Update dependency ghcr.io/lukegus/termix to release-1.11.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 08:32:50 +00:00
admin 3bfd8afb43 Merge pull request 'renovate: termix — strip -tag suffix from github-releases candidates' (#66) from feat/renovate-termix-tag-suffix into main 2026-06-06 08:27:15 +00:00
admin e12cc36266 renovate: termix — strip -tag suffix from GitHub release tag_names
Verified with the GitHub Releases API for Termix-SSH/Termix that the
actual `tag_name` field is `release-X.Y.Z-tag` (with a `-tag` suffix),
even though the release `name` is `release-X.Y.Z`. Renovate's
github-releases datasource keys off `tag_name`, so the regex versioning
correctly rejects all candidates as invalid:

  INFO: Found no results from datasource that look like a version
        (dependency=Termix-SSH/Termix)

The docker image at ghcr.io/lukegus/termix uses the short form
(`release-X.Y.Z`, no suffix), which is what the manifest also has.

Fix: add `extractVersionTemplate: ^(?<version>release-\d+\.\d+\.\d+)`
which Renovate applies to each candidate from the datasource BEFORE
the versioning regex sees it. tag_names `release-2.3.2-tag` become
`release-2.3.2`, the regex versioning parses them, comparison works,
and Renovate writes the short form back to the manifest -- which is
the correct tag at the ghcr.io registry.

(extractVersion is NOT applied to currentValue, but currentValue already
is in the short form, so no normalization needed there.)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 10:27:13 +02:00
admin 4539f00e61 Merge pull request 'Update python Docker tag to v3.14' (#47) from renovate/python-3.x into main
Reviewed-on: #47
2026-06-06 08:26:36 +00:00
admin 0fdb79519d Merge pull request 'Update mysql Docker tag to v8.4' (#42) from renovate/mysql-8.x into main
Reviewed-on: #42
2026-06-06 08:26:14 +00:00
admin 6be3d58aad Merge pull request 'Update linuxserver/bookstack Docker tag to v26' (#59) from renovate/linuxserver-bookstack-26.x into main
Reviewed-on: #59
2026-06-06 08:20:07 +00:00
admin f05c1b39cc Merge pull request 'Update docker.io/library/nextcloud Docker tag to v33' (#57) from renovate/docker.io-library-nextcloud-33.x into main
Reviewed-on: #57
2026-06-06 08:19:46 +00:00
admin 98ec1bf3b2 Merge pull request 'Update gtstef/filebrowser Docker tag to v1.3.3' (#35) from renovate/gtstef-filebrowser-1.x into main
Reviewed-on: #35
2026-06-06 08:19:22 +00:00
admin f6736de333 Merge pull request 'Update gitea/gitea Docker tag to v1.26.2' (#33) from renovate/gitea-gitea-1.x into main
Reviewed-on: #33
2026-06-06 08:19:16 +00:00
admin 04081723e7 Merge pull request 'renovate: termix customManager regex versioning (loose+extractVersion still failing)' (#65) from feat/renovate-termix-regex-versioning into main 2026-06-06 08:03:55 +00:00
admin a47111cce1 renovate: termix customManager — use regex versioning instead of loose+extractVersion
Third attempt. Debug run confirmed `loose` + `extractVersion` STILL produces:

  DEBUG: Dependency Termix-SSH/Termix has unsupported/unversioned value
         release-1.11.0 (versioning=loose)
  DEBUG: Skipping Termix-SSH/Termix because no currentDigest or pinDigests

`extractVersion` is only applied to CANDIDATE versions (from the datasource),
not to currentValue. Renovate's pre-validation runs the raw `release-1.11.0`
through `loose`, which can't parse it (the `release-` prefix breaks semver
detection), so Renovate falls back to digest-only and gives up.

`regex` versioning is the only mode that parses the prefixed value directly
(no extractVersion needed) — Renovate's regex.matches() accepts `release-1.11.0`
because the rule's pattern captures the whole tag. github-releases datasource
returns the upstream `release-X.Y.Z` tag_names which the same regex parses.
No conversion needed; the new tag written back to the manifest is the same
`release-X.Y.Z` form, valid in the ghcr.io/lukegus/termix registry.

Removes extractVersionTemplate (no longer needed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 10:03:54 +02:00
Renovate Bot 56d39399d6 Update redis Docker tag to v8
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:53:16 +00:00
Renovate Bot 7ca41bb929 Update linuxserver/bookstack Docker tag to v26
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:52 +00:00
Renovate Bot a2e68c1745 Update grafana/grafana Docker tag to v13
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:33 +00:00
admin cf26da036e Merge pull request 'Update vaultwarden/server Docker tag to v1.36.0' (#56) from renovate/vaultwarden-server-1.x into main 2026-06-06 07:52:31 +00:00
Renovate Bot 283688cf2a Update docker.io/library/nextcloud Docker tag to v33
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:29 +00:00
admin 47ca9140d5 Merge pull request 'Update vabene1111/recipes Docker tag to v2.6' (#55) from renovate/vabene1111-recipes-2.x into main 2026-06-06 07:52:23 +00:00
Renovate Bot fc6f6c5bda Update vaultwarden/server Docker tag to v1.36.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:23 +00:00
admin ce28c03c5d Merge pull request 'Update tailscale/tailscale Docker tag to v1.98.4' (#54) from renovate/tailscale-tailscale-1.x into main 2026-06-06 07:52:18 +00:00
Renovate Bot 35710fe5ea Update vabene1111/recipes Docker tag to v2.6
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:16 +00:00
admin 3c31024828 Merge pull request 'Update renovate/renovate Docker tag to v43.209.3' (#53) from renovate/renovate-renovate-43.x into main 2026-06-06 07:52:09 +00:00
Renovate Bot 9ce2cc2c25 Update tailscale/tailscale Docker tag to v1.98.4
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:52:08 +00:00
Renovate Bot 013824af38 Update renovate/renovate Docker tag to v43.209.3
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:48:37 +00:00
Renovate Bot 33629d2f2d Update python Docker tag to v3.14
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:48:35 +00:00
Renovate Bot c6533a92f1 Update mysql Docker tag to v8.4
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:48:32 +00:00
Renovate Bot ec6262ce6c Update gtstef/filebrowser Docker tag to v1.3.3
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:48:29 +00:00
Renovate Bot 9db5517659 Update gitea/gitea Docker tag to v1.26.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:48:19 +00:00
admin 82bb8bab45 Merge pull request 'Update index.docker.io/rclone/rclone Docker tag to v1.74.3' (#51) from renovate/index.docker.io-rclone-rclone-1.x into main 2026-06-06 07:48:16 +00:00
Renovate Bot c7ec82eae0 Update codercom/code-server Docker tag to v4.123.0
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 07:48:15 +00:00
admin 5836c8e9b4 Merge pull request 'Update filebrowser/filebrowser Docker tag to v2.63.13' (#50) from renovate/filebrowser-filebrowser-2.x into main 2026-06-06 07:48:09 +00:00
Renovate Bot 35986cb892 Update index.docker.io/rclone/rclone Docker tag to v1.74.3
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 07:48:08 +00:00
Renovate Bot 386e764713 Update filebrowser/filebrowser Docker tag to v2.63.13
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 07:47:56 +00:00
admin df5afe1695 Merge pull request 'renovate: termix via customManagers (inline comments not honored by kubernetes manager)' (#49) from feat/renovate-termix-custommanagers into main 2026-06-06 07:42:14 +00:00
admin c5bbe3d17f renovate: termix via customManagers (kubernetes manager doesn't honor inline comments)
The previous attempt (inline `# renovate:` comment in termix.yaml) silently
did nothing -- after merge + manual run, the dashboard's
`termix-system/termix.yaml (2)` was the resource count (Deployment +
Ingress), not detected updates. No PRs opened, no termix branches, no
queue entries anywhere.

Root cause: Renovate's `kubernetes` manager does NOT process inline
`# renovate:` comments. Those work for dockerfile/flux/helmfile/github-
actions/helm-values/etc., but kubernetes is missing from that list.

Correct fix: a `customManagers.regex` entry that extracts termix's image
directly with the right datasource/versioning/extractVersion set at
EXTRACTION time -- before any docker-version pre-check can reject the
prefixed tag. Plus a packageRule disabling the kubernetes manager for
termix so it doesn't silently skip the dep and clutter the dashboard.

Changes:
  - admin-system/renovate.yaml:
    * enabledManagers += "custom.regex"
    * customManagers: termix.yaml regex extraction -> github-releases
      datasource on Termix-SSH/Termix with `extractVersion=^release-(?<version>.+)$`
    * packageRules: disable kubernetes manager for ghcr.io/lukegus/termix
  - termix-system/termix.yaml: drop the useless inline comment, leave a
    NOTE explaining where the actual config lives.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 09:42:12 +02:00
admin 9d996ee0ec Merge pull request 'Update redis Docker tag' (#48) from renovate/redis-7.x into main 2026-06-06 07:32:31 +00:00
Renovate Bot b29db876d5 Update redis Docker tag
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:32:28 +00:00
admin 7ba27a7e4f Merge pull request 'Update prom/prometheus Docker tag to v3.12.0' (#46) from renovate/prom-prometheus-3.x into main 2026-06-06 07:32:24 +00:00
admin 0fb59899c9 Merge pull request 'Update outlinewiki/outline Docker tag to v1.8.0' (#45) from renovate/outlinewiki-outline-1.x into main 2026-06-06 07:32:11 +00:00
Renovate Bot cb991b5d0c Update prom/prometheus Docker tag to v3.12.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:32:10 +00:00
admin 0c7f5b6291 Merge pull request 'Update onlyoffice/documentserver Docker tag to v9.4.0' (#44) from renovate/onlyoffice-documentserver-9.x into main 2026-06-06 07:32:03 +00:00
Renovate Bot a261ff3e72 Update outlinewiki/outline Docker tag to v1.8.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:32:03 +00:00
admin 5c2dc27954 Merge pull request 'Update nginx Docker tag to v1.31' (#43) from renovate/nginx-1.x into main 2026-06-06 07:31:58 +00:00
Renovate Bot f5cb8f48c6 Update onlyoffice/documentserver Docker tag to v9.4.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:58 +00:00
Renovate Bot dee4f0fac3 Update nginx Docker tag to v1.31
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:55 +00:00
admin 9d7dff645a Merge pull request 'Update mikefarah/yq Docker tag to v4.53.2' (#41) from renovate/mikefarah-yq-4.x into main 2026-06-06 07:31:51 +00:00
admin fcc0bc5ef8 Merge pull request 'Update louislam/uptime-kuma Docker tag to v2.4.0' (#40) from renovate/louislam-uptime-kuma-2.x into main 2026-06-06 07:31:44 +00:00
Renovate Bot be3c5e431e Update mikefarah/yq Docker tag to v4.53.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:43 +00:00
admin 80dfd75227 Merge pull request 'Update linuxserver/qbittorrent Docker tag to v5.2.1' (#39) from renovate/linuxserver-qbittorrent-5.x into main 2026-06-06 07:31:40 +00:00
Renovate Bot 9c72b0cab4 Update louislam/uptime-kuma Docker tag to v2.4.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:38 +00:00
admin 289d1ab763 Merge pull request 'Update index.docker.io/rclone/rclone Docker tag to v1.74.2' (#38) from renovate/index.docker.io-rclone-rclone-1.x into main 2026-06-06 07:31:21 +00:00
Renovate Bot 23695bd9a4 Update linuxserver/qbittorrent Docker tag to v5.2.1
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:21 +00:00
admin 1a52aca6db Merge pull request 'Update index.docker.io/alpine Docker tag to v3.23' (#37) from renovate/index.docker.io-alpine-3.x into main 2026-06-06 07:31:14 +00:00
Renovate Bot 6ec9f6a0ae Update index.docker.io/rclone/rclone Docker tag to v1.74.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:14 +00:00
admin fd97f14293 Merge pull request 'Update healthchecks/healthchecks Docker tag to v4.2' (#36) from renovate/healthchecks-healthchecks-4.x into main 2026-06-06 07:31:10 +00:00
Renovate Bot 0c62b28210 Update index.docker.io/alpine Docker tag to v3.23
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:10 +00:00
Renovate Bot 6f82023155 Update healthchecks/healthchecks Docker tag to v4.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:31:05 +00:00
admin b73786871e Merge pull request 'Update grafana/grafana Docker tag to v12.4.4' (#34) from renovate/grafana-grafana-12.x into main 2026-06-06 07:31:01 +00:00
Renovate Bot 0afa7d91e0 Update grafana/grafana Docker tag to v12.4.4
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:30:42 +00:00
admin 7af4092e32 Merge pull request 'Update getmeili/meilisearch Docker tag to v1.45.2' (#32) from renovate/getmeili-meilisearch-1.x into main 2026-06-06 07:30:33 +00:00
admin c19de989ce Merge pull request 'Update filebrowser/filebrowser Docker tag to v2.63.5' (#31) from renovate/filebrowser-filebrowser-2.x into main 2026-06-06 07:30:16 +00:00
Renovate Bot 1810e40fb4 Update getmeili/meilisearch Docker tag to v1.45.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:30:16 +00:00
admin 6013ea668c Merge pull request 'Update docker.io/valkey/valkey Docker tag to v9.1' (#30) from renovate/docker.io-valkey-valkey-9.x into main 2026-06-06 07:29:57 +00:00
Renovate Bot 1233868f63 Update filebrowser/filebrowser Docker tag to v2.63.5
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:29:55 +00:00
admin 7658914ddb Merge pull request 'Update docker.io/bitnamilegacy/postgresql Docker tag to v17.6.0' (#29) from renovate/docker.io-bitnamilegacy-postgresql-17.x into main 2026-06-06 07:29:51 +00:00
Renovate Bot 7aecce94a1 Update docker.io/valkey/valkey Docker tag to v9.1
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:29:51 +00:00
admin f11126cac3 Merge pull request 'Update codercom/code-server Docker tag to v4.122.1' (#28) from renovate/codercom-code-server-4.x into main 2026-06-06 07:29:44 +00:00
Renovate Bot 4431c44991 Update docker.io/bitnamilegacy/postgresql Docker tag to v17.6.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:29:44 +00:00
Renovate Bot c65cf19bd2 Update codercom/code-server Docker tag to v4.122.1
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 07:29:42 +00:00
admin c7ff367cdf Merge pull request 'renovate: termix via inline manifest comment (packageRule applied too late)' (#27) from feat/renovate-termix-inline-comment into main 2026-06-06 07:25:31 +00:00
admin a2686fac96 renovate: termix via inline manifest comment (packageRule was applied too late)
Debug-level dry-run revealed why the previous packageRule approach
(`datasource: github-releases` + `packageName: Termix-SSH/Termix` +
`versioning: regex:^release-...`) silently did nothing:

  DEBUG: Dependency ghcr.io/lukegus/termix has unsupported/unversioned
         value release-1.11.0 (versioning=docker)
  DEBUG: Skipping ghcr.io/lukegus/termix because no currentDigest or
         pinDigests

The kubernetes manager extracts the image with the default versioning
(=docker), runs an EARLY currentValue pre-check, fails on `release-1.11.0`,
falls back to digest-based updates, and gives up -- all BEFORE the
packageRule's `versioning` override has a chance to apply. Same failure
class as the earlier `extractVersion` attempt.

Renovate's documented fix for this exact case is an inline manifest
comment that applies overrides at extraction time:

  # renovate: datasource=github-releases depName=Termix-SSH/Termix \
  #          versioning=loose extractVersion=^release-(?<version>.+)$
  image: ghcr.io/lukegus/termix:release-1.11.0

With extractVersion stripping the `release-` prefix at extraction, the
loose semver parser handles the resulting `1.11.0` / `2.3.2` fine.
github-releases datasource gives Renovate real upstream timestamps so
the 3-day stability gate works normally. Removing the now-superseded
packageRule keeps the config clean (6 rules instead of 7).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 09:25:29 +02:00
admin 9214a4dde2 Merge pull request 'renovate: bump throttle 8/8 -> 16/16' (#26) from feat/renovate-throttle-16 into main 2026-06-06 06:53:05 +00:00
admin a52f8ccf8d renovate: bump throttle 8/8 -> 16/16
26 items sat in dashboard "Rate-Limited" after the first default-allow
run (Sat 02:00); at 8 PRs/run + 1 run/week the backlog would take ~3
weeks to drain. Doubling to 16/16 cuts that to ~2 runs while still
leaving headroom (the dashboard "Pending Approval" majors and ghcr.io
"Pending Status Checks" don't count against this limit anyway).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 08:53:03 +02:00
admin fbe9eeec21 Merge pull request 'Update actualbudget/actual-server Docker tag to v26.6.0' (#24) from renovate/actualbudget-actual-server-26.x into main 2026-06-06 06:52:24 +00:00
admin fc1df98503 Merge pull request 'Update docker.io/library/nextcloud Docker tag to v32.0.10' (#20) from renovate/docker.io-library-nextcloud-32.x into main 2026-06-06 06:52:01 +00:00
admin e4b36e7822 Merge pull request 'Update docker.io/valkey/valkey:9.0-alpine Docker digest to d1cc706' (#18) from renovate/docker.io-valkey-valkey-9.0-alpine into main 2026-06-06 06:51:39 +00:00
admin 6b2f69feaa Merge pull request 'Update busybox Docker tag to v1.38' (#25) from renovate/busybox-1.x into main 2026-06-06 00:04:48 +00:00
Renovate Bot 03b8af9b78 Update busybox Docker tag to v1.38
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:43 +00:00
admin b98a0928cd Merge pull request 'Update wanderer to v0.19.2' (#23) from renovate/wanderer into main 2026-06-06 00:04:39 +00:00
Renovate Bot c9bc5cadc4 Update actualbudget/actual-server Docker tag to v26.6.0
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:38 +00:00
admin 51581714ed Merge pull request 'Update linuxserver/bookstack Docker tag to v25.12.20251224' (#22) from renovate/linuxserver-bookstack-25.x into main 2026-06-06 00:04:33 +00:00
Renovate Bot a8610dc27e Update wanderer to v0.19.2
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:33 +00:00
admin ad449b9e72 Merge pull request 'Update glanceapp/glance Docker tag to v0.8.5' (#21) from renovate/glanceapp-glance-0.x into main 2026-06-06 00:04:22 +00:00
Renovate Bot ddb2797b10 Update linuxserver/bookstack Docker tag to v25.12.20251224
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:21 +00:00
Renovate Bot 8b14b0e99e Update glanceapp/glance Docker tag to v0.8.5
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:18 +00:00
Renovate Bot 2b260bc2eb Update docker.io/library/nextcloud Docker tag to v32.0.10
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:14 +00:00
admin d4f09f2cd9 Merge pull request 'Update advplyr/audiobookshelf Docker tag to v2.35.1' (#19) from renovate/advplyr-audiobookshelf-2.x into main 2026-06-06 00:04:14 +00:00
Renovate Bot 8a807d3e5c Update advplyr/audiobookshelf Docker tag to v2.35.1
renovate/stability-days Updates have met minimum release age requirement
2026-06-06 00:04:08 +00:00
Renovate Bot 8b4b0df92c Update docker.io/valkey/valkey:9.0-alpine Docker digest to d1cc706
renovate/stability-days Updates have not met minimum release age requirement
2026-06-06 00:04:06 +00:00
admin da1e8045d0 feat(office): add BentoPDF (pdf.dooplex.hu)
Privacy-focused, client-side PDF toolkit deployed into the office-system
namespace alongside OnlyOffice. Stateless (no DB/PVC); nginx-internal
ingress with HU geo-restriction and letsencrypt-prod TLS. Auto-synced by
the existing `office` ArgoCD Application.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 12:36:33 +02:00
admin fd73c41152 Merge pull request 'renovate: move cron to Sat 02:00 Europe/Budapest' (#17) from feat/renovate-cron-saturday into main 2026-06-05 07:31:24 +00:00
admin b96703f2df renovate: move cron to Sat 02:00 Europe/Budapest
Was Sun 04:00; now Sat 02:00 so Renovate's wave lands at the start of
the weekend instead of the end. If an auto-merged update breaks
something, Viktor has the full weekend to troubleshoot.

`0 2 * * 6` = Saturday 02:00 in Europe/Budapest (the CronJob already
sets timeZone, so this is wall-clock local).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 09:30:58 +02:00
admin e147d829e7 Merge pull request 'renovate: default-allow + codify ArgoCD auto-sync' (#16) from feat/renovate-default-allow into main 2026-06-05 05:58:04 +00:00
admin 24be0b45fd renovate: termix uses github-releases datasource (restores 3-day gate)
Replaces the security-flagged `minimumReleaseAge: 0` bypass with a
proper datasource swap.

Why: ghcr.io OCI manifests for ghcr.io/lukegus/termix don't expose a
release timestamp, so Renovate's default `timestamp-required` mode
holds updates indefinitely. The previous fix (zeroing the gate) was
flagged as a supply-chain control regression -- correctly, since it
weakens the stability protection for that package.

Cleaner fix: point Renovate's version lookup at the upstream GitHub
Releases (Termix-SSH/Termix per the OCI source label) where timestamps
ARE published. The 3-day gate then works for termix the same way it
works for other packages with intact timestamps. Renovate still
updates the same image -- the manager extracts ghcr.io/lukegus/termix
from termix.yaml and writes the new tag back; only the version-source
lookup is redirected. The ghcr.io registry hosts every release-X.Y.Z
tag (verified release-2.3.2 present), so the writeback target stays
valid.

Major bumps (1.x -> 2.x) continue to queue for dashboard approval via
the global major rule.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 07:53:50 +02:00
admin 628a63da83 renovate: revert global timestamp-optional; narrowly bypass age gate for termix
Last commit's global `minimumReleaseAgeBehaviour: timestamp-optional` did
two unwanted things:

  1) Dry-run showed 0 "Would commit" branches (was 33 before). The flag
     appears to alter Renovate's filtering more broadly than expected and
     is not the right knob here.
  2) Automated security review correctly flagged the global form as
     fail-open: a missing timestamp on ANY package would bypass the
     stability gate, weakening supply-chain protection across the fleet.

Narrow fix instead:
  - Revert the global setting (back to default `timestamp-required`).
  - Add `minimumReleaseAge: "0 days"` ONLY to the termix packageRule.
    ghcr.io OCI manifests for ghcr.io/lukegus/termix don't expose a
    release timestamp Renovate can read, so the global 3-day gate would
    otherwise hold updates indefinitely (this is the same class of issue
    that's been keeping reloader/homepage/headlamp on "Pending Status
    Checks" for 8+ days). Major bumps still gated by the global major
    rule (`dependencyDashboardApproval: true`).

Other ghcr.io packages with the same issue (reloader, homepage, headlamp)
remain on the dashboard's "Pending Status Checks" list and can be
force-approved per-update via the checkbox UX. That's a slower but safer
manual-approval path that preserves the supply-chain gate's intent.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 07:43:37 +02:00
admin 6ee7d83f66 renovate: set minimumReleaseAgeBehaviour=timestamp-optional
Debug dry-run revealed why termix (and reloader/homepage/headlamp
8d ago) sit in "Pending Status Checks" indefinitely:

  Marking 2 release(s) as pending, as they do not have a
  releaseTimestamp and we're running with
  minimumReleaseAgeBehaviour=timestamp-required
  "depName": "ghcr.io/lukegus/termix"
  "versions": ["release-1.11.2", "release-1.11.1"]
  "check": "minimumReleaseAge"

ghcr.io OCI manifests for these images don't expose a release
timestamp Renovate can read, so the default `timestamp-required`
mode turns the 3-day stability gate into an INFINITE hold for
ghcr.io packages -- silently. PRs are never opened.

Switching to `timestamp-optional` (other supported value per Renovate
source: lib/config/options/index.ts) makes the gate best-effort: the
3-day window is still enforced for any package the datasource gives a
timestamp for; packages without a timestamp are allowed through.
Restores intended behavior.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 07:37:40 +02:00
admin 69db2c609f renovate: switch termix rule to regex versioning (loose+extractVersion silently skipped it)
Debug-level dry-run showed:
  Dependency ghcr.io/lukegus/termix has unsupported/unversioned value
  release-1.11.0 (versioning=loose)
  Skipping ghcr.io/lukegus/termix because no currentDigest or pinDigests

`versioning: loose + extractVersion` doesn't work as intended here:
Renovate evaluates the currentValue (`release-1.11.0`) against the loose
parser BEFORE extractVersion is applied. loose can't parse a prefixed
value, so Renovate falls back to digest-based comparison; we don't pin
digests, so it silently skips and no PRs are ever opened. (Upstream has
v1.11.1, v1.11.2, and a major bump to release-2.3.2 since we deployed.)

Fix: use `versioning: regex:^release-(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$`
which parses the whole tag including the `release-` prefix. The named
major/minor/patch groups let Renovate categorize bumps correctly so
the existing minor/patch automerge and major dashboard-approval rules
apply normally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 07:27:15 +02:00
admin c308c0a85e renovate: default-allow + codify ArgoCD auto-sync in git
Two coordinated changes — open PR only, do NOT merge until dry-run passes.

1) admin-system/renovate.yaml: flip packageRules from Tier 1 allowlist to
   default-allow with safety gates. Adds prHourlyLimit=8 + prConcurrentLimit=8
   to throttle the first wave. New rules (7 total, order-sensitive):
   - "*"                    : 3-day stability gate (minimumReleaseAge)
   - minor/patch            : automerge via platformAutomerge
   - major                  : dependencyDashboardApproval (manual gate)
   - k3s-bundled (3 images) : disabled (ride k3s upgrades)
   - critical-core (6 imgs) : automerge=false (Viktor merges manually)
     - gitea/gitea, ghcr.io/goauthentik/{server,ldap,proxy},
       ghcr.io/cloudnative-pg/cloudnative-pg, quay.io/argoproj/argocd
     - ArgoCD + authentik /ldap and /proxy are no-ops (not pinned in repo)
   - termix                 : versioning=loose, extractVersion for "release-X.Y.Z"
   - wanderer-db + -web     : groupName=wanderer (one PR, prevents file race)
   enabledManagers unchanged ([kubernetes, helm-values]) — keeps Helmfile-
   managed infra invisible.

2) argocd-apps/homelab.yaml: codify per-app auto-sync intent in git
   (currently lives only on live CRs via UI — DR risk).
   - 35 existing bare-AUTO apps: add `automated: {enabled: true}` (matches live).
   - jarr, version-checker: add `automated: {enabled: true, prune: true,
     selfHeal: true}` (flipping MANUAL -> AUTO so Renovate merges deploy).
   - Untouched: admin-tools, authentik, cnpg-operator, root-apps (already
     have strict automated in git); monitoring, infrastructure, felhom,
     gitea, pihole, database-system (explicitly kept MANUAL per Viktor).
   NOTE: root-apps does NOT enforce syncPolicy.automated drift between git
   and live, so jarr + version-checker will also need a one-off kubectl
   patch after merge to actually become AUTO live. Done in go-live step.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 07:07:39 +02:00
admin 0f592bc626 fixed dev.jarrs.eu ingress 2026-06-02 20:03:02 +02:00
admin b6180e8d79 added US to gitea 2026-06-01 08:41:32 +02:00
admin de593cfcc3 removed wger 2026-05-30 09:17:58 +02:00
admin 88ea6c93ad Merge pull request 'Update flomp/wanderer-db Docker tag to v0.19.1' (#12) from renovate/flomp-wanderer-db-0.x into main 2026-05-27 20:21:18 +00:00
admin d53d29aed2 Merge pull request 'Update arcadiatechnology/crafty-4 Docker tag to v4.10.4' (#10) from renovate/arcadiatechnology-crafty-4-4.x into main 2026-05-27 20:20:01 +00:00
admin d609bb4f1d Merge pull request 'Update rommapp/romm Docker tag to v4.8.1' (#15) from renovate/rommapp-romm-4.x into main 2026-05-27 20:08:00 +00:00
admin a91bb0bea6 Merge pull request 'Update prom/node-exporter Docker tag to v1.11.1' (#14) from renovate/prom-node-exporter-1.x into main 2026-05-27 20:07:52 +00:00
Renovate Bot 35692f58d5 Update rommapp/romm Docker tag to v4.8.1
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:52 +00:00
admin dd68411eb2 Merge pull request 'Update flomp/wanderer-web Docker tag to v0.19.1' (#13) from renovate/flomp-wanderer-web-0.x into main 2026-05-27 20:07:47 +00:00
Renovate Bot 7f9601b1f0 Update prom/node-exporter Docker tag to v1.11.1
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:46 +00:00
Renovate Bot 453035b698 Update flomp/wanderer-web Docker tag to v0.19.1
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:44 +00:00
Renovate Bot 00c3223eea Update flomp/wanderer-db Docker tag to v0.19.1
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:40 +00:00
admin 39872513f0 Merge pull request 'Update codercom/code-server Docker tag to v4.121.0' (#11) from renovate/codercom-code-server-4.x into main 2026-05-27 20:07:40 +00:00
Renovate Bot 1416b77c0b Update codercom/code-server Docker tag to v4.121.0
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:37 +00:00
admin 2d64367b46 Merge pull request 'Update advplyr/audiobookshelf Docker tag to v2.35.0' (#9) from renovate/advplyr-audiobookshelf-2.x into main 2026-05-27 20:07:35 +00:00
Renovate Bot 37c9ee1a42 Update arcadiatechnology/crafty-4 Docker tag to v4.10.4
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:33 +00:00
admin 236bb2e27e Merge pull request 'Update privatebin/nginx-fpm-alpine Docker tag to v2.0.4' (#8) from renovate/privatebin-nginx-fpm-alpine-2.x into main 2026-05-27 20:07:28 +00:00
Renovate Bot 97d307878e Update advplyr/audiobookshelf Docker tag to v2.35.0
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:27 +00:00
Renovate Bot 115f4f10f2 Update privatebin/nginx-fpm-alpine Docker tag to v2.0.4
renovate/stability-days Updates have met minimum release age requirement
2026-05-27 20:07:22 +00:00
admin 8edb986a54 Merge pull request 'renovate: expand to Tier 1 allowlist + 3-day stability delay' (#7) from feat/renovate-tier1-expansion into main 2026-05-27 20:01:21 +00:00
43 changed files with 371 additions and 701 deletions
+1 -1
View File
@@ -30,7 +30,7 @@ spec:
spec:
containers:
- name: actualbudget
image: actualbudget/actual-server:26.2.0
image: actualbudget/actual-server:26.6.0
imagePullPolicy: IfNotPresent
env:
- name: TZ
+77 -77
View File
@@ -6,7 +6,7 @@
# -slim suffix was retired after v37.440.x, so we pin the plain tag)
#
# PILOT SCOPE (intentionally narrow):
# Runs weekly (Sun 04:00 Europe/Budapest) as a CronJob and opens
# Runs weekly (Sat 02:00 Europe/Budapest) as a CronJob and opens
# dependency-update PRs against admin/homelab-manifests on Gitea.
# Only the `kubernetes` and `helm-values` managers are enabled, and a
# default-deny packageRule limits updates to exactly four pilot images:
@@ -44,92 +44,90 @@ data:
"requireConfig": "optional",
"dependencyDashboard": true,
"dependencyDashboardTitle": "Renovate Dependency Dashboard",
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"enabledManagers": ["kubernetes", "helm-values"],
"prHourlyLimit": 16,
"prConcurrentLimit": 16,
"enabledManagers": ["kubernetes", "helm-values", "custom.regex"],
"kubernetes": {
"managerFilePatterns": ["/.+\\.ya?ml$/"]
},
"customManagers": [
{
"description": "termix: docker image tag is `release-X.Y.Z` but the upstream GitHub release tag_name is `release-X.Y.Z-tag` (different from the release name). regex versioning parses currentValue (no -tag); extractVersion strips the -tag suffix from candidate tag_names so they normalize to the same shape Renovate writes back to the manifest.",
"customType": "regex",
"managerFilePatterns": ["/termix-system/.+\\.ya?ml$/"],
"matchStrings": [
"image:\\s+(?<depName>ghcr\\.io/lukegus/termix):(?<currentValue>release-\\d+\\.\\d+\\.\\d+)"
],
"datasourceTemplate": "github-releases",
"packageNameTemplate": "Termix-SSH/Termix",
"versioningTemplate": "regex:^release-(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)$",
"extractVersionTemplate": "^(?<version>release-\\d+\\.\\d+\\.\\d+)"
}
],
"packageRules": [
{
"description": "Default-deny everything",
"description": "All apps: 3-day stability gate before any PR opens",
"matchPackageNames": ["*"],
"enabled": false
},
{
"description": "Tier 1: enable updates for low-risk leaf apps",
"matchPackageNames": [
"ghcr.io/thomiceli/opengist",
"louislam/uptime-kuma",
"f0rc3/gokapi",
"docker.io/calcom/cal.com",
"advplyr/audiobookshelf",
"arcadiatechnology/crafty-4",
"codercom/code-server",
"ghcr.io/gethomepage/homepage",
"ghcr.io/headlamp-k8s/headlamp",
"prom/node-exporter",
"rommapp/romm",
"ghcr.io/stakater/reloader",
"privatebin/nginx-fpm-alpine",
"flomp/wanderer-db",
"flomp/wanderer-web",
"registry.k8s.io/kube-state-metrics/kube-state-metrics",
"ghcr.io/lukegus/termix"
],
"enabled": true
},
{
"description": "Tier 1: automerge minor/patch after 3-day stability window",
"matchPackageNames": [
"ghcr.io/thomiceli/opengist",
"louislam/uptime-kuma",
"f0rc3/gokapi",
"docker.io/calcom/cal.com",
"advplyr/audiobookshelf",
"arcadiatechnology/crafty-4",
"codercom/code-server",
"ghcr.io/gethomepage/homepage",
"ghcr.io/headlamp-k8s/headlamp",
"prom/node-exporter",
"rommapp/romm",
"ghcr.io/stakater/reloader",
"privatebin/nginx-fpm-alpine",
"flomp/wanderer-db",
"flomp/wanderer-web",
"registry.k8s.io/kube-state-metrics/kube-state-metrics",
"ghcr.io/lukegus/termix"
],
"matchUpdateTypes": ["minor", "patch"],
"automerge": true,
"automergeType": "pr",
"platformAutomerge": true,
"minimumReleaseAge": "3 days"
},
{
"description": "Tier 1: major bumps require dashboard approval (no automerge)",
"matchPackageNames": [
"ghcr.io/thomiceli/opengist",
"louislam/uptime-kuma",
"f0rc3/gokapi",
"docker.io/calcom/cal.com",
"advplyr/audiobookshelf",
"arcadiatechnology/crafty-4",
"codercom/code-server",
"ghcr.io/gethomepage/homepage",
"ghcr.io/headlamp-k8s/headlamp",
"prom/node-exporter",
"rommapp/romm",
"ghcr.io/stakater/reloader",
"privatebin/nginx-fpm-alpine",
"flomp/wanderer-db",
"flomp/wanderer-web",
"registry.k8s.io/kube-state-metrics/kube-state-metrics",
"ghcr.io/lukegus/termix"
],
"description": "Auto-merge minor/patch after the stability window",
"matchUpdateTypes": ["minor", "patch"],
"automerge": true,
"automergeType": "pr",
"platformAutomerge": true
},
{
"description": "Major bumps wait for dashboard approval (catches breaking/schema migrations)",
"matchUpdateTypes": ["major"],
"automerge": false,
"dependencyDashboardApproval": true
},
{
"description": "k3s-bundled components: never touch, they ride k3s upgrades",
"matchPackageNames": [
"rancher/local-path-provisioner",
"rancher/mirrored-coredns/coredns",
"rancher/mirrored-metrics-server"
],
"enabled": false
},
{
"description": "Critical core: PR opens with changelog but Viktor merges manually (deploy pipeline + SSO + DB operator). Some entries are no-ops if the image isn't pinned in this repo (ArgoCD bootstrap, authentik outpost images inherit chart defaults).",
"matchPackageNames": [
"gitea/gitea",
"quay.io/argoproj/argocd",
"ghcr.io/goauthentik/server",
"ghcr.io/goauthentik/ldap",
"ghcr.io/goauthentik/proxy",
"ghcr.io/cloudnative-pg/cloudnative-pg"
],
"automerge": false
},
{
"description": "wanderer: db + web update together in one PR",
"matchPackageNames": ["flomp/wanderer-db", "flomp/wanderer-web"],
"groupName": "wanderer"
},
{
"description": "meilisearch: every version bump can require an index format migration via dump/restore (see https://www.meilisearch.com/docs/learn/update_and_migration/updating). PR #32 (v1.11.3 -> v1.45.2) on 2026-06-06 broke wanderer with `Your database version (1.11.3) is incompatible with your current engine version (1.45.2)`. Hold ALL meilisearch updates behind dashboard approval so the migration is planned before the PR even opens.",
"matchPackageNames": ["getmeili/meilisearch"],
"dependencyDashboardApproval": true
},
{
"description": "Postgres-family images: a major bump (e.g. 16 -> 17) requires pg_upgrade or dump/restore — the new server binary refuses to open the old data directory (`database files are incompatible with server`). PR #76 (immich-app/postgres 16 -> 17) on 2026-06-06 crashlooped immich-postgres and immich-server. Renovate's docker versioning treats these custom tag formats inconsistently, so don't trust the major/minor classification: hold ALL updates for these images behind explicit dashboard approval. Includes vanilla postgres, postgis/postgis (where the tag prefix IS the pg major), and ghcr.io/immich-app/postgres (custom `N-vectorchordX.Y.Z` form).",
"matchPackageNames": [
"postgres",
"postgis/postgis",
"ghcr.io/immich-app/postgres"
],
"dependencyDashboardApproval": true
},
{
"description": "termix: kubernetes manager would extract the image with versioning=docker and silently skip it (release-1.11.0 fails the docker pre-check). Disable that extraction; customManagers above does the real work via github-releases.",
"matchManagers": ["kubernetes"],
"matchPackageNames": ["ghcr.io/lukegus/termix"],
"enabled": false
}
],
"labels": ["renovate"]
@@ -145,7 +143,9 @@ metadata:
app.kubernetes.io/name: renovate
app.kubernetes.io/version: "43.197.0"
spec:
schedule: "0 4 * * 0"
# Sat 02:00 Europe/Budapest — leaves the full weekend for troubleshooting
# if a Renovate-merged update breaks something.
schedule: "0 2 * * 6"
timeZone: "Europe/Budapest"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
@@ -172,7 +172,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: renovate
image: renovate/renovate:43.197.0
image: renovate/renovate:43.209.3
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
+1 -1
View File
@@ -90,7 +90,7 @@ spec:
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: tailscale
image: tailscale/tailscale:v1.94.1
image: tailscale/tailscale:v1.98.4
imagePullPolicy: IfNotPresent
env:
- name: TZ
+3 -3
View File
@@ -56,7 +56,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7.2-alpine
image: redis:8.8-alpine
ports:
- containerPort: 6379
name: redis
@@ -96,7 +96,7 @@ spec:
fsGroup: 1000
initContainers:
- name: init-config
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -117,7 +117,7 @@ spec:
mountPath: /romm/config
containers:
- name: romm
image: rommapp/romm:4.6.1
image: rommapp/romm:4.8.1
env:
# Database
- name: DB_HOST
+78
View File
@@ -47,6 +47,8 @@ spec:
server: https://kubernetes.default.svc
namespace: servarr-system
syncPolicy:
automated:
enabled: true
# Start with manual sync until you're comfortable
# automated:
# prune: true
@@ -82,6 +84,8 @@ spec:
server: https://kubernetes.default.svc
namespace: paperless-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -104,6 +108,8 @@ spec:
server: https://kubernetes.default.svc
namespace: actualbudget-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -126,6 +132,8 @@ spec:
server: https://kubernetes.default.svc
namespace: audiobookshelf-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -148,6 +156,8 @@ spec:
server: https://kubernetes.default.svc
namespace: bookstack-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -170,6 +180,8 @@ spec:
server: https://kubernetes.default.svc
namespace: immich-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -214,6 +226,8 @@ spec:
server: https://kubernetes.default.svc
namespace: nextcloud-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -236,6 +250,8 @@ spec:
server: https://kubernetes.default.svc
namespace: outline-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -258,6 +274,8 @@ spec:
server: https://kubernetes.default.svc
namespace: tandoor-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -280,6 +298,8 @@ spec:
server: https://kubernetes.default.svc
namespace: uptimekuma-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -302,6 +322,8 @@ spec:
server: https://kubernetes.default.svc
namespace: vaultwarden-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -369,6 +391,8 @@ spec:
server: https://kubernetes.default.svc
namespace: pihole-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
@@ -397,6 +421,8 @@ spec:
server: https://kubernetes.default.svc
namespace: mediaserver-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
---
@@ -418,6 +444,8 @@ spec:
server: https://kubernetes.default.svc
namespace: calibre-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -440,6 +468,8 @@ spec:
server: https://kubernetes.default.svc
namespace: adventurelog-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -592,6 +622,8 @@ spec:
server: https://kubernetes.default.svc
namespace: termix-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -614,6 +646,8 @@ spec:
server: https://kubernetes.default.svc
namespace: privatebin-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -636,6 +670,8 @@ spec:
server: https://kubernetes.default.svc
namespace: headlamp-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -658,6 +694,8 @@ spec:
server: https://kubernetes.default.svc
namespace: homepage-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -680,6 +718,8 @@ spec:
server: https://kubernetes.default.svc
namespace: code-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -702,6 +742,8 @@ spec:
server: https://kubernetes.default.svc
namespace: plantit-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -724,6 +766,8 @@ spec:
server: https://kubernetes.default.svc
namespace: fileshare-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -746,6 +790,8 @@ spec:
server: https://kubernetes.default.svc
namespace: arcade-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -768,6 +814,8 @@ spec:
server: https://kubernetes.default.svc
namespace: workout-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -790,6 +838,8 @@ spec:
server: https://kubernetes.default.svc
namespace: wanderer-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -812,6 +862,8 @@ spec:
server: https://kubernetes.default.svc
namespace: opengist-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -834,6 +886,8 @@ spec:
server: https://kubernetes.default.svc
namespace: zipline-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -856,6 +910,8 @@ spec:
server: https://kubernetes.default.svc
namespace: crafty-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -878,6 +934,8 @@ spec:
server: https://kubernetes.default.svc
namespace: booking-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -900,6 +958,8 @@ spec:
server: https://kubernetes.default.svc
namespace: web-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -922,6 +982,8 @@ spec:
server: https://kubernetes.default.svc
namespace: control-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -944,6 +1006,8 @@ spec:
server: https://kubernetes.default.svc
namespace: glance-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
@@ -967,6 +1031,10 @@ spec:
server: https://kubernetes.default.svc
namespace: version-checker-system
syncPolicy:
automated:
enabled: true
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
@@ -1033,6 +1101,8 @@ spec:
server: https://kubernetes.default.svc
namespace: orsi-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
@@ -1075,6 +1145,8 @@ spec:
server: https://kubernetes.default.svc
namespace: kisfenyo-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
@@ -1096,6 +1168,8 @@ spec:
server: https://kubernetes.default.svc
namespace: office-system
syncPolicy:
automated:
enabled: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
@@ -1118,6 +1192,10 @@ spec:
server: https://kubernetes.default.svc
namespace: jarrs-system
syncPolicy:
automated:
enabled: true
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
+1 -1
View File
@@ -54,7 +54,7 @@ spec:
spec:
containers:
- name: audiobookshelf
image: advplyr/audiobookshelf:2.32.1
image: advplyr/audiobookshelf:2.35.1
imagePullPolicy: IfNotPresent
env:
- name: TZ
+3 -3
View File
@@ -77,7 +77,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7-alpine
image: redis:8-alpine
imagePullPolicy: IfNotPresent
args:
- redis-server
@@ -168,7 +168,7 @@ spec:
initContainers:
# Wait for PostgreSQL
- name: wait-for-db
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -181,7 +181,7 @@ spec:
echo "PostgreSQL is ready!"
# Wait for Redis
- name: wait-for-redis
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
+1 -1
View File
@@ -175,7 +175,7 @@ spec:
spec:
containers:
- name: bookstack
image: linuxserver/bookstack:25.12.3
image: linuxserver/bookstack:26.05.20260601
imagePullPolicy: IfNotPresent
env:
# LinuxServer.io specific
+1 -1
View File
@@ -50,7 +50,7 @@ spec:
fsGroup: 1000
containers:
- name: code-server
image: codercom/code-server:4.108.2
image: codercom/code-server:4.123.0
args:
- --bind-addr=0.0.0.0:8080
- --auth=none
+1 -1
View File
@@ -169,7 +169,7 @@ spec:
type: RuntimeDefault
containers:
- name: reloader
image: ghcr.io/stakater/reloader:v1.4.12
image: ghcr.io/stakater/reloader:v1.4.17
imagePullPolicy: IfNotPresent
env:
- name: GOMAXPROCS
+1 -1
View File
@@ -223,7 +223,7 @@ spec:
fsGroup: 0
containers:
- name: craftycontroller
image: arcadiatechnology/crafty-4:4.9.0
image: arcadiatechnology/crafty-4:4.10.4
imagePullPolicy: IfNotPresent
securityContext:
runAsNonRoot: true
+1 -1
View File
@@ -57,7 +57,7 @@ replicaCount: 1
# Image configuration (optional - use defaults)
image:
repository: ghcr.io/cloudnative-pg/cloudnative-pg
tag: 1.28.1
tag: 1.29.1
# Service configuration
service:
+1 -1
View File
@@ -48,7 +48,7 @@ spec:
fsGroup: 999
containers:
- name: healthchecks
image: healthchecks/healthchecks:v4.0
image: healthchecks/healthchecks:v4.2
ports:
- containerPort: 8000
env:
+3 -2
View File
@@ -32,7 +32,7 @@ spec:
spec:
initContainers:
- name: init-directories
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -44,7 +44,7 @@ spec:
mountPath: /data
containers:
- name: gitea
image: gitea/gitea:1.25.4
image: gitea/gitea:1.26.2
imagePullPolicy: IfNotPresent
env:
- name: USER_UID
@@ -218,6 +218,7 @@ metadata:
if ($remote_addr ~ "^10\.") { set $geo_allowed 1; }
if ($geoip2_country_code = "HU") { set $geo_allowed 1; }
if ($geoip2_country_code = "DE") { set $geo_allowed 1; }
if ($geoip2_country_code = "US") { set $geo_allowed 1; }
if ($geo_allowed = 0) {
return 403 "Access restricted to Hungary";
}
+1 -1
View File
@@ -1384,7 +1384,7 @@ spec:
# Calendar iCal URLs (JSON object: {"name": "url", ...})
- name: CALENDAR_ICAL_URLS
value: '{"Órák": "https://calendar.google.com/calendar/ical/b2884faf3db792ac082a6206057552c79080716efd5f966e169a41fc500e1c1c%40group.calendar.google.com/private-0998d8053909ba4449c2f0a6409ce3de/basic.ics", "Családi": "https://calendar.google.com/calendar/ical/nitq3l0if4gn54k438obat5ia0%40group.calendar.google.com/private-59afcf70fee1a798ec369b86d9883b46/basic.ics"}'
image: python:3.12-bookworm
image: python:3.14-bookworm
imagePullPolicy: IfNotPresent
name: glance-helper
ports:
+2 -2
View File
@@ -2746,7 +2746,7 @@ spec:
fsGroup: 1000
initContainers:
- name: build-bookmarks-index
image: mikefarah/yq:4.50.1
image: mikefarah/yq:4.53.2
securityContext:
runAsUser: 1000
runAsGroup: 1000
@@ -2787,7 +2787,7 @@ spec:
mountPath: /app/assets
containers:
- name: glance
image: glanceapp/glance:v0.8.4
image: glanceapp/glance:v0.8.5
imagePullPolicy: IfNotPresent
env:
- name: TZ
+2 -2
View File
@@ -1372,7 +1372,7 @@ spec:
fsGroup: 1000
initContainers:
- name: build-bookmarks-index
image: mikefarah/yq:4.50.1
image: mikefarah/yq:4.53.2
securityContext:
runAsUser: 1000
runAsGroup: 1000
@@ -1413,7 +1413,7 @@ spec:
mountPath: /app/assets
containers:
- name: glance
image: glanceapp/glance:v0.8.4
image: glanceapp/glance:v0.8.5
imagePullPolicy: IfNotPresent
env:
- name: TZ
+1 -1
View File
@@ -258,7 +258,7 @@ spec:
automountServiceAccountToken: true
containers:
- name: headlamp
image: ghcr.io/headlamp-k8s/headlamp:v0.40.0
image: ghcr.io/headlamp-k8s/headlamp:v0.42.0
imagePullPolicy: IfNotPresent
args:
- "-in-cluster"
+1 -1
View File
@@ -42,5 +42,5 @@ rbac:
# Image configuration
image:
repository: registry.k8s.io/external-dns/external-dns
tag: v0.19.0
tag: v0.21.0
pullPolicy: IfNotPresent
+2 -2
View File
@@ -123,7 +123,7 @@ initContainer:
registry: index.docker.io
repository: alpine
# -- If unset use latest
tag: "3.22"
tag: "3.23"
sha: ""
pullPolicy: IfNotPresent
@@ -181,7 +181,7 @@ rclone:
registry: index.docker.io
repository: rclone/rclone
# -- If unset use latest
tag: 1.70.3
tag: 1.74.3
sha: ""
pullPolicy: IfNotPresent
+1 -1
View File
@@ -372,7 +372,7 @@ spec:
enableServiceLinks: true
containers:
- name: homepage
image: ghcr.io/gethomepage/homepage:v1.10.1
image: ghcr.io/gethomepage/homepage:v1.13.1
imagePullPolicy: IfNotPresent
env:
# Required for external access
+1 -1
View File
@@ -535,7 +535,7 @@ spec:
enableServiceLinks: true
containers:
- name: homepage
image: ghcr.io/gethomepage/homepage:v1.10.1
image: ghcr.io/gethomepage/homepage:v1.13.1
imagePullPolicy: IfNotPresent
env:
# Required for external access
+3 -3
View File
@@ -241,7 +241,7 @@ spec:
value: immich-valkey
- name: TRANSFORMERS_CACHE
value: /cache
image: ghcr.io/immich-app/immich-machine-learning:v2.5.5
image: ghcr.io/immich-app/immich-machine-learning:v2.7.5
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
@@ -336,7 +336,7 @@ spec:
value: http://immich-machine-learning:3003
- name: REDIS_HOSTNAME
value: immich-valkey
image: ghcr.io/immich-app/immich-server:v2.5.5
image: ghcr.io/immich-app/immich-server:v2.7.5
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
@@ -416,7 +416,7 @@ spec:
value: http://immich-machine-learning:3003
- name: REDIS_HOSTNAME
value: immich-valkey
image: docker.io/valkey/valkey:9.0-alpine@sha256:b4ee67d73e00393e712accc72cfd7003b87d0fcd63f0eba798b23251bfc9c394
image: docker.io/valkey/valkey:9.1-alpine@sha256:a35428eba9043cc0b79dbe54100f0c92784f2de00ad09b01182bfb1c5c83d1bd
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
+7 -7
View File
@@ -185,7 +185,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7-alpine
image: redis:8-alpine
imagePullPolicy: IfNotPresent
args:
- redis-server
@@ -282,7 +282,7 @@ spec:
spec:
initContainers:
- name: wait-for-db
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -294,7 +294,7 @@ spec:
done
echo "PostgreSQL is ready!"
- name: wait-for-redis
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -532,7 +532,7 @@ spec:
number: 3000
tls:
- hosts:
- dev-local.jarrs.eu
- dev.jarrs.eu
secretName: dev-jarr-tls
---
# =============================================================================
@@ -584,7 +584,7 @@ spec:
initContainers:
# 1. Wait for PostgreSQL to accept connections
- name: wait-for-db
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -597,7 +597,7 @@ spec:
echo "PostgreSQL is ready!"
# 2. Wait for Redis to accept connections
- name: wait-for-redis
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
@@ -612,7 +612,7 @@ spec:
# Prevents the worker from picking up stale queued jobs
# before schema migrations have been applied.
- name: wait-for-api
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
+1 -1
View File
@@ -136,7 +136,7 @@ spec:
fsGroup: 1000
containers:
- name: filebrowser
image: gtstef/filebrowser:1.1.2-stable
image: gtstef/filebrowser:1.3.3-stable
env:
- name: TZ
value: "Europe/Budapest"
+3 -3
View File
@@ -348,7 +348,7 @@ spec:
spec:
containers:
- name: prometheus
image: prom/prometheus:v3.9.1
image: prom/prometheus:v3.12.0
args:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
@@ -529,7 +529,7 @@ spec:
runAsGroup: 472
containers:
- name: grafana
image: grafana/grafana:12.3.2
image: grafana/grafana:13.0.2
ports:
- containerPort: 3000
name: http
@@ -730,7 +730,7 @@ spec:
hostPID: true
containers:
- name: node-exporter
image: prom/node-exporter:v1.10.2
image: prom/node-exporter:v1.11.1
args:
- "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys"
+3 -3
View File
@@ -395,7 +395,7 @@ spec:
spec:
containers:
- name: nextcloud
image: docker.io/library/nextcloud:32.0.2-apache
image: docker.io/library/nextcloud:33.0.4-apache
imagePullPolicy: IfNotPresent
env:
- name: SMTP_HOST
@@ -552,7 +552,7 @@ spec:
failureThreshold: 3
initContainers:
- name: postgresql-isready
image: docker.io/bitnamilegacy/postgresql:17.5.0-debian-12-r3
image: docker.io/bitnamilegacy/postgresql:17.6.0-debian-12-r3
resources: {}
securityContext: {}
env:
@@ -637,7 +637,7 @@ spec:
hostIPC: false
containers:
- name: postgresql
image: docker.io/bitnamilegacy/postgresql:17.5.0-debian-12-r3
image: docker.io/bitnamilegacy/postgresql:17.6.0-debian-12-r3
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
+135
View File
@@ -0,0 +1,135 @@
# BentoPDF - Privacy-focused PDF toolkit (all processing client-side, files never leave the server)
# https://www.bentopdf.com - image: ghcr.io/alam00000/bentopdf
# Domain: pdf.dooplex.hu
# Version: 2.8.5
# Database: None | Storage: None (stateless)
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: bentopdf
namespace: office-system
labels:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
app.kubernetes.io/version: "2.8.5"
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
template:
metadata:
labels:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
app.kubernetes.io/version: "2.8.5"
annotations:
match-regex.version-checker.io/bentopdf: '^v\d+\.\d+\.\d+$'
spec:
containers:
- name: bentopdf
image: ghcr.io/alam00000/bentopdf:v2.8.5
imagePullPolicy: IfNotPresent
env:
- name: TZ
value: "Europe/Budapest"
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 500m
memory: 384Mi
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: bentopdf
namespace: office-system
labels:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
spec:
type: ClusterIP
ports:
- name: http
port: 8080
targetPort: http
protocol: TCP
selector:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bentopdf
namespace: office-system
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
external-dns.alpha.kubernetes.io/hostname: pdf.dooplex.hu,pdf.home
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "100m"
nginx.ingress.kubernetes.io/configuration-snippet: |
set $geo_allowed 0;
if ($remote_addr ~ "^192\.168\.") { set $geo_allowed 1; }
if ($remote_addr ~ "^10\.") { set $geo_allowed 1; }
if ($geoip2_country_code = "HU") { set $geo_allowed 1; }
if ($geo_allowed = 0) {
return 403 "Access restricted to Hungary";
}
labels:
app.kubernetes.io/name: bentopdf
app.kubernetes.io/instance: bentopdf
spec:
ingressClassName: nginx-internal
tls:
- hosts:
- pdf.dooplex.hu
secretName: bentopdf-tls
rules:
- host: pdf.dooplex.hu
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: bentopdf
port:
number: 8080
- host: pdf.home
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: bentopdf
port:
number: 8080
+1 -1
View File
@@ -27,7 +27,7 @@ spec:
spec:
containers:
- name: onlyoffice
image: onlyoffice/documentserver:9.0.2
image: onlyoffice/documentserver:9.4.0
imagePullPolicy: IfNotPresent
env:
- name: TZ
+2 -2
View File
@@ -89,7 +89,7 @@ spec:
initContainers:
# Configure proxy auth in database before starting
- name: configure-auth
image: filebrowser/filebrowser:v2.54.0
image: filebrowser/filebrowser:v2.63.13
command:
- sh
- -c
@@ -109,7 +109,7 @@ spec:
runAsGroup: 1001
containers:
- name: filebrowser
image: filebrowser/filebrowser:v2.54.0
image: filebrowser/filebrowser:v2.63.13
command:
- filebrowser
- --database=/config/filebrowser.db
+2 -2
View File
@@ -31,7 +31,7 @@ spec:
spec:
containers:
- name: outline
image: outlinewiki/outline:1.4.0
image: outlinewiki/outline:1.8.0
imagePullPolicy: IfNotPresent
env:
- name: NODE_ENV
@@ -198,7 +198,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7-alpine
image: redis:8-alpine
imagePullPolicy: IfNotPresent
command:
- redis-server
+2 -2
View File
@@ -71,7 +71,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7-alpine
image: redis:8-alpine
imagePullPolicy: IfNotPresent
ports:
- name: redis
@@ -158,7 +158,7 @@ spec:
enableServiceLinks: false
containers:
- name: paperless
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.6
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15
imagePullPolicy: IfNotPresent
env:
# Database - using shared PostgreSQL in database-system namespace
+2 -2
View File
@@ -43,7 +43,7 @@ spec:
spec:
containers:
- name: mysql
image: mysql:8.0
image: mysql:8.4
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
@@ -121,7 +121,7 @@ spec:
spec:
containers:
- name: redis
image: redis:7.2.1
image: redis:8.8.0
ports:
- containerPort: 6379
name: redis
+1 -1
View File
@@ -169,7 +169,7 @@ spec:
fsGroup: 82
containers:
- name: privatebin
image: privatebin/nginx-fpm-alpine:2.0.3
image: privatebin/nginx-fpm-alpine:2.0.4
imagePullPolicy: IfNotPresent
ports:
- name: http
+1 -1
View File
@@ -244,7 +244,7 @@ spec:
spec:
containers:
- name: qbittorrent
image: linuxserver/qbittorrent:5.1.4
image: linuxserver/qbittorrent:5.2.1
imagePullPolicy: IfNotPresent
env:
- name: PUID
+2 -2
View File
@@ -30,7 +30,7 @@ spec:
spec:
initContainers:
- name: create-superuser
image: vabene1111/recipes:2.5
image: vabene1111/recipes:2.6
workingDir: /opt/recipes
command:
- /bin/sh
@@ -106,7 +106,7 @@ spec:
key: email
containers:
- name: tandoor
image: vabene1111/recipes:2.5
image: vabene1111/recipes:2.6
imagePullPolicy: IfNotPresent
env:
- name: TZ
+5 -1
View File
@@ -41,7 +41,11 @@ spec:
spec:
containers:
- name: termix
image: ghcr.io/lukegus/termix:release-1.11.0
# NOTE: termix uses a non-semver tag pattern (release-X.Y.Z).
# Renovate handles it via a customManagers regex defined in
# admin-system/renovate.yaml (the kubernetes manager doesn't
# process inline `# renovate:` comments).
image: ghcr.io/lukegus/termix:release-1.11.2
imagePullPolicy: IfNotPresent
ports:
- name: http
+1 -1
View File
@@ -30,7 +30,7 @@ spec:
spec:
containers:
- name: uptimekuma
image: louislam/uptime-kuma:2.3.2
image: louislam/uptime-kuma:2.4.0
imagePullPolicy: IfNotPresent
env:
- name: TZ
+1 -1
View File
@@ -28,7 +28,7 @@ spec:
spec:
containers:
- name: vaultwarden
image: vaultwarden/server:1.35.2
image: vaultwarden/server:1.36.0
imagePullPolicy: IfNotPresent
env:
- name: TZ
+2 -2
View File
@@ -122,7 +122,7 @@ spec:
spec:
containers:
- name: pocketbase
image: flomp/wanderer-db:v0.18.4
image: flomp/wanderer-db:v0.19.2
env:
- name: ORIGIN
value: "https://wanderer.dooplex.hu"
@@ -192,7 +192,7 @@ spec:
spec:
containers:
- name: wanderer-web
image: flomp/wanderer-web:v0.18.4
image: flomp/wanderer-web:v0.19.2
env:
- name: NODE_TLS_REJECT_UNAUTHORIZED
value: "0"
+4 -4
View File
@@ -130,7 +130,7 @@ spec:
initContainers:
# Configure proxy auth in database before starting
- name: configure-auth
image: filebrowser/filebrowser:v2.54.0
image: filebrowser/filebrowser:v2.63.13
command:
- sh
- -c
@@ -151,7 +151,7 @@ spec:
runAsGroup: 1000
containers:
- name: filebrowser
image: filebrowser/filebrowser:v2.54.0
image: filebrowser/filebrowser:v2.63.13
command:
- filebrowser
- --database=/config/filebrowser.db
@@ -315,7 +315,7 @@ spec:
initContainers:
# Create public directory if it doesn't exist
- name: init-public-dir
image: busybox:1.36
image: busybox:1.38
command: ["sh", "-c", "mkdir -p /srv/public && chmod 755 /srv/public"]
volumeMounts:
- name: data
@@ -324,7 +324,7 @@ spec:
runAsUser: 0
containers:
- name: nginx
image: nginx:1.27-alpine
image: nginx:1.31-alpine
ports:
- containerPort: 8080
name: http
+9 -1
View File
@@ -34,6 +34,14 @@
# table ownership, and installs uuid-ossp/pgcrypto/pg_stat_statements on its
# own — no init SQL or shared_preload_libraries tinkering needed.
# ----------------------------------------------------------------------------
---
apiVersion: v1
kind: Namespace
metadata:
name: workout-system
labels:
app.kubernetes.io/name: sparkyfitness
---
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -145,7 +153,7 @@ spec:
fsGroup: 1000
initContainers:
- name: wait-for-db
image: busybox:1.36
image: busybox:1.38
command:
- sh
- -c
-556
View File
@@ -1,556 +0,0 @@
# ============================================================================
# *** PARKED 2026-05-27 *** — wger has been REPLACED by SparkyFitness.
# SparkyFitness now owns workout.dooplex.hu / workout.home (see sparkyfitness.yaml).
# All wger Deployments are scaled to 0 and both wger Ingresses were removed
# (ArgoCD prune deletes them, freeing the hostnames). The wger Services,
# ConfigMap, PVCs (wger-media / wger-static) and the wger DB in the shared CNPG
# cluster are KEPT, untouched, for rollback.
# To revive wger: restore the two Ingress resources from git history and scale
# the wger / wger-redis / wger-celery-* Deployments back to 1.
# ============================================================================
# wger - Workout Manager
# https://github.com/wger-project/wger
# Version: 2.5 (official image, no custom fork)
# Domain: workout.dooplex.hu
# Auth: Authentik Forward Auth (domain mode) + native wger AUTH_PROXY middleware
#
# ============================================================================
# MIGRATION NOTES (from 2.3 + custom OIDC fork):
# - Image switched from ghcr.io/kisfenyo/wger-oidc:latest -> wger/server:2.5
# - All OIDC_* / ENABLE_OIDC env vars removed
# - Native AUTH_PROXY_* env vars added (wger 2.4+ feature, PR #1859)
# - Ingress split into two resources:
# * wger -> path / -> protected by Authentik forward-auth
# * wger-api -> path /api/ -> unprotected (JWT auth for mobile app)
# - nginx sidecar: strips client-supplied X-Authentik-* on /api/ (defense in depth)
# - Authentik: create a new Proxy Provider (Forward auth, single application)
# External Host: https://workout.dooplex.hu
# Attach to existing outpost. The old OIDC provider can be deleted.
#
# POST-UPGRADE COMMANDS (run once after rollout stabilises):
# kubectl exec -n workout-system deploy/wger -c wger -- \
# python manage.py recalculate_statistics --all --active-only
# kubectl exec -n workout-system deploy/wger -c wger -- \
# python manage.py evaluate_trophies --all
# ============================================================================
---
apiVersion: v1
kind: Namespace
metadata:
name: workout-system
labels:
app.kubernetes.io/name: wger
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wger-redis
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-redis
spec:
replicas: 0 # parked 2026-05-27 (replaced by SparkyFitness)
selector:
matchLabels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-redis
template:
metadata:
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-redis
spec:
containers:
- name: redis
image: redis:7.2-alpine
ports:
- containerPort: 6379
name: redis
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wger
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger
annotations:
# Track upstream wger releases
extensions.v1alpha1.version-checker.io/wger: "true"
extensions.v1alpha1.version-checker.io/wger.match-regex: "^\\d+\\.\\d+$"
spec:
replicas: 0 # parked 2026-05-27 (replaced by SparkyFitness)
selector:
matchLabels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger
spec:
# Prevent k8s from injecting WGER_PORT / WGER_SERVICE_* env vars
# from the wger Service — they collide with wger's own $WGER_PORT
# config and break the startup script (URI instead of port number).
enableServiceLinks: false
securityContext:
fsGroup: 1000
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
name: http
volumeMounts:
- name: static
mountPath: /home/wger/static
readOnly: true
- name: media
mountPath: /home/wger/media
readOnly: true
- name: nginx-config
mountPath: /etc/nginx/conf.d/default.conf
subPath: nginx.conf
- name: wger
image: wger/server:2.5
imagePullPolicy: IfNotPresent
env:
# Django settings
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: secret-key
- name: SIGNING_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: signing-key
- name: DJANGO_DEBUG
value: "False"
- name: WGER_INSTANCE
value: "https://workout.dooplex.hu"
- name: TIME_ZONE
value: "Europe/Budapest"
- name: DJANGO_CACHE_TIMEOUT
value: "120"
- name: CSRF_TRUSTED_ORIGINS
value: "https://workout.dooplex.hu"
# Database (shared CNPG)
- name: DJANGO_DB_ENGINE
value: "django.db.backends.postgresql"
- name: DJANGO_DB_HOST
value: "postgresql-rw.database-system.svc.cluster.local"
- name: DJANGO_DB_PORT
value: "5432"
- name: DJANGO_DB_DATABASE
value: "wger"
- name: DJANGO_DB_USER
valueFrom:
secretKeyRef:
name: wger-db
key: username
- name: DJANGO_DB_PASSWORD
valueFrom:
secretKeyRef:
name: wger-db
key: password
# Cache
- name: DJANGO_CACHE_BACKEND
value: "django_redis.cache.RedisCache"
- name: DJANGO_CACHE_LOCATION
value: "redis://wger-redis:6379/1"
- name: DJANGO_CACHE_CLIENT_CLASS
value: "django_redis.client.DefaultClient"
# Celery
- name: CELERY_BROKER
value: "redis://wger-redis:6379/2"
- name: CELERY_BACKEND
value: "redis://wger-redis:6379/2"
# ----------------------------------------------------------------
# Native Authentication Proxy (wger 2.4+) - replaces OIDC fork
# ----------------------------------------------------------------
- name: AUTH_PROXY_ENABLED
value: "True"
# Django META key format: HTTP_ + uppercase header with - replaced by _
# So X-Authentik-Username => HTTP_X_AUTHENTIK_USERNAME
- name: AUTH_PROXY_HEADER
value: "HTTP_X_AUTHENTIK_USERNAME"
- name: AUTH_PROXY_CREATE_UNKNOWN_USER
value: "True"
- name: AUTH_PROXY_EMAIL_HEADER
value: "HTTP_X_AUTHENTIK_EMAIL"
- name: AUTH_PROXY_NAME_HEADER
value: "HTTP_X_AUTHENTIK_NAME"
# Only trust the auth header when coming from the nginx sidecar
# (same pod, proxies from 127.0.0.1 to Django on :8000).
# This prevents header-spoofing attacks from anywhere else.
- name: AUTH_PROXY_TRUSTED_IPS
value: "127.0.0.1/32"
# Email (disabled - no email sending)
- name: ENABLE_EMAIL
value: "False"
# Media settings
- name: DJANGO_MEDIA_ROOT
value: "/home/wger/media"
- name: DJANGO_STATIC_ROOT
value: "/home/wger/static"
# Features
- name: ALLOW_REGISTRATION
value: "False"
- name: ALLOW_GUEST_USERS
value: "False"
- name: ALLOW_UPLOAD_VIDEOS
value: "True"
- name: USE_RECAPTCHA
value: "False"
- name: DOWNLOAD_EXERCISE_IMAGES_ON_STARTUP
value: "True"
ports:
- containerPort: 8000
name: http
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 1000m
memory: 1Gi
volumeMounts:
- name: media
mountPath: /home/wger/media
- name: static
mountPath: /home/wger/static
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 120
periodSeconds: 30
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 60
periodSeconds: 10
volumes:
- name: nginx-config
configMap:
name: wger-nginx-config
- name: media
persistentVolumeClaim:
claimName: wger-media
- name: static
persistentVolumeClaim:
claimName: wger-static
---
# Celery worker for background tasks
apiVersion: apps/v1
kind: Deployment
metadata:
name: wger-celery-worker
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-worker
spec:
replicas: 0 # parked 2026-05-27 (replaced by SparkyFitness)
selector:
matchLabels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-worker
template:
metadata:
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-worker
spec:
enableServiceLinks: false
securityContext:
fsGroup: 1000
containers:
- name: celery-worker
image: wger/server:2.5
imagePullPolicy: IfNotPresent
command: ["/start-worker"]
env:
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: secret-key
- name: SIGNING_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: signing-key
- name: TIME_ZONE
value: "Europe/Budapest"
- name: DJANGO_DB_ENGINE
value: "django.db.backends.postgresql"
- name: DJANGO_DB_HOST
value: "postgresql-rw.database-system.svc.cluster.local"
- name: DJANGO_DB_PORT
value: "5432"
- name: DJANGO_DB_DATABASE
value: "wger"
- name: DJANGO_DB_USER
valueFrom:
secretKeyRef:
name: wger-db
key: username
- name: DJANGO_DB_PASSWORD
valueFrom:
secretKeyRef:
name: wger-db
key: password
- name: DJANGO_CACHE_TIMEOUT
value: "120"
- name: DJANGO_CACHE_CLIENT_CLASS
value: "django_redis.client.DefaultClient"
- name: CELERY_BROKER
value: "redis://wger-redis:6379/2"
- name: CELERY_BACKEND
value: "redis://wger-redis:6379/2"
- name: DJANGO_CACHE_BACKEND
value: "django_redis.cache.RedisCache"
- name: DJANGO_CACHE_LOCATION
value: "redis://wger-redis:6379/1"
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
---
# Celery beat for scheduled tasks
apiVersion: apps/v1
kind: Deployment
metadata:
name: wger-celery-beat
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-beat
spec:
replicas: 0 # parked 2026-05-27 (replaced by SparkyFitness)
selector:
matchLabels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-beat
template:
metadata:
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-celery-beat
spec:
enableServiceLinks: false
securityContext:
fsGroup: 1000
containers:
- name: celery-beat
image: wger/server:2.5
imagePullPolicy: IfNotPresent
command: ["/start-beat"]
env:
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: secret-key
- name: SIGNING_KEY
valueFrom:
secretKeyRef:
name: wger-app
key: signing-key
- name: TIME_ZONE
value: "Europe/Budapest"
- name: DJANGO_CACHE_TIMEOUT
value: "120"
- name: DJANGO_CACHE_CLIENT_CLASS
value: "django_redis.client.DefaultClient"
- name: DJANGO_DB_ENGINE
value: "django.db.backends.postgresql"
- name: DJANGO_DB_HOST
value: "postgresql-rw.database-system.svc.cluster.local"
- name: DJANGO_DB_PORT
value: "5432"
- name: DJANGO_DB_DATABASE
value: "wger"
- name: DJANGO_DB_USER
valueFrom:
secretKeyRef:
name: wger-db
key: username
- name: DJANGO_DB_PASSWORD
valueFrom:
secretKeyRef:
name: wger-db
key: password
- name: CELERY_BROKER
value: "redis://wger-redis:6379/2"
- name: CELERY_BACKEND
value: "redis://wger-redis:6379/2"
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: wger-redis
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-redis
spec:
type: ClusterIP
ports:
- name: redis
port: 6379
targetPort: redis
selector:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-redis
---
apiVersion: v1
kind: Service
metadata:
name: wger
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger
spec:
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 80
selector:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger
---
# ============================================================================
# wger Ingresses (wger + wger-api) REMOVED 2026-05-27 — see PARKED note at top.
# SparkyFitness's ingress (sparkyfitness.yaml) now serves workout.dooplex.hu /
# workout.home. ArgoCD prune deletes the old Ingress objects from the cluster,
# releasing the hostnames + the wger-tls certificate's hosts.
# To revive wger: restore these two Ingress resources from git history.
# ============================================================================
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wger-media
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-media
recurring-job-group.longhorn.io/needbackup: enabled
recurring-job.longhorn.io/source: enabled
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wger-static
namespace: workout-system
labels:
app.kubernetes.io/instance: wger
app.kubernetes.io/name: wger-static
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 2Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
name: wger-nginx-config
namespace: workout-system
data:
nginx.conf: |
server {
listen 80;
server_name _;
client_max_body_size 4G;
# Official Wger Logic
root /var/www/html/; # This is just a dummy root, aliases do the work
location /static/ {
alias /home/wger/static/;
expires 30d;
access_log off;
}
location /media/ {
alias /home/wger/media/;
expires 30d;
access_log off;
}
# API path: strip any client-supplied auth headers before proxying.
# Mobile app + API clients authenticate via JWT (/api/v2/token), not
# proxy auth. This is a defense-in-depth measure so that even if traffic
# somehow reaches this sidecar without going through the forward-auth
# ingress, it cannot forge an AUTH_PROXY login via a spoofed header.
# Nginx treats "" as "do not forward this header."
location /api/ {
proxy_pass http://localhost:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Authentik-Username "";
proxy_set_header X-Authentik-Email "";
proxy_set_header X-Authentik-Name "";
proxy_set_header X-Authentik-Groups "";
proxy_set_header X-Authentik-Uid "";
}
# Everything else: pass through the auth headers set by the
# forward-auth ingress so wger's AUTH_PROXY middleware can log the
# user in. $http_x_authentik_username expands to empty if the header
# isn't present (e.g. Tailscale admin access bypassing the ingress).
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Authentik-Username $http_x_authentik_username;
proxy_set_header X-Authentik-Email $http_x_authentik_email;
proxy_set_header X-Authentik-Name $http_x_authentik_name;
proxy_set_header X-Authentik-Groups $http_x_authentik_groups;
proxy_set_header X-Authentik-Uid $http_x_authentik_uid;
}
}
---