44 Commits

Author SHA1 Message Date
3a6a621193 Merge branch 'main' of https://github.com/vhaudiquet/homeprod
* 'main' of https://github.com/vhaudiquet/homeprod:
  build(deps): bump tomsquest/docker-radicale in /docker/personal/radicale
2026-05-08 18:15:38 +02:00
17ab87e276 infra: update VMs
- kube: add NIC, bump up memory
- ai: set to off by default
- docker: bump up memory to absorb buildpath importer consumption
2026-05-08 18:15:16 +02:00
dependabot[bot]
56f67dd447 build(deps): bump tomsquest/docker-radicale in /docker/personal/radicale
Bumps tomsquest/docker-radicale from 3.7.1.0 to 3.7.2.0.

---
updated-dependencies:
- dependency-name: tomsquest/docker-radicale
  dependency-version: 3.7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 15:44:22 +01:00
dependabot[bot]
33bdb8f3b0 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.1815 to release-v0.24.1822.
- [Commits](https://github.com/hotio/jackett/commits)

---
updated-dependencies:
- dependency-name: hotio/jackett
  dependency-version: release-v0.24.1822
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 12:44:23 +01:00
dependabot[bot]
1b4e2dafbc build(deps): bump n8nio/n8n from 2.19.2 to 2.19.5 in /docker/home/n8n
Bumps [n8nio/n8n](https://github.com/n8n-io/n8n) from 2.19.2 to 2.19.5.
- [Release notes](https://github.com/n8n-io/n8n/releases)
- [Commits](https://github.com/n8n-io/n8n/compare/n8n@2.19.2...n8n@2.19.5)

---
updated-dependencies:
- dependency-name: n8nio/n8n
  dependency-version: 2.19.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 12:44:12 +01:00
dependabot[bot]
9f59f7cea0 build(deps): bump esphome/esphome in /docker/home/esphome
Bumps [esphome/esphome](https://github.com/esphome/esphome) from 2026.4.4 to 2026.4.5.
- [Release notes](https://github.com/esphome/esphome/releases)
- [Commits](https://github.com/esphome/esphome/compare/2026.4.4...2026.4.5)

---
updated-dependencies:
- dependency-name: esphome/esphome
  dependency-version: 2026.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 12:44:04 +01:00
524d0d7d3c caddy: listen on port 80 2026-05-08 13:43:42 +02:00
51b22d769e caddy: fix external ip annotation 2026-05-08 10:49:26 +02:00
4bd0274714 caddy: fix caddyfile syntax 2026-05-08 10:28:56 +02:00
69e3a793c8 caddy: change security context to fix permission error 2026-05-08 10:21:43 +02:00
d5831fd1e3 caddy: deploy caddy as edge reverse proxy (on kube) 2026-05-08 00:48:55 +02:00
cbf7842e8b dns: fix dns file 2026-05-06 19:14:04 +02:00
0d5d688c18 fireshare: deploy fireshare, hello! 2026-05-06 19:08:33 +02:00
dependabot[bot]
de093a27bf build(deps): bump esphome/esphome in /docker/home/esphome
Bumps [esphome/esphome](https://github.com/esphome/esphome) from 2026.4.3 to 2026.4.4.
- [Release notes](https://github.com/esphome/esphome/releases)
- [Commits](https://github.com/esphome/esphome/compare/2026.4.3...2026.4.4)

---
updated-dependencies:
- dependency-name: esphome/esphome
  dependency-version: 2026.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:43:14 +01:00
dependabot[bot]
2f615136c2 build(deps): bump n8nio/n8n from 2.18.4 to 2.19.2 in /docker/home/n8n
Bumps [n8nio/n8n](https://github.com/n8n-io/n8n) from 2.18.4 to 2.19.2.
- [Release notes](https://github.com/n8n-io/n8n/releases)
- [Commits](https://github.com/n8n-io/n8n/compare/n8n@2.18.4...n8n@2.19.2)

---
updated-dependencies:
- dependency-name: n8nio/n8n
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:43:08 +01:00
dependabot[bot]
98359d5181 build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.3 to v0.16.4.

---
updated-dependencies:
- dependency-name: stalwartlabs/stalwart
  dependency-version: v0.16.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:59 +01:00
dependabot[bot]
0d57085ba6 build(deps): bump traefik in /docker/infrastructure/network/traefik
Bumps traefik from 3.6 to v3.7.

---
updated-dependencies:
- dependency-name: traefik
  dependency-version: v3.7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:52 +01:00
dependabot[bot]
9f6fa770cf build(deps): bump library/redis in /docker/personal/gramps
Bumps library/redis from 8.6.2-alpine to 8.6.3-alpine.

---
updated-dependencies:
- dependency-name: library/redis
  dependency-version: 8.6.3-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:45 +01:00
dependabot[bot]
6c43d08174 build(deps): bump gramps-project/grampsweb in /docker/personal/gramps
Bumps [gramps-project/grampsweb](https://github.com/gramps-project/gramps-web) from 26.4.3 to 26.5.0.
- [Release notes](https://github.com/gramps-project/gramps-web/releases)
- [Commits](https://github.com/gramps-project/gramps-web/compare/v26.4.3...v26.5.0)

---
updated-dependencies:
- dependency-name: gramps-project/grampsweb
  dependency-version: 26.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:36 +01:00
dependabot[bot]
fdf77dbd88 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.1813 to release-v0.24.1815.
- [Commits](https://github.com/hotio/jackett/commits)

---
updated-dependencies:
- dependency-name: hotio/jackett
  dependency-version: release-v0.24.1815
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:24 +01:00
dependabot[bot]
8cd97a2413 build(deps): bump jellyfin/jellyfin
Bumps jellyfin/jellyfin from 2026042706 to 2026050514.

---
updated-dependencies:
- dependency-name: jellyfin/jellyfin
  dependency-version: '2026050514'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 09:42:17 +01:00
46c897e865 build(deps): bump buildpath 2026-05-04 18:34:04 +02:00
10d97e09bd readme: update readme to add pre-commit hooks installation instruction 2026-05-04 00:22:07 +02:00
dependabot[bot]
f9affb5269 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.1789 to release-v0.24.1813.
- [Commits](https://github.com/hotio/jackett/commits)

---
updated-dependencies:
- dependency-name: hotio/jackett
  dependency-version: release-v0.24.1813
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-03 18:34:04 +01:00
dependabot[bot]
487a8d48ee build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.2 to v0.16.3.

---
updated-dependencies:
- dependency-name: stalwartlabs/stalwart
  dependency-version: v0.16.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-03 18:33:57 +01:00
dcbef2cd0a blocky: use the right health probe 2026-05-02 19:51:38 +02:00
7465ecedf8 infra: update docker VM RAM to 22222 (16 GiB is actually what it uses at regular load, so it crashes without more) 2026-05-02 19:18:23 +02:00
256c337db4 blocky, coredns: set replicaCount to 2, and enable blue/green 'RollingUpdate' 2026-05-02 18:59:49 +02:00
0ddeb75508 coredns: re-add file plugin with fallthrough 2026-05-02 18:45:19 +02:00
896002da8c coredns: remove file plugin alltogether, change version 2026-05-02 18:43:31 +02:00
ef892b38a7 coredns: retry fix values.yaml 2026-05-02 18:36:22 +02:00
20d8e07a24 coredns: invert fallthrough in config 2026-05-02 18:32:06 +02:00
d9a1063630 coredns: try reversing order 2026-05-02 18:29:41 +02:00
3860f5849c coredns: retry fallthrough in file plugin 2026-05-02 18:28:36 +02:00
f732f7247f coredns: fix chart version 2026-05-02 18:27:38 +02:00
883330996a coredns: fix values.yaml 2026-05-02 18:24:24 +02:00
c90caed623 coredns: set dnspolicy to clusterfirst 2026-05-02 18:20:53 +02:00
cfd521f502 coredns: try adding a different zone for kube resolution 2026-05-02 18:12:54 +02:00
f71faa0ae8 coredns: set zone to . 2026-05-02 18:04:52 +02:00
ce30776eeb coredns: add kubernetes plugin 2026-05-02 17:28:07 +02:00
be092af161 coredns: add zone parameter for file plugin 2026-05-02 17:23:15 +02:00
0b75f66f30 coredns: add fallthrough to file plugin 2026-05-02 17:19:12 +02:00
e595bb2c45 coredns: add debug plugin 2026-05-02 17:14:06 +02:00
d82ce7a80f coredns: tryfix etcd config with zone parameter 2026-05-02 16:52:21 +02:00
31 changed files with 546 additions and 58 deletions

View File

@@ -16,6 +16,7 @@ updates:
- "/docker/infrastructure/network/traefik" - "/docker/infrastructure/network/traefik"
- "/docker/infrastructure/squid" - "/docker/infrastructure/squid"
- "/docker/infrastructure/sshportal" - "/docker/infrastructure/sshportal"
- "/docker/personal/fireshare"
- "/docker/personal/gramps" - "/docker/personal/gramps"
- "/docker/personal/media/films-series/jackett" - "/docker/personal/media/films-series/jackett"
- "/docker/personal/media/films-series/jellyfin" - "/docker/personal/media/films-series/jellyfin"
@@ -52,6 +53,7 @@ updates:
- "/kubernetes/personal/photoprism" - "/kubernetes/personal/photoprism"
- "/kubernetes/production/umami" - "/kubernetes/production/umami"
- "/kubernetes/system/blocky" - "/kubernetes/system/blocky"
- "/kubernetes/system/caddy"
- "/kubernetes/system/coredns" - "/kubernetes/system/coredns"
- "/kubernetes/system/csi-driver-nfs" - "/kubernetes/system/csi-driver-nfs"
- "/kubernetes/system/external-dns" - "/kubernetes/system/external-dns"

View File

@@ -3,7 +3,7 @@ creation_rules:
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$ encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
pgp: DC6910268E657FF70BA7EC289974494E76938DDC pgp: DC6910268E657FF70BA7EC289974494E76938DDC
- path_regex: .*.yaml - path_regex: .*.yaml
encrypted_regex: ^(data|stringData)$ encrypted_regex: ^(data|stringData|.*.key|.*.crt)$
pgp: DC6910268E657FF70BA7EC289974494E76938DDC pgp: DC6910268E657FF70BA7EC289974494E76938DDC
- path_regex: .*.env$ - path_regex: .*.env$
input_type: dotenv input_type: dotenv

View File

@@ -53,6 +53,13 @@ sshportal:
branch: main branch: main
compose_file: docker/infrastructure/sshportal/docker-compose.yml compose_file: docker/infrastructure/sshportal/docker-compose.yml
fireshare:
repo: homeprod
branch: main
compose_file: docker/personal/fireshare/docker-compose.yml
sops_files:
- docker/personal/fireshare/.env
gramps: gramps:
repo: homeprod repo: homeprod
branch: main branch: main

View File

@@ -80,3 +80,13 @@ This setup allows running multiple applications, either self-hosted applications
| <img width=32 src="https://avatars.githubusercontent.com/u/26692192"> | Navidrome | Personal music streaming service | | <img width=32 src="https://avatars.githubusercontent.com/u/26692192"> | Navidrome | Personal music streaming service |
| <img width=32 src="https://avatars.githubusercontent.com/u/102734415"> | TubeArchivist | YouTube archiver | | <img width=32 src="https://avatars.githubusercontent.com/u/102734415"> | TubeArchivist | YouTube archiver |
| <img width=24 src="https://radicale.org/assets/logo.svg"> | Radicale | Calendar and contacts server | | <img width=24 src="https://radicale.org/assets/logo.svg"> | Radicale | Calendar and contacts server |
## Docs (internal, using this repository)
This repository uses pre-commit hooks to automate tasks like file encryption and configuration generation.
After cloning, install the pre-commit hooks:
```bash
pre-commit install
```

View File

@@ -355,6 +355,13 @@ canada:
ttl: 300 ttl: 300
type: A type: A
value: 192.99.6.159 value: 192.99.6.159
clips:
octodns:
cloudflare:
auto-ttl: true
ttl: 300
type: A
value: 83.113.30.49
flix: flix:
octodns: octodns:
cloudflare: cloudflare:

View File

@@ -1,6 +1,6 @@
services: services:
esphome: esphome:
image: ghcr.io/esphome/esphome:2026.4.3 image: ghcr.io/esphome/esphome:2026.4.5
ports: ports:
- "6052" - "6052"
networks: networks:

View File

@@ -1,6 +1,6 @@
services: services:
n8n: n8n:
image: docker.n8n.io/n8nio/n8n:2.18.4 image: docker.n8n.io/n8nio/n8n:2.19.5
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- N8N_SECURE_COOKIE=false - N8N_SECURE_COOKIE=false

View File

@@ -1,6 +1,6 @@
services: services:
stalwart: stalwart:
image: stalwartlabs/stalwart:v0.16.2 image: stalwartlabs/stalwart:v0.16.4
container_name: stalwart container_name: stalwart
networks: networks:
- default - default

View File

@@ -1,6 +1,6 @@
services: services:
traefik: traefik:
image: traefik:3.6 image: traefik:v3.7
command: command:
- "--configFile=/etc/traefik/traefik.yml" - "--configFile=/etc/traefik/traefik.yml"
ports: ports:

View File

@@ -0,0 +1,11 @@
ADMIN_USERNAME=ENC[AES256_GCM,data:8ngfC8VHpaaGCQ==,iv:Ze7ThfWmAWj0ZvV3A7Pd+aqAW/pahkTZhdFC/TnAwZ0=,tag:KCFdGV1dEw3e+q6FBgy2cw==,type:str]
ADMIN_PASSWORD=ENC[AES256_GCM,data:UhxEMnqYDyfgffqUf3Q=,iv:VvNX867P+w20Y7laG0R0c4BUw1uICeyF5SU3+waosRE=,tag:JL4GC+UZY3TqSmCq14CTpg==,type:str]
SECRET_KEY=ENC[AES256_GCM,data:uahYXYr4DvavNMTTdcDA0hdp5wj3OLret3fPF1DEc2lis+E7/fe45DWFuhUu8RAK76tuheA=,iv:Lofc+PP7Rtg99l36yOx6bt0i8hg1DJXzwSKQNJCRYPw=,tag:AiUGZOiLyjKItf++Gya+eA==,type:str]
DOMAIN=ENC[AES256_GCM,data:LyJ7RAgrioTltNQ/BKoPbEN8XQ==,iv:IHrT5TkaXuIhkfN/nHcapz4CNBG0t9lbzrHDjp04JLw=,tag:gjSa/tSVEqk6pXrfhjs7gQ==,type:str]
sops_lastmodified=2026-05-06T17:05:48Z
sops_mac=ENC[AES256_GCM,data:wRtDnVQkNsc1MtxSpbuVDuACkCwunYeyYSaQX2Tglm2kwOnx9iCyhuWY6RMYu5nfyJ1CT1kfqeGrGxhJ5uMDee29eLUv844X3hIXwpMT50jHFXEtfKLfRMfqpv9r9mbp2EP9VNDUtPyIwDk5vSjGeaYqEWtHW/q5y9qIrzqqy5g=,iv:UG4XGi3Qo8/nAddY+rzJm1AKIAmJjtR+2bDqSeaVxG4=,tag:SL2rvrxFmMfgyUyMqFIZEQ==,type:str]
sops_pgp__list_0__map_created_at=2026-05-06T17:05:48Z
sops_pgp__list_0__map_enc=-----BEGIN PGP MESSAGE-----\n\nhQIMA7uy4qQr71wiAQ//b6zlRVKrqzzszBJmnOUlfeZd5m2ekYv/zIBr4oxHyn5L\neLLff+N7hjBVSajg9Qg7GBQv7s3DX70vHTpdUP38UEO1aM0l3eU1JCwA4Hdh7Ds5\nnq330vUKhIAd+K8Vv4Ei9YHpj+kgMnt+R780qZUg18D39TAnx36q9b5SKzZCUsks\n3YM+G8pHLRipZhxp6zwhOPHVSnImOFjty4d6JV6Zes9zfslaETgva7p5DIKP0ttf\nI2JRacvL75MMp1USyqGKt7Bpl6Yz4VxY49aea+FxDlbzCVLuBBgZMoEjhPQifQfh\nB6OObmu1cVhECidrMHmqDBNqgKsNLble+g3Le+gJdn/zKxVc+q+cPPuk/JdT8tfv\nZTei6jg66IREZOrZCP3Gt4OB5LbkLdS0NET2CMVAYkGQvGrSC+diwUnFkI+WEh+p\noZhvgp/ytBgaw6ZyNPmvkGkFeFg1/ISpOHkVQ+P6Pnot8h4HvuI/KcBwJRCrtdbg\n+XMpqeQdmCnM04v5Uq1NVqRWHD0yvd7GHDOZCqJPMFHP0M6R+SwHq+8+pgbO3jxt\n+426MvhNKw8xWMtnUIO8sSSkzgOfT6vFXmzQvIawbXvitjGjiElkpmT5Hz3hn1Bm\nnu8CivqLwL4Gs1Uc2m6qHGkvGqxWwcHABWqftAk3VfhmjcFDwAyWROlCuD+A15PS\nXgE1wn9jLesXaiCwzAp4AOstkk0fR2yio4fa9dCeenzuedULNLuCyJfYtSm4QlSU\nvffH4iL8X/R24s6SdPsCIuNnAeKc0P4E55AlOaeZN4HcZzfspVikAZx+bK14JS8=\n=KGp6\n-----END PGP MESSAGE-----
sops_pgp__list_0__map_fp=DC6910268E657FF70BA7EC289974494E76938DDC
sops_unencrypted_suffix=_unencrypted
sops_version=3.10.2

View File

@@ -0,0 +1,58 @@
services:
fireshare:
container_name: fireshare
image: shaneisrael/fireshare:1.6.10-lite
ports:
- "80"
volumes:
- data:/data
- processed:/processed
- video:/videos
- images:/images
env_file:
- .env
environment:
# PUID/PGID: the user/group ID the container runs as. Files written to your
# volumes (data, processed, videos, images) will be owned by this user. Set these to
# match the owner of your host directories to avoid permission errors.
# Run `id` on your host to find your UID and GID.
- PUID=1000
- PGID=1000
networks:
- default
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.fireshare.rule=Host(`clips.vhaudiquet.fr`)"
- "traefik.http.services.fireshare.loadbalancer.server.port=80"
volumes:
data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/app/fireshare/data'
processed:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/app/fireshare/processed'
video:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/app/fireshare/video'
images:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/app/fireshare/images'
networks:
proxy:
external: true
name: proxy

View File

@@ -1,7 +1,7 @@
services: services:
grampsweb: grampsweb:
container_name: grampsweb container_name: grampsweb
image: ghcr.io/gramps-project/grampsweb:26.4.3 image: ghcr.io/gramps-project/grampsweb:26.5.0
restart: always restart: always
networks: networks:
- default - default
@@ -31,7 +31,7 @@ services:
grampsweb_celery: grampsweb_celery:
container_name: grampsweb_celery container_name: grampsweb_celery
image: ghcr.io/gramps-project/grampsweb:26.4.3 image: ghcr.io/gramps-project/grampsweb:26.5.0
restart: always restart: always
environment: environment:
- GRAMPSWEB_TREE="Gramps Web" # will create a new tree if not exists - GRAMPSWEB_TREE="Gramps Web" # will create a new tree if not exists
@@ -52,7 +52,7 @@ services:
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2 command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
grampsweb_redis: grampsweb_redis:
image: docker.io/library/redis:8.6.2-alpine image: docker.io/library/redis:8.6.3-alpine
container_name: grampsweb_redis container_name: grampsweb_redis
restart: always restart: always

View File

@@ -1,7 +1,7 @@
services: services:
jackett: jackett:
container_name: jackett container_name: jackett
image: ghcr.io/hotio/jackett:release-v0.24.1789 image: ghcr.io/hotio/jackett:release-v0.24.1822
ports: ports:
- "9117" - "9117"
networks: networks:

View File

@@ -1,6 +1,6 @@
services: services:
jellyfin: jellyfin:
image: jellyfin/jellyfin:2026042706 image: jellyfin/jellyfin:2026050514
container_name: jellyfin container_name: jellyfin
networks: networks:
- default - default

View File

@@ -1,6 +1,6 @@
services: services:
radicale: radicale:
image: tomsquest/docker-radicale:3.7.1.0 image: tomsquest/docker-radicale:3.7.2.0
container_name: radicale container_name: radicale
ports: ports:
- 5232 - 5232

View File

@@ -10,7 +10,7 @@ services:
env_file: .env env_file: .env
match_collector: match_collector:
image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:ee32060a7f05bd963bed4337369e146ba6313d64 image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:b2178fec85027348157a5442a81d00479154e581
build: ./match_collector build: ./match_collector
volumes: volumes:
- bpcdragon_cache:/cdragon - bpcdragon_cache:/cdragon
@@ -23,7 +23,7 @@ services:
env_file: .env env_file: .env
frontend: frontend:
image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:ee32060a7f05bd963bed4337369e146ba6313d64 image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:b2178fec85027348157a5442a81d00479154e581
build: ./frontend build: ./frontend
restart: always restart: always
volumes: volumes:

View File

@@ -47,7 +47,9 @@ resource "proxmox_virtual_environment_file" "ai-cloud-config" {
resource "proxmox_virtual_environment_vm" "ai" { resource "proxmox_virtual_environment_vm" "ai" {
name = "ai-${var.proxmox_node_name}" name = "ai-${var.proxmox_node_name}"
node_name = var.proxmox_node_name node_name = var.proxmox_node_name
on_boot = true
on_boot = false
started = false
agent { agent {
enabled = true enabled = true

View File

@@ -61,7 +61,7 @@ resource "proxmox_virtual_environment_vm" "docker-machine" {
} }
memory { memory {
floating = 16192 floating = 32000
dedicated = 38768 dedicated = 38768
} }

View File

@@ -29,7 +29,7 @@ resource "proxmox_virtual_environment_vm" "kube" {
memory { memory {
dedicated = 32768 dedicated = 32768
floating = 16192 floating = 22222
} }
boot_order = ["scsi0", "ide0"] boot_order = ["scsi0", "ide0"]
@@ -89,6 +89,12 @@ resource "proxmox_virtual_environment_vm" "kube" {
vlan_id = 2 vlan_id = 2
} }
network_device {
bridge = "vmbr0"
model = "virtio"
vlan_id = 2
}
operating_system { operating_system {
type = "l26" type = "l26"
} }

View File

@@ -4,8 +4,12 @@ image:
tag: v0.24 tag: v0.24
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
controller: controller:
replicas: 1 replicas: 2
dnsPolicy: ClusterFirst dnsPolicy: ClusterFirst
strategy: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
env: env:
TZ: Europe/Paris TZ: Europe/Paris
service: service:
@@ -21,6 +25,37 @@ service:
dns: dns:
port: 53 port: 53
protocol: UDP protocol: UDP
probes:
liveness:
enabled: true
custom: true
spec:
tcpSocket:
port: 53
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readiness:
enabled: true
custom: true
spec:
tcpSocket:
port: 53
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
startup:
enabled: true
custom: true
spec:
tcpSocket:
port: 53
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 3
failureThreshold: 30
resources: resources:
limits: limits:
cpu: 200m cpu: 200m
@@ -31,27 +66,27 @@ resources:
# Full list of options https://github.com/0xERR0R/blocky/blob/main/docs/config.yml # Full list of options https://github.com/0xERR0R/blocky/blob/main/docs/config.yml
config: "upstreams:\n groups:\n default:\n - 1.1.1.1\n - 1.0.0.1\n lan:\n - 10.101.207.1\n\nconditional:\n mapping:\n lan: 10.101.207.1\n cluster.local: 10.96.0.10\n in-addr.arpa: 10.96.0.10\n\nblocking:\n allowlists:\n ads:\n - |\n dealabs.digidip.net\n s.click.aliexpress.com\n fonts.googleapis.com\n fonts.gstatic.com\n wl.spotify.com\n www.googleadservices.com\n \n denylists:\n ads:\n - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts\n - https://adaway.org/hosts.txt\n \n clientGroupsBlock:\n default:\n - ads\n \n blockType: zeroIp\n blockTTL: 1m\n loading:\n refreshPeriod: 4h\n downloads:\n timeout: 60s\n\ncaching:\n minTime: 5m\n maxTime: 30m\n # Disable negative caching (NXDOMAIN responses) for dynamic DNS\n cacheTimeNegative: 0\n prefetching: true\n prefetchExpires: 2h\n prefetchThreshold: 5\n\nprometheus:\n enable: true\n path: /metrics\n\nports:\n dns: 53\n http: 4000\n\nbootstrapDns: tcp+udp:1.1.1.1\n\nlog:\n level: info\n format: text\n timestamp: true\n" config: "upstreams:\n groups:\n default:\n - 1.1.1.1\n - 1.0.0.1\n lan:\n - 10.101.207.1\n\nconditional:\n mapping:\n lan: 10.101.207.1\n cluster.local: 10.96.0.10\n in-addr.arpa: 10.96.0.10\n\nblocking:\n allowlists:\n ads:\n - |\n dealabs.digidip.net\n s.click.aliexpress.com\n fonts.googleapis.com\n fonts.gstatic.com\n wl.spotify.com\n www.googleadservices.com\n \n denylists:\n ads:\n - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts\n - https://adaway.org/hosts.txt\n \n clientGroupsBlock:\n default:\n - ads\n \n blockType: zeroIp\n blockTTL: 1m\n loading:\n refreshPeriod: 4h\n downloads:\n timeout: 60s\n\ncaching:\n minTime: 5m\n maxTime: 30m\n # Disable negative caching (NXDOMAIN responses) for dynamic DNS\n cacheTimeNegative: 0\n prefetching: true\n prefetchExpires: 2h\n prefetchThreshold: 5\n\nprometheus:\n enable: true\n path: /metrics\n\nports:\n dns: 53\n http: 4000\n\nbootstrapDns: tcp+udp:1.1.1.1\n\nlog:\n level: info\n format: text\n timestamp: true\n"
sops: sops:
lastmodified: "2026-05-02T14:36:10Z" lastmodified: "2026-05-02T17:51:26Z"
mac: ENC[AES256_GCM,data:1SV8u2ozDlB/m8uo7I7AIa/1njmu1bJ5vKilcirfNByz8wp/LRTtRgWwpUOrxzd1+qg+ZC1/mSLQY/kdwWcTU9uP6uBNSLemWJgIRBobFmExDvtfidkJXRhTMUm9zdSNGS/EbQQOz+DV8AAuByTwbP6i5fTiVNVes8kBlYbPvjc=,iv:Ox25bYW8ch63eJgCkOTZxUP/6+w43lKjC2lzYdBzUjw=,tag:LgXken02vzuXDuxg4Iovrw==,type:str] mac: ENC[AES256_GCM,data:J7EovwsXi2L9XocZoi5ann71DQ+wWZk2aCUbjvaGpv0yZC5g2HNccPVRvAj3y9SyMttLT8QlESXzHpEV2A6bOfmJf5v0ACYuWn5wKNlkaBdmTs1xwXp/RcpeOb+FCL9D+9hzjBO9XF6iXZLSj4pO/n1C0IhfeqYKdDC4tHkxOHA=,iv:Qm3Uh+UUSDWCxh7gWJ9x597aWXdMHxtpixE2BVlb6c8=,tag:aHbK26P4f9YV2uGLhpT6OA==,type:str]
pgp: pgp:
- created_at: "2026-05-02T14:36:09Z" - created_at: "2026-05-02T17:51:25Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiARAAtdzdOgPBhpRSSnw5ZNXHpb6//E5SpCTDDOUbgpvw4FQj hQIMA7uy4qQr71wiAQ/+Po8UdkiFGt0LmcvCeSE23aoWwY4qi2FsGKdik+7sL3RN
ndqJwONMEm7RlZELlxpXq4Gr621j5hcdcc2vUl4ak8wC+1Ml2AAEYf0rrL2SQVVC gOt/VQ6geefhd4YDhH0jfd7TDXs7UTtYvKQ+IaKcRUyOrZzhrfTpNeT/lXuaTkHf
DAiRdHXilzOKJBx+qA+afZT4SNXnN8kv8LRq354mEpxMZ21ot0nZ+sjJiHrVGbSO LAUiqyprq1RDzxxIPvgMh4DynfehgN8B81iMJox2/fD0oV7B6dIIABvAl87gzANw
B2l39o3POLoTmzB/0+iTn953txjijVn/Hm7JoQ7yqQXBwnzjK1F7IkOdv0hyvpW1 7snQLJwdhNXFylKfrdC9A4AfYz7ycXBzEyYlY5BMZENw9yBGgZ1dZITU2KxeYCo/
/Sba+yqZQTqdpH/EwRfQxf6OJpxMBIAj6/COzcp143O3tjVQAEHTaqHbY4rbrt07 gdVTCevybSBQ/Cq0+hI25ZF+nEIGjrVCN2AxPEUO98ljp4OZEu0p6KsMB4xgCD2j
yxvOZKy2tNP/xY62E35rTzGvMrRqUzFNtaYeycx5F0jHgYNITtlCPh1txf5PBq5H l5LN6YPAu95TRx/bZinoHMMzth6WhFdUG0Anj2cIIYXOcreyzPxYGj+vwRlZFrkZ
kmR9NFCOHncX5BFTAXbWaGVQiWxa71mn3vy49BZCwwz21D3u5/PI0Vqe5JBccyVu gTU2vfpt/1Wx8ORRqocCkxZ3dMtm4KsGqe3xpd1y84ezL/bMLxSApn5e7Zzn1cEg
4yqqIdwIrj5i0BdlIFHig1WbYzDjRriR4H1z/Y2Vvv1wtRao99rf8DhCxcWwEgNo DoLwJGnZzSY4nRzfoGXOv6mjyTUVkqNexRlL2wIsgDP9VP/ohS9K2fFZzzJ/fXa1
vAOM1wSBHacr9uZrgAOvObkMWZ4m1UekIJXkA5803cb8J+ceneJ+EOWyYiFVPV8h G9DUg64SwfYIFzAgsyWwdE3kCJ/GSIAgrgNwBfZlLGdfB/PB2BkHNpzX4LROUEcD
MshaL9M1zuEydZqHwDHfMgR/BgVvSVFwPQSkfXnKYJHNS8QGTfZKFudBiP0Ij7DB HqqHtVlUIikiFdDQWwB5tS+APBCO6VuzKl1z3ROgV6xhvr4ZYkd9CHYu1S1r1XAs
pjRf5f2b4FhDgCIg5BopWBxES0LscpFmHgrV0QDKiXOXJNMkVUF5+ITz6HwwwlnS JRCyow0zTLRYGQnDD8+RPQ4MsbzJsugA8Ac4bE4sVJpP8hloZBqHb38AkoUruDTS
XAEwKWrC58GzNBKFCvSMeD83xy7icfdTkXvO30EW9CbEUAMYN4twgsHG+J5NDrUR XgE+Nxcy0/aznBgEscE/VuY/GTH1vwYl5/dAcV8GDYcNmd1tE9E1QwWsSurHt39u
yaET3e2kmOWStkQsPmMtYEVRfRHOWr8XKQXMJfrA87ZC0P19UwUM0eRXJVCN +QdGZYoUbHPtsk/zODgEVqn0iTsqO7Y4Qmu93bYlYFQwCygAPKKpCaqmmu2U+rI=
=0h7d =hq5F
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: DC6910268E657FF70BA7EC289974494E76938DDC fp: DC6910268E657FF70BA7EC289974494E76938DDC
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$ encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$

View File

@@ -0,0 +1,93 @@
# Caddy Routes - External ConfigMap
# This file contains all route definitions, imported by the main Caddyfile.
# Edit this file to add/modify routes.
#
# Certificate files are mounted from the caddy-certificates Secret
# at /etc/caddy/certs/
apiVersion: v1
kind: ConfigMap
metadata:
name: caddy-routes
namespace: caddy
labels:
app.kubernetes.io/name: caddy
app.kubernetes.io/component: routes
data:
Caddyfile: |
vhaudiquet.fr {
tls /etc/caddy/certs/vhaudiquet-fr.crt /etc/caddy/certs/vhaudiquet-fr.key
reverse_proxy 10.1.2.212:80
}
*.vhaudiquet.fr {
tls /etc/caddy/certs/wildcard-vhaudiquet-fr.crt /etc/caddy/certs/wildcard-vhaudiquet-fr.key
# Kubernetes services (via Traefik)
@authentik host authentik.vhaudiquet.fr
@auth-nook host auth-nook.vhaudiquet.fr
@nook-mg host n.vhaudiquet.fr
@nook host nook.vhaudiquet.fr
@sse-nook host sse-nook.vhaudiquet.fr
@gitea host git.vhaudiquet.fr
@flux-wh host flux-webhook.vhaudiquet.fr
@umami host umami.vhaudiquet.fr
handle @authentik {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @auth-nook {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @nook-mg {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @nook {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @sse-nook {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @gitea {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @flux-wh {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
handle @umami {
reverse_proxy traefik.traefik.svc.cluster.local:80
}
# Docker VM services (via Traefik)
@alexscript host alexscript.vhaudiquet.fr
@clips host clips.vhaudiquet.fr
@jellyfin host flix.vhaudiquet.fr
@mail host mail.vhaudiquet.fr
handle @alexscript {
reverse_proxy 10.1.2.212:80
}
handle @clips {
reverse_proxy 10.1.2.212:80
}
handle @jellyfin {
reverse_proxy 10.1.2.212:80
}
handle @mail {
reverse_proxy 10.1.2.212:80
}
}
semery.fr {
tls /etc/caddy/certs/semery-fr.crt /etc/caddy/certs/semery-fr.key
reverse_proxy 10.1.2.212:80
}
buildpath.win {
tls /etc/caddy/certs/buildpath-win.crt /etc/caddy/certs/buildpath-win.key
reverse_proxy 10.1.2.212:80
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: caddy
resources:
- namespace.yaml
- repository.yaml
- release.yaml
- certificates-secret.yaml
- caddyfile.yaml
secretGenerator:
- name: caddy-values
files:
- values.yaml=values.yaml
configurations:
- kustomizeconfig.yaml

View File

@@ -0,0 +1,6 @@
nameReference:
- kind: Secret
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease

View File

@@ -0,0 +1,7 @@
apiVersion: v1
kind: Namespace
metadata:
name: caddy
labels:
app.kubernetes.io/name: caddy
app.kubernetes.io/component: edge-proxy

View File

@@ -0,0 +1,30 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: caddy
namespace: caddy
spec:
interval: 1m
chart:
spec:
sourceRef:
kind: HelmRepository
name: caddy
namespace: caddy
chart: caddy
interval: 1m
version: "0.7.1"
valuesFrom:
- kind: Secret
name: caddy-values
# Patch the Service to add loadBalancerIP since the chart doesn't support it
postRenderers:
- kustomize:
patches:
- target:
kind: Service
name: caddy
patch: |
- op: add
path: /spec/loadBalancerIP
value: "10.1.2.152"

View File

@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: caddy
namespace: caddy
spec:
interval: 1m
url: https://charts.alekc.dev/

View File

@@ -0,0 +1,99 @@
# Caddy Edge Proxy
replicaCount: 2
# Listen on standard HTTP port
listenPort: 80
# Enable HTTPS
https:
enabled: true
port: 443
image:
repository: caddy
pullPolicy: IfNotPresent
tagSuffix: ""
tag: 2.11.2
service:
type: LoadBalancer
externalTrafficPolicy: Local
# Disable ingress - Caddy IS the edge proxy
ingress:
enabled: false
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
# Caddy needs root to bind to ports 80/443 and write runtime data
# Using restrictive security context causes "operation not permitted"
podSecurityContext: {}
securityContext: {}
health:
path: /
port: 9999
# Extra volumes: certificates + external routes ConfigMap
volumes:
- name: certificates
secret:
secretName: ENC[AES256_GCM,data:Er1F+5xhWKUT43+7jU/pwxWP,iv:Ohc3jFIQ4Enmbhd0F44SYWJiHlj1oFOrMdtM4oYKQEU=,tag:Kk8Y8aFSKMyGmY/uRVvyLw==,type:str]
optional: ENC[AES256_GCM,data:JdlpGQ==,iv:xaoqonC9cGHXizHuAFrjhC4ZEtZ2IICeg2hxvGjyFM4=,tag:JYmlIXgIMON7z4++FrBGKQ==,type:bool]
- name: routes
configMap:
name: caddy-routes
# Extra volume mounts
volumeMounts:
- name: certificates
mountPath: /etc/caddy/certs
readOnly: true
- name: routes
mountPath: /etc/caddy/routes
readOnly: true
# Caddy configuration
config:
debug: false
# Global options (goes inside the global {} block)
global: |
auto_https off
# The main Caddyfile content - imports routes from external ConfigMap
# This keeps routes in a separate, easily editable file
caddyFile: |
:80 {
redir https://{host}{uri} permanent
}
import /etc/caddy/routes/Caddyfile
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: caddy
topologyKey: kubernetes.io/hostname
sops:
lastmodified: "2026-05-08T11:43:14Z"
mac: ENC[AES256_GCM,data:K0HWw8yTPKy6e3aQV4SdiVwrCjiyCFlFbeycAiyJq4IdlKX9v4wFvjVFLR8VziH8oXJXdUUhr+LOiqNI5HwghXkVn2dOP2ij9jvXZtMic4P0AUN16PfWoedu9ozA+xsGHZ1OTUv+sxvKEUo5Z5Wp+u761w/Xqdn5hHmU2Komatk=,iv:ICwn/LvizIjXVfgiMje50dQ11JAH37wSla29bGAnjuA=,tag:mV7rtahUy4ODZaA7baM12w==,type:str]
pgp:
- created_at: "2026-05-08T11:43:13Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiAQ//aGnCSLLWTkhToTh833OJ1GwgN82F8R+RgsfpKIW+XNvI
YdTCgaFrYdCGXsaLHijb7vVwCU0VRf/ufZfQp2+GupqRHCbMLSmlkoiyr9ImGlYX
VWQDajv74H/3CcyCQNjqfFRdUHLE+rfNuYaH/p3+/Ee2bgJi52f3uRdJ4lXSCWIf
KW9lLbwjlfGnOnsnDkaPwcZW9QL353Mi82yXOu7OihobUaVgr83nESXbAS/k4mx1
whOXAoEDeLQZfZrITEewOQ0PHjWJwKc0x2YCiQ0If33GSfDjzWPoDuXmQo/xhk98
Nt3aNTMDvjriGNOIcZyUlEjq1HqCmd3pQSD5h8soR9Do/NsTocyK1da49iz91dha
jwoEga2iFis9Zd9rr7Caf3pWtmKENUGFJl15tpaelvk13jUebSyDubw0OIYbbILr
dVZAeiOHrRMD5crxG05zvOeLMASuL/IrK97RLBAonZLEkRrfgAwZHK2U0rq2HXpI
wlp4yDlF/eILvmMgAruP7lW0q/m5+DfxQtcZdamtm3FWj9m0iUAthvw02fplmFci
xJ82rkfkPAZSm7/yPJ9yiea+tKgX8yk1uArRtf8rsG6SED2lCRKmux8ElcZc5DYV
hyLivTN7X5Nr05mvaPIptCVm1iYoWaiQNZcPDax/LBZJhNaJgPUz1ue1Ppf422PS
XgE4dh3x1ulcUhXm4nK/0FzKmJUOjcygPeGWmia0ZOEHub/ju+z8LgRAkBasqRXP
4aepPm5xVY0g/Z0xksxIWpYUnLRzs0uUKd+zz1MvmWlZckxUO5wWJUWRcwCBDz4=
=Ql2K
-----END PGP MESSAGE-----
fp: DC6910268E657FF70BA7EC289974494E76938DDC
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
version: 3.10.2

View File

@@ -6,3 +6,4 @@ spec:
blocks: blocks:
- cidr: "10.1.2.171/32" - cidr: "10.1.2.171/32"
- cidr: "10.1.2.148/32" - cidr: "10.1.2.148/32"
- cidr: "10.1.2.152/32"

View File

@@ -12,7 +12,7 @@ spec:
name: coredns name: coredns
namespace: coredns namespace: coredns
chart: coredns chart: coredns
version: "1.x.x" version: "1.45.2"
interval: 1m interval: 1m
valuesFrom: valuesFrom:
- kind: Secret - kind: Secret

View File

@@ -1,8 +1,31 @@
replicaCount: 1 replicaCount: 2
image: image:
repository: coredns/coredns repository: coredns/coredns
tag: 1.12.0 tag: 1.14.3
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
deployment:
dnsPolicy: ClusterFirst
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 8181
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
resources: resources:
limits: limits:
cpu: 100m cpu: 100m
@@ -16,21 +39,35 @@ service:
io.cilium/lb-ipam-ips: "" io.cilium/lb-ipam-ips: ""
servers: servers:
- zones: - zones:
- zone: lan - zone: cluster.local
port: 53
plugins:
- name: kubernetes
parameters: cluster.local in-addr.arpa ip6.arpa
configBlock: |-
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
- zones:
- zone: .
port: 53 port: 53
plugins: plugins:
- name: errors - name: errors
- name: health - name: health
configBlock: lameduck 5s configBlock: lameduck 5s
- name: ready - name: ready
- name: debug
- name: file
parameters: /etc/coredns/zones/lan.zone lan
configBlock: |-
reload 10s
fallthrough
- name: etcd - name: etcd
parameters: lan
configBlock: |- configBlock: |-
path /skydns path /skydns
endpoint http://etcd.coredns.svc.cluster.local:2379 endpoint http://etcd.coredns.svc.cluster.local:2379
fallthrough fallthrough
- name: file
parameters: /etc/coredns/zones/lan.zone
configBlock: reload 10s
- name: cache - name: cache
parameters: 30 parameters: 30
- name: loadbalance - name: loadbalance
@@ -44,27 +81,27 @@ extraVolumes:
configMap: configMap:
name: coredns-lan-zone name: coredns-lan-zone
sops: sops:
lastmodified: "2026-05-02T14:39:47Z" lastmodified: "2026-05-02T16:59:44Z"
mac: ENC[AES256_GCM,data:Gu0D9opwQSxNgqtv2KLMd9XGh3SbEDFXUZbPPbxuLT1jT+TwWEYSEu60PKUnU8nOdukYIoiSE3hj29Wsg3IqqjUc0oEUHn1IRPGpn/UhsvURcKgrbyEv3mGjSDicKNMyDgbTTqiPJz/K++SvmRbjJbpDtiQhRrPvw/oaVf0Cj28=,iv:DD4sk2jp6zIkRQaMTXmhfvRwz/Nnt1ecN0HjqlG9zFU=,tag:nGYLN1djfe/GzBofLPuT8g==,type:str] mac: ENC[AES256_GCM,data:H4uRid1Fqx4JzsF43TSGa7QcGjpXLAHiM0N3Kf4z7ab4eMlTy1+RXMV7xVT9BinjZzH6P+ENxo0yVOsdt0Yu467KJhGznNWlb2MC2TElPxZ9/yItJ+hdVGHGWbVGFWUL5NOUQ9fY2NPGw0CGr8qyftLr5Qkx0LO/VUgKWkq6RWM=,iv:9+V/sCBhfWAsIvr4DsWQgkeqQZQyT4Ti3Y+qCEZqU5c=,tag:JCRONb54BpXQzYhhPs7VGA==,type:str]
pgp: pgp:
- created_at: "2026-05-02T14:39:46Z" - created_at: "2026-05-02T16:59:43Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiARAAic/5FcANctn1HG4gfBM8p6ElQG3oo056iQDK1dbHzkNs hQIMA7uy4qQr71wiAQ/9HzeTVqelbvPtluYa5xGvoYNeEEXg43CwrwZ1/z5yFWvx
HJ3KIZjP0BPwBag2jO6TJ51Y7Wtq62lvrggIifAEHt2FiV4oxDL+oRGwPq5l6l73 DoOCeyro5wFsNC6td7n2HVhtK0ULkfrMHH8OC+7L3bXbnlEnQzITmDggAUvfegCv
46xiTygo4X1zDcDLIX2wNv1UeiGdKA2mw2D33lHAxLQSkxuQE3/Pukb8YvXVgYNi b/7ohPkOdLvi6qXbr8bgqCZYFnPq+gUs3UOPh5Tl6wgzRSFXw2Hsb4YmQkvZJUNb
2hpRFed4TpjccXkvTNL2d/yEvdqnDdHlxqboqvygIGw0u7KIhCIh+IRkjEFx0nvU PhPpLIUe/ECE4hmEjO5v9o3X0o7qZ3bahf9mZZlnJnvXT7R/DM8eeWTis/q0WSHE
eKEq04jTWjE8SRCbFJu1jXMNQ0jkPkwU9XkM0FtuSus48lwe+jKdo4+uYXZBDQdC XnclhOX4GlMwXxa65sRrShuPcsV3qqX3VWOSWJFBhGx/FDtZTkhlHGQ9YhF2TzbB
mUkZwQy0dzOMJGSa+1kJ9V3xt/pEEEsQKNfepz1QHjgoTYsU84JOwbPRBEBBNFB0 xxCrn87mH2W13NH6jQOQYPh1JTTJbgZZMZXgyPNmPDSYZE1kxTdrz4l4mcmCDND0
kvbuOYUGu9chuo9gt5ByGxetJBsH2ckKE5mNHxJ4KQOSBRM5dmaxjv8XVmVb60jo hY3T8iR8ap2b3HhSNCqC1C0QN/bK217hTs8cJHWRRfa6jfh12imwk2XhJkB3zZxV
GXaq4Q7dVGtPiSBz0SUOdTna5+RKs1VHNbn54hRB54YNZoltJlbsjvS7weTkuDKF O1oSb6eiP0ba0CgXu31shmfXuTAeVbTm6E50heYorjQKR5djjnOVwQUdmis1Awae
QHm0DgK9maebHSa/s434xYzyc7X3vsZ76xdUHX3ZwSLR7h4jVoWy6RP1cybWYWOg AQTiWtBBbOgfX5WA5b6wInFr0WEsshG+YuqfB7FhJpo2SHyeFhgk47ssHWSeBpPv
CFX/L/7JVYZsBu414q2+75buzi55Ja8GUTjq3T2oyxtVtnC6zr8oLZM9TFwEe+QF wa4OAGaMkdGoePQhApZFrBCZHslEhPE+XQlDdyOtXCmxBOcLwe59ikWLV75j0DzS
C6pXdbLOx2ToGpqbk2Ps4vTqIo0pTBbzDohycFQCiGIyOS/ZDjmJ8pMmCxPxZRjS NRUNOBYQ8Q1Y6Su/sJWW7TykQkmDirU+oIYxAngZyIyJSWvARPd6fJJvkqqg013S
XgEwhkNmirBPhGn+6DjeWJDB3p3vVy2BY7ftfGB8R+fxk4EqhhcnrZNhPvylTNqD XgH1+LQJWNEJzIaLKCWbkZXnMstsOYrs4ynV4f/QZKU+Md5CgVbjy9KIC/trfNhj
A/UavumwRWNHFi0lCt9/OHON1bnrjTAUbcajaGq6D7vtSzyZcW2xL9nlJ04mOO4= 1t9kkyVVOEO7UmRhMyl8pK2gQDiOBrkhUJ5tSNFEfxM1llZ4GZRV+SUuMC3UzVA=
=pcZc =l7Wo
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: DC6910268E657FF70BA7EC289974494E76938DDC fp: DC6910268E657FF70BA7EC289974494E76938DDC
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$ encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$