Compare commits

...
57 Commits
Author SHA1 Message Date
vhaudiquet f8f7ae6047 buildpath: add memory limits for mongo, update 2026-06-27 12:39:22 +02:00
vhaudiquet 102d1a1a68 gitea: remove stale "redis" reference, update to "valkey" 2026-06-27 12:20:07 +02:00
vhaudiquet 2eb4568682 gitea: add resource limits 2026-06-27 12:09:03 +02:00
dependabot[bot]andvhaudiquet 09447ecc8f build(deps): bump vabene1111/recipes in /docker/personal/tandoor
Bumps vabene1111/recipes from 2.6.9 to 2.6.11.

---
updated-dependencies:
- dependency-name: vabene1111/recipes
  dependency-version: 2.6.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:57:34 +02:00
dependabot[bot]andvhaudiquet 8086bf3da0 build(deps): bump tomsquest/docker-radicale in /docker/personal/radicale
Bumps tomsquest/docker-radicale from 3.7.3.0 to 3.7.5.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:57:28 +02:00
dependabot[bot]andvhaudiquet c1e7c4cdaa build(deps): bump jellyfin/jellyfin
Bumps jellyfin/jellyfin from 2026061506 to 2026062206.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:57:18 +02:00
dependabot[bot]andvhaudiquet 1fe2d761a2 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.2075 to release-v0.24.2110.
- [Commits](https://github.com/hotio/jackett/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:57:08 +02:00
dependabot[bot]andvhaudiquet 06b7acf84c build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.9 to v0.16.10.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:56:58 +02:00
dependabot[bot]andvhaudiquet b346174788 build(deps): bump gramps-project/grampsweb in /docker/personal/gramps
Bumps [gramps-project/grampsweb](https://github.com/gramps-project/gramps-web) from 26.6.1 to 26.6.2.
- [Release notes](https://github.com/gramps-project/gramps-web/releases)
- [Commits](https://github.com/gramps-project/gramps-web/compare/v26.6.1...v26.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:56:49 +02:00
dependabot[bot]andvhaudiquet e2b436ee09 build(deps): bump esphome/esphome in /docker/home/esphome
Bumps [esphome/esphome](https://github.com/esphome/esphome) from 2026.5.3 to 2026.6.2.
- [Release notes](https://github.com/esphome/esphome/releases)
- [Commits](https://github.com/esphome/esphome/compare/2026.5.3...2026.6.2)

---
updated-dependencies:
- dependency-name: esphome/esphome
  dependency-version: 2026.6.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:56:41 +02:00
dependabot[bot]andvhaudiquet ac9dd882b9 build(deps): bump hotio/radarr
Bumps [hotio/radarr](https://github.com/hotio/radarr) from release-6.1.1.10360 to release-6.2.1.10461.
- [Commits](https://github.com/hotio/radarr/commits)

---
updated-dependencies:
- dependency-name: hotio/radarr
  dependency-version: release-6.2.1.10461
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 09:56:34 +02:00
dependabot[bot]andvhaudiquet c802b98aac build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.8 to v0.16.9.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:12:23 +02:00
dependabot[bot]andvhaudiquet 4323bf120a build(deps): bump gramps-project/grampsweb in /docker/personal/gramps
Bumps [gramps-project/grampsweb](https://github.com/gramps-project/gramps-web) from 26.6.0 to 26.6.1.
- [Release notes](https://github.com/gramps-project/gramps-web/releases)
- [Commits](https://github.com/gramps-project/gramps-web/compare/v26.6.0...v26.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:12:00 +02:00
dependabot[bot]andvhaudiquet 1e210ab497 build(deps): bump shaneisrael/fireshare in /docker/personal/fireshare
Bumps shaneisrael/fireshare from 1.6.16-lite to 1.7.1-lite.

---
updated-dependencies:
- dependency-name: shaneisrael/fireshare
  dependency-version: 1.7.1-lite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:11:51 +02:00
dependabot[bot]andvhaudiquet d59ddcb80f build(deps): bump jellyfin/jellyfin
Bumps jellyfin/jellyfin from 2026060919 to 2026061506.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:11:42 +02:00
dependabot[bot]andvhaudiquet 6955e55ac5 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.2040 to release-v0.24.2075.
- [Commits](https://github.com/hotio/jackett/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:11:08 +02:00
dependabot[bot]andvhaudiquet 6f1d0375a6 build(deps): bump mongo in /docker/production/buildpath
Bumps mongo from 8.2.3 to 8.2.11.

---
updated-dependencies:
- dependency-name: mongo
  dependency-version: 8.2.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:10:43 +02:00
dependabot[bot]andvhaudiquet 77473c34ec build(deps): bump n8nio/n8n from 2.25.6 to 2.26.4 in /docker/home/n8n
Bumps n8nio/n8n from 2.25.6 to 2.26.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-21 01:10:31 +02:00
vhaudiquet ea680f6363 fix: remove trailing newline from Cloudflare API token 2026-06-16 12:24:35 +02:00
vhaudiquet 4774208668 feat(caddy): use cert-manager for TLS certificates
- Add Certificate CRDs for vhaudiquet.fr, wildcard, and buildpath.win
- Keep semery.fr certs in certificates-secret.yaml (manual until OVH API)
- Update Caddyfile to use new TLS certificate paths (tls.crt/tls.key)
- Update values.yaml to mount cert-manager secrets for Cloudflare domains
- Mount semery.fr certs from caddy-certificates secret with item mappings

Certificates for Cloudflare domains will be auto-renewed by cert-manager.
2026-06-16 12:08:07 +02:00
vhaudiquet 86023b3721 fix: correct kustomizeconfig nameReference for cert-manager values secret
The Secret is generated with a hash suffix by secretGenerator, so the
nameReference needs to update HelmRelease to point to the generated name.
2026-06-16 11:42:32 +02:00
vhaudiquet 23840b5948 fix: add CiliumLoadBalancerIPPool to Flux deployment 2026-06-16 11:24:09 +02:00
vhaudiquet 3dfc7badb4 fix: add required prune field to Flux Kustomizations 2026-06-16 11:14:31 +02:00
vhaudiquet 8c91323d32 feat: validate kustomize build in pre-commit 2026-06-16 11:10:26 +02:00
vhaudiquet 852ff844c4 fix: resolve cert-manager CRD dependency for cluster redeployability
- Add root kustomization.yaml to explicitly list included paths
- Exclude cert-manager and cert-manager-issuer from root kustomization
- Add Flux Kustomizations in system/flux/ to manage deployment order
- cert-manager Flux Kustomization includes health checks for CRDs
- cert-manager-issuer depends on cert-manager being ready
2026-06-16 11:06:05 +02:00
vhaudiquet a03bbee9e2 fix: remove OVH secret reference from cert-manager kustomization 2026-06-16 10:26:13 +02:00
vhaudiquet e9ab217466 cert-manager: add cert-manager for automatic certificate renewal
Add cert-manager with DNS-01 challenge support:
- Cloudflare (vhaudiquet.fr, buildpath.win)
2026-06-16 10:15:53 +02:00
vhaudiquet 68d024de92 build(deps): bump buildpath 2026-06-15 18:03:13 +02:00
dependabot[bot]andvhaudiquet 523317211d build(deps): bump library/redis in /docker/personal/gramps
Bumps library/redis from 8.6.3-alpine to 8.8.0-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:37:36 +02:00
dependabot[bot]andvhaudiquet 0705a24466 build(deps): bump couchdb in /docker/tools/obsidian-livesync
Bumps couchdb from 3.5.1 to 3.5.2.

---
updated-dependencies:
- dependency-name: couchdb
  dependency-version: 3.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:37:15 +02:00
dependabot[bot]andvhaudiquet ee5ce0a475 build(deps): bump gramps-project/grampsweb in /docker/personal/gramps
Bumps [gramps-project/grampsweb](https://github.com/gramps-project/gramps-web) from 26.5.3 to 26.6.0.
- [Release notes](https://github.com/gramps-project/gramps-web/releases)
- [Commits](https://github.com/gramps-project/gramps-web/compare/v26.5.3...v26.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:37:02 +02:00
dependabot[bot]andvhaudiquet 13a675e147 build(deps): bump esphome/esphome in /docker/home/esphome
Bumps [esphome/esphome](https://github.com/esphome/esphome) from 2026.5.1 to 2026.5.3.
- [Release notes](https://github.com/esphome/esphome/releases)
- [Commits](https://github.com/esphome/esphome/compare/2026.5.1...2026.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:36:50 +02:00
dependabot[bot]andvhaudiquet 74e7f4f972 build(deps): bump n8nio/n8n from 2.21.2 to 2.25.6 in /docker/home/n8n
Bumps n8nio/n8n from 2.21.2 to 2.25.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:34:23 +02:00
dependabot[bot]andvhaudiquet f88eb9904c build(deps): bump koenkk/zigbee2mqtt in /docker/home/zigbee2mqtt
Bumps koenkk/zigbee2mqtt from 2.9.2 to 2.12.0.

---
updated-dependencies:
- dependency-name: koenkk/zigbee2mqtt
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:34:13 +02:00
dependabot[bot]andvhaudiquet 72d9b24e85 build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.6 to v0.16.8.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:34:03 +02:00
dependabot[bot]andvhaudiquet d7a528e510 build(deps): bump shaneisrael/fireshare in /docker/personal/fireshare
Bumps shaneisrael/fireshare from 1.6.12-lite to 1.6.16-lite.

---
updated-dependencies:
- dependency-name: shaneisrael/fireshare
  dependency-version: 1.6.16-lite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:33:53 +02:00
dependabot[bot]andvhaudiquet 49be0ef379 build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.1954 to release-v0.24.2040.
- [Commits](https://github.com/hotio/jackett/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:33:44 +02:00
dependabot[bot]andvhaudiquet ceee6aabc4 build(deps): bump jellyfin/jellyfin
Bumps jellyfin/jellyfin from 2026052506 to 2026060919.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:33:36 +02:00
dependabot[bot]andvhaudiquet 1d5069e7d3 build(deps): bump deluan/navidrome
Bumps deluan/navidrome from 0.61.2 to 0.62.0.

---
updated-dependencies:
- dependency-name: deluan/navidrome
  dependency-version: 0.62.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 16:33:28 +02:00
vhaudiquet 0c37889831 fix(gitea): increase postgresql liveness probe tolerance for slow NFS I/O 2026-06-05 22:21:52 +02:00
vhaudiquet 011c05e745 fix(authentik): increase postgresql liveness probe tolerance for slow NFS I/O 2026-06-05 22:13:59 +02:00
vhaudiquet 125afb9e43 fix(caddy): use FQDN trailing dot to avoid .lan search domain timeout 2026-06-05 22:11:41 +02:00
vhaudiquet 94814a2e4a gitea: update git path to fast_app_data 2026-06-05 22:03:48 +02:00
vhaudiquet 65a9b26dec fix(blocky): remove all in-addr.arpa conditional rules to break PTR loop 2026-06-05 18:01:35 +02:00
vhaudiquet 5ba85841c6 blocky: tryfix dns flooding issue 2026-06-05 17:19:07 +02:00
vhaudiquet 5bf347e31d mosquitto: bump down to 2.0.22 2026-06-05 12:00:36 +02:00
vhaudiquet 41e1450dd9 mosquitto: bump to non-alpine version 2026-06-05 11:56:50 +02:00
vhaudiquet e184f159dc mosquitto: version-pin mosquitto and update to latest 2026-06-05 11:42:48 +02:00
vhaudiquet 651c8019c2 updated readme 2026-06-02 21:06:35 +02:00
dependabot[bot]andvhaudiquet 9be164c51f build(deps): bump tomsquest/docker-radicale in /docker/personal/radicale
Bumps tomsquest/docker-radicale from 3.7.2.0 to 3.7.3.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:49:08 +02:00
dependabot[bot]andvhaudiquet f027526187 build(deps): bump esphome/esphome in /docker/home/esphome
Bumps [esphome/esphome](https://github.com/esphome/esphome) from 2026.4.5 to 2026.5.1.
- [Release notes](https://github.com/esphome/esphome/releases)
- [Commits](https://github.com/esphome/esphome/compare/2026.4.5...2026.5.1)

---
updated-dependencies:
- dependency-name: esphome/esphome
  dependency-version: 2026.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:49:01 +02:00
dependabot[bot]andvhaudiquet 36c48aa6ec build(deps): bump stalwartlabs/stalwart
Bumps stalwartlabs/stalwart from v0.16.5 to v0.16.6.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:52 +02:00
dependabot[bot]andvhaudiquet 76439275e7 build(deps): bump roundcube/roundcubemail
Bumps roundcube/roundcubemail from 1.6.15-apache to 1.7.1-apache.

---
updated-dependencies:
- dependency-name: roundcube/roundcubemail
  dependency-version: 1.7.1-apache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:44 +02:00
dependabot[bot]andvhaudiquet 76f115a4b0 build(deps): bump shaneisrael/fireshare in /docker/personal/fireshare
Bumps shaneisrael/fireshare from 1.6.10-lite to 1.6.12-lite.

---
updated-dependencies:
- dependency-name: shaneisrael/fireshare
  dependency-version: 1.6.12-lite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:36 +02:00
dependabot[bot]andvhaudiquet b8f37ef023 build(deps): bump gramps-project/grampsweb in /docker/personal/gramps
Bumps [gramps-project/grampsweb](https://github.com/gramps-project/gramps-web) from 26.5.1 to 26.5.3.
- [Release notes](https://github.com/gramps-project/gramps-web/releases)
- [Commits](https://github.com/gramps-project/gramps-web/compare/v26.5.1...v26.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:29 +02:00
dependabot[bot]andvhaudiquet 81c1ead9ed build(deps): bump hotio/jackett
Bumps [hotio/jackett](https://github.com/hotio/jackett) from release-v0.24.1846 to release-v0.24.1954.
- [Commits](https://github.com/hotio/jackett/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:20 +02:00
dependabot[bot]andvhaudiquet d7c0da246d build(deps): bump jellyfin/jellyfin
Bumps jellyfin/jellyfin from 2026051106 to 2026052506.

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-02 10:48:12 +02:00
40 changed files with 590 additions and 128 deletions
+1
View File
@@ -54,6 +54,7 @@ updates:
- "/kubernetes/production/vhaudiquet-fr" - "/kubernetes/production/vhaudiquet-fr"
- "/kubernetes/system/blocky" - "/kubernetes/system/blocky"
- "/kubernetes/system/caddy" - "/kubernetes/system/caddy"
- "/kubernetes/system/cert-manager"
- "/kubernetes/system/coredns" - "/kubernetes/system/coredns"
- "/kubernetes/system/csi-driver-nfs" - "/kubernetes/system/csi-driver-nfs"
- "/kubernetes/system/external-dns" - "/kubernetes/system/external-dns"
+5
View File
@@ -16,3 +16,8 @@ repos:
entry: generate-docker-swarmcd.sh entry: generate-docker-swarmcd.sh
language: script language: script
pass_filenames: false pass_filenames: false
- id: validate-kustomize
name: validate kustomize build
entry: bash -c 'kubectl kustomize kubernetes/ > /dev/null'
language: system
pass_filenames: false
+8 -8
View File
@@ -7,17 +7,17 @@ Personal home production environment mono-repo
### Hardware and operating systems ### Hardware and operating systems
<img align="left" width="100" src="https://vhaudiquet.fr/public/github_assets/homeprod/p330_sff.png"/> #### Dell R740
#### Lenovo ThinkStation P330 SFF
Specifications : Specifications :
``` ```
Intel Xeon E-2134 @ 3.50GHz (4 cores, 8 threads) 2* Intel Xeon Gold 6138 @ 2GHz (20 cores, 40 threads)
64 GiB DDR4 ECC RAM 144 GiB DDR4 ECC RAM
1 TiB nVME SSD 2* 2 TiB SAS SSD (mirror)
Intel X520-DA2 SFP+ 10Gbps network card 10Gbps 4* RJ45 network card
nVIDIA Quadro P620 graphics card H730P, 16* SFF 2.5 drive bays
SAS9300-8E external SAS card
NVIDIA RTX 3060 12G graphics card
``` ```
Running as single-node Proxmox Running as single-node Proxmox
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
esphome: esphome:
image: ghcr.io/esphome/esphome:2026.4.5 image: ghcr.io/esphome/esphome:2026.6.2
ports: ports:
- "6052" - "6052"
networks: networks:
@@ -1,6 +1,6 @@
services: services:
mosquitto: mosquitto:
image: eclipse-mosquitto image: eclipse-mosquitto:2.0.22
container_name: mosquitto container_name: mosquitto
restart: unless-stopped restart: unless-stopped
ports: ports:
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
n8n: n8n:
image: docker.n8n.io/n8nio/n8n:2.21.2 image: docker.n8n.io/n8nio/n8n:2.26.4
environment: environment:
- TZ=Europe/Paris - TZ=Europe/Paris
- N8N_SECURE_COOKIE=false - N8N_SECURE_COOKIE=false
+1 -1
View File
@@ -2,7 +2,7 @@ services:
zigbee2mqtt: zigbee2mqtt:
container_name: zigbee2mqtt container_name: zigbee2mqtt
restart: unless-stopped restart: unless-stopped
image: koenkk/zigbee2mqtt:2.9.2 image: koenkk/zigbee2mqtt:2.12.0
networks: networks:
- default - default
- proxy - proxy
@@ -1,6 +1,6 @@
services: services:
roundcube: roundcube:
image: roundcube/roundcubemail:1.6.15-apache image: roundcube/roundcubemail:1.7.1-apache
container_name: roundcube container_name: roundcube
networks: networks:
- default - default
@@ -1,6 +1,6 @@
services: services:
stalwart: stalwart:
image: stalwartlabs/stalwart:v0.16.5 image: stalwartlabs/stalwart:v0.16.10
container_name: stalwart container_name: stalwart
networks: networks:
- default - default
+1 -1
View File
@@ -1,7 +1,7 @@
services: services:
fireshare: fireshare:
container_name: fireshare container_name: fireshare
image: shaneisrael/fireshare:1.6.10-lite image: shaneisrael/fireshare:1.7.1-lite
ports: ports:
- "80" - "80"
volumes: volumes:
+3 -3
View File
@@ -1,7 +1,7 @@
services: services:
grampsweb: grampsweb:
container_name: grampsweb container_name: grampsweb
image: ghcr.io/gramps-project/grampsweb:26.5.1 image: ghcr.io/gramps-project/grampsweb:26.6.2
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.5.1 image: ghcr.io/gramps-project/grampsweb:26.6.2
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.3-alpine image: docker.io/library/redis:8.8.0-alpine
container_name: grampsweb_redis container_name: grampsweb_redis
restart: always restart: always
@@ -1,7 +1,7 @@
services: services:
jackett: jackett:
container_name: jackett container_name: jackett
image: ghcr.io/hotio/jackett:release-v0.24.1846 image: ghcr.io/hotio/jackett:release-v0.24.2110
ports: ports:
- "9117" - "9117"
networks: networks:
@@ -1,6 +1,6 @@
services: services:
jellyfin: jellyfin:
image: jellyfin/jellyfin:2026051106 image: jellyfin/jellyfin:2026062206
container_name: jellyfin container_name: jellyfin
networks: networks:
- default - default
@@ -1,7 +1,7 @@
services: services:
radarr: radarr:
container_name: radarr container_name: radarr
image: ghcr.io/hotio/radarr:release-6.1.1.10360 image: ghcr.io/hotio/radarr:release-6.2.1.10461
ports: ports:
- "7878" - "7878"
networks: networks:
@@ -1,6 +1,6 @@
services: services:
navidrome: navidrome:
image: deluan/navidrome:0.61.2 image: deluan/navidrome:0.62.0
user: 1000:1000 # should be owner of volumes user: 1000:1000 # should be owner of volumes
ports: ports:
- "4533" - "4533"
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
radicale: radicale:
image: tomsquest/docker-radicale:3.7.2.0 image: tomsquest/docker-radicale:3.7.5.0
container_name: radicale container_name: radicale
ports: ports:
- 5232 - 5232
+1 -1
View File
@@ -9,7 +9,7 @@ services:
web_recipes: web_recipes:
restart: always restart: always
image: vabene1111/recipes:2.6.9 image: vabene1111/recipes:2.6.11
networks: networks:
- default - default
- proxy - proxy
+10 -3
View File
@@ -1,16 +1,23 @@
services: services:
mongo: mongo:
hostname: mongo hostname: mongo
image: mongo:8.2.3 image: mongo:8.2.11
restart: always restart: always
user: root:root user: root:root
command: mongod --wiredTigerCacheSizeGB 2
deploy:
resources:
limits:
memory: 6G
reservations:
memory: 3G
volumes: volumes:
- bpmongo_data:/data/db:Z - bpmongo_data:/data/db:Z
- bpmongo_config:/data/configdb:Z - bpmongo_config:/data/configdb:Z
env_file: .env env_file: .env
match_collector: match_collector:
image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:0224b7812c8631bde3e9513adace64341152fc20 image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:d878af6d1a5cb633175515259e27a12c76c4609b
build: ./match_collector build: ./match_collector
volumes: volumes:
- bpcdragon_cache:/cdragon - bpcdragon_cache:/cdragon
@@ -23,7 +30,7 @@ services:
env_file: .env env_file: .env
frontend: frontend:
image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:0224b7812c8631bde3e9513adace64341152fc20 image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:d878af6d1a5cb633175515259e27a12c76c4609b
build: ./frontend build: ./frontend
restart: always restart: always
volumes: volumes:
@@ -1,6 +1,6 @@
services: services:
couchdb: couchdb:
image: couchdb:3.5.1 image: couchdb:3.5.2
container_name: couchdb container_name: couchdb
env_file: .env env_file: .env
volumes: volumes:
+68 -24
View File
@@ -10,19 +10,53 @@ ingress:
# Disable HA, we are on a 1-node cluster # Disable HA, we are on a 1-node cluster
redis-cluster: redis-cluster:
enabled: false enabled: false
redis: # Valkey cluster is the new default in chart 12.x - must be explicitly disabled
valkey-cluster:
enabled: false
# Use standalone Valkey (replaces 'redis' in chart 12.x)
valkey:
enabled: true enabled: true
master:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
postgresql: postgresql:
enabled: true enabled: true
global: global:
postgresql: postgresql:
auth: auth:
postgressPassword: ENC[AES256_GCM,data:kkMxHQT7J60iuQ==,iv:JvI007ZVrIIHmfuGAdmuRKAaRh8gCtiq6qM8Yp2IWkc=,tag:Jyba7SzI1xfi9TNkXynxnA==,type:str] postgressPassword: ENC[AES256_GCM,data:5SoftEfh4w8hmA==,iv:QbbOmVM3Jp3gxAxL1OvnB6WKFX+OTHFENz1roMnPqyc=,tag:Gtn7H7d3O7Hweg5q6P6xUg==,type:str]
password: ENC[AES256_GCM,data:CRCV1V3w7Moy3Q==,iv:E+FS5bJciWJoF94xpC/L1laNmSLWrV0iZVNByr9H/5w=,tag:vCDiIy96vPnlE9sQVUzygA==,type:str] password: ENC[AES256_GCM,data:0BMgFdvPvhB9oQ==,iv:Z0mkQBfhpc7y1nSLY6MOucxwuKZ8TfOk6NlQE9RwVQw=,tag:yGDAOH6TCJDCfhxNlC/eCg==,type:str]
database: gitea database: gitea
username: ENC[AES256_GCM,data:Dw/EEMs=,iv:HnuuzrPguaH4holONrijhhyysqcSsU/G2yQr8xdC7/c=,tag:L2/QifAkDlJTQE71EV/awA==,type:str] username: ENC[AES256_GCM,data:F7+91aE=,iv:tEGgJ6GoXVkNoD6D4ZnyClrOQLGlqzFIUqqwDrVjd9U=,tag:H1+f/EKf/KptooRf8g0qcQ==,type:str]
volumePermissions: volumePermissions:
enabled: true enabled: true
primary:
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 1000m
memory: 1Gi
livenessProbe:
enabled: true
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 10
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 6
postgresql-ha: postgresql-ha:
enabled: false enabled: false
persistence: persistence:
@@ -32,7 +66,7 @@ extraVolumes:
- name: git - name: git
nfs: nfs:
server: truenas.lan server: truenas.lan
path: /mnt/main_storage/git path: /mnt/fast_app_data/git
extraContainerVolumeMounts: extraContainerVolumeMounts:
- name: git - name: git
mountPath: /git mountPath: /git
@@ -41,8 +75,8 @@ gitea:
oauth: oauth:
- name: Authentik - name: Authentik
provider: openidConnect provider: openidConnect
key: ENC[AES256_GCM,data:sWas2xxSbKqNVYlYDtwiiIdn8HXZoStZPeFkwl1nr1AlejB30i1HUw==,iv:NFcwnDIpFG+Kjr3kzeyKHEcXjxRLCiAkhFdP+fp1RiU=,tag:C31RLpMZkT6KBCJiTD0jjA==,type:str] key: ENC[AES256_GCM,data:oq+UsuiNEGWphxXbwtbBs3d27bB2cVPoR617TWhcPOk67D7XWUPkmg==,iv:hODOA45FFex/b5ghHScnDoc5osu1d8bzD969oFVH3wE=,tag:67TMl55I6zgJWNGMqco6fg==,type:str]
secret: ENC[AES256_GCM,data:CxPg3Dm/TH9q30Hm0uMZjxVeCkxDlb4QZLHKT21s53DBdrd4MbjwXFdYd9hXQ07Gp5XqR3caHukzKXRszcksoGXuXZtlDUv4/p0PGeWFnJBVBwy9BEzvpeK0VEyypk4pfcvxekMTOsdvHDVty9AFTRIBTk2UTHvvz62CbVLFaUk=,iv:KmzhXgEHBPzO8E3xWBLJiVGKmCZm0rTtpLEEMJRIpWU=,tag:fdiWV6+IbgSEgFdpBQFCKw==,type:str] secret: ENC[AES256_GCM,data:o9BZSzy61ouycNgtgRg/Jn8Wz+hLBBqgX46iHbaYtPbUVPVFc9tpdCsTdHCpfSGfiS1B8kWcoSzIDIAIIofRSCS/QqEQeuTwsyakkXhgn/LtLn+TH7bdLLS8qqusy5MZ9U18IJ/UBPGZ5+16Y/glbhpfHu9NNv0AI07nPciTq1w=,iv:7dn7eW2oEK/EU4xIETwVSekZUmktrs7U9KTJC486nHs=,tag:Otl2KuySu9bI/cZfCyjiKA==,type:str]
autoDiscoverUrl: https://authentik.vhaudiquet.fr/application/o/gitea/.well-known/openid-configuration autoDiscoverUrl: https://authentik.vhaudiquet.fr/application/o/gitea/.well-known/openid-configuration
config: config:
APP_NAME: Gitea APP_NAME: Gitea
@@ -68,28 +102,38 @@ gitea:
indexer: indexer:
ISSUE_INDEXER_TYPE: bleve ISSUE_INDEXER_TYPE: bleve
REPO_INDEXER_ENABLED: true REPO_INDEXER_ENABLED: true
# Resource limits for Gitea container
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
# Increase replica count is not useful for 1-node cluster
replicaCount: 1
sops: sops:
lastmodified: "2026-05-28T15:35:45Z" lastmodified: "2026-06-27T10:20:08Z"
mac: ENC[AES256_GCM,data:5SokbHdILE0TuEC72R5ELHaTM7ZicBM3iYtFUD+lo7iMPXjiXSaCtq0k++uWvadD9dpBWkahWhdtoowP2V19fOfn63EnTEoo6FEIWq/7r78wDYuC+OGlTAfeBd4iwftuSdnlSEMzl4nplC0W3b0ozmfGkx+HyEB7AxlJy8A9y8g=,iv:Yw4R7eNlvF2wpppHw0CACl3BVdfgf7tM/ou5Ylw+3+A=,tag:E1szos8kGUaAakmgTCiz1A==,type:str] mac: ENC[AES256_GCM,data:VZY4oK2PCMBJd4VozL5qS7jlZtOu1JNsOn7aqJgPZ8uQR7kG939By7oVELMH9us0Sb8AZIYmzx7nLwnlp6IUNnacOffhKNl4stTFrb5Vry/5zem0CNp08eEDEt9VoxNudfQYC2axuGSwbAIahMzZsOYVRqOGgF1gEG17+hgd7ww=,iv:MiHKGUfzaSAppXLLxJSQD5loGkToFLzVQetWoRHq074=,tag:FduCPbHmy6A0mYdCrnRxDw==,type:str]
pgp: pgp:
- created_at: "2026-05-28T15:35:43Z" - created_at: "2026-06-27T10:20:08Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiAQ/9FLxfMYXeLbLSoIJCwNnJWZrsTisWs1anGACDwRtvDfVP hQIMA7uy4qQr71wiAQ//VDYGwZupOfefdEtJkD9SPOW3tHcOy2XR6ULhVQjXTGGh
7EQGFJYOUkmEJU4RTaMHSbNSvIhdi9L3mkHTB1jL9hGoNsJJCkIBTXuihsRNyIOr APuONtgUZKFCViUqYZB7l6fazM8U/fv3cHsIpZfALFGE9wSZ+4So6D5dmBj13egh
UFVsNOtMU7juHe73F7MtFUQbAHHVzaN0PK9ufmInYOHR0+9lJF6J708QaGIWVEg0 yznV55xjinoaKPzaYYZoVmlt1ZO22SxmC0vld3yfAs89KD1Aow5wNZGTBELzyAWF
zhnm5mjvha3jdd3Cr+vwSKyvyV4Lp8JA24c3LsaZlhlnHqBmTYUAYTRIszDJhmsA gMYGMkCsLlH3gqBaJTV1m5LKHHQAtoyzvJbKcpiynNRySfN/ogNX67GmgEMH9+u8
CGOtW9d+XKswdeChnouF4oJJ1tXzut0F4d1uSFrAL3VEzq6xbYE7jRCxeFIbbww1 UexPwUHL6skIzHLmugYcrs4FAABot4WzoJsR794wOq/DEqHBE4SfQg48y/DROu2O
WtiHkoAruhieV/1i95WptLG1iE0Yh08NIyqgHvFwRDn+uBy2IaDKPN+Ws7FKRve7 mgo6KqiXXe8qPGCIvjLiudb7MdSLpoLqgZ0vpExzdS/wMXAXczodrRRJmzEQyeDE
wkyLGgW8gue3fkO0Mf7tyT6ce3QSS07eCGY1BV7sV+a+ph99nrT9zilapnI8S58V j08pquhfUzQ1SA/9VRQkgl4r0dj0CTuc+EhvHD4M9nj3JIjvuJ0AdyKye5S8rdNM
3+p6jfOsCBrDp5Kgz3bPDRp4piZ3k4zWakS6ku7gZn7OUwQe79CX9XFOPSLaSMm4 rm9eyX8V+o6X811qUM8bobKEi36tdnSMiB1yVHTtdW7hKctQwRMNQ8A9QEtOxS2F
8AXZz1P8H4JR1CJH0kIpfJMyfzsVuugYhXPsRN7Y1eGIZfcUbpiVlT+oUUgTtmp7 +9Owub4LXZwBejSLgh9jaKEnilJQKVYN5Aw2lNAmZZZKtJ+iGHHkq9H6k+k5oEoG
VNcvIbH4GMskzxOSEbMZy+Gq0nxAfd3OwBYtbXHTsh3ww5Tqavm2DTAriBrLjFLf xkQ/IYIEGLhfjH0PDZ9m2G3Ren3EkEkNjYvhwENhuUcyuW5Abl62v9FMY8c9NYyK
fNV/BlLhzGHdaw+Oe4o7AKHtpQTy7UIZHqI9nC9weN6hmbaAGOPYgir5pIwhCCrS +uf5VS1ceHOBcelQcdSx9Kuox5UuyUtbwUcv+HbTmymZtmYdw+dnOTtRHR5CNY7S
XgEWijY36VlqM41ecYHCfsmWmG5OPVAL/2iwzeBIfWViYn5Lb4/5j2Yh3TnJKk3N XgEvPWAEagJpsmqC2n7Vc9d7b7TVp+SLSiL/w0v9JD6ko54Rwj0x21Odx3FLe7P6
y5hMEwbS8AvMinYeXrHYchOMjn63xQ2dA/4bBtzg7p3rkMYsdXU93Eey+SkqnX4= obKU6XNNX9PPThJw2W0E295i2+DmOTH0AFio3rsg5wM3JFUokY/t8590sWnFR8g=
=fPDh =Gypa
-----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)$
+36 -22
View File
@@ -1,14 +1,14 @@
authentik: authentik:
secret_key: ENC[AES256_GCM,data:nS0n+g3riD47shHDhs8JzfHT+a8oOKvFJDvO72mUU3bVslFYRBueJK+rWCGYjXwwyZzUjAcb638sqA66THxaxebPLtZ/UCmT79qzOw7Rf3A=,iv:o9WztN8vb8Pag8WMKIEWDMgFVWiTB3dIjCx7nU/0hrc=,tag:6tx684P4cJSZrrmut7KVcA==,type:str] secret_key: ENC[AES256_GCM,data:wnDvn9EdX2SYDoWn9tTrbKvBx11fGfGlTk+9MSz8cBzwMDaY5W1bCwjtH7TmAnwYhbUQxXdVIxgPpj7k0FVqM5fuMHZwcb2AgtDMGbxRXtM=,iv:jwUq7dbl+V1t+Ek7vyBEfwX1B/fVmE0TIFMVGj40kVI=,tag:G1bDdR9OUqOtZQmvUcAfRA==,type:str]
postgresql: postgresql:
password: ENC[AES256_GCM,data:ES3BL3tEiv+NSg==,iv:oOKiH38wi5zqKkgvezIgj5Qg8+1bcFZXpoEewMucygM=,tag:YigQ3X8pRXVqhkoycGNjbA==,type:str] password: ENC[AES256_GCM,data:G0KPHz7zZ5ivtA==,iv:w4m21LqGEtvEGAp7NlsoV9bwRkE/Mga4Nxp5mqBIJHs=,tag:kKHC3yXqJKZX9jiYuYXt9Q==,type:str]
email: email:
from: webbot@vhaudiquet.fr from: webbot@vhaudiquet.fr
host: mail.vhaudiquet.fr host: mail.vhaudiquet.fr
port: 587 port: 587
username: ENC[AES256_GCM,data:EmE524Yp3Ihv+FnO3GfTilzLwGo=,iv:XzJW6v4owBETgLHfqvvELhkDLQJSH962eEByQF0zeSQ=,tag:rkvVWCX3JwNO+j9MIB/+LQ==,type:str] username: ENC[AES256_GCM,data:s0L1fCp8aObv5j6jlBiGDfj0aIM=,iv:cbvXxI3DIjnhnfHmUpeDF5KKRxUC2+YdvwU5FPcEe0s=,tag:rR8HpXUEabNZ36xabVkSIA==,type:str]
use_tls: true use_tls: true
password: ENC[AES256_GCM,data:b6joibJRT46C+XeH2eI=,iv:Lo+28oE5mv3uxI8CUAQ1OgNhN+3iv1JfdxvkZWZC05c=,tag:VAIrnXSg9w82N00oT+d8JA==,type:str] password: ENC[AES256_GCM,data:rb6o5MGQWK7LIT7gass=,iv:NjI0iqRk2usrqcH6kSo72T337y6avHz5whg9bLfAYDA=,tag:DnRJaixjmNY31V1h9Et5PA==,type:str]
postgresql: postgresql:
enabled: true enabled: true
volumePermissions: volumePermissions:
@@ -17,12 +17,26 @@ postgresql:
repository: bitnamilegacy/os-shell repository: bitnamilegacy/os-shell
tag: 12-debian-12-r51 tag: 12-debian-12-r51
auth: auth:
password: ENC[AES256_GCM,data:NWk6kvOp1RRs4A==,iv:q0GoRFQ15LBXDxDnOiKWHX6/K8DwX+k2Myxk7iaBo2U=,tag:6qfY+5TF2oy4cRfeJKr7IA==,type:str] password: ENC[AES256_GCM,data:9PI//cgxRlmjNw==,iv:q0SLpmaTIC3OUulPDxiDWie0+oI7w17V2fPmJ52o8ao=,tag:2lwG95Remzqt1dj8H4CG0w==,type:str]
image: image:
repository: bitnamilegacy/postgresql repository: bitnamilegacy/postgresql
tag: 15.9.0 tag: 15.9.0
primary: primary:
args: [] args: []
livenessProbe:
enabled: true
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 10
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 6
redis: redis:
enabled: true enabled: true
server: server:
@@ -31,27 +45,27 @@ server:
hosts: hosts:
- authentik.vhaudiquet.fr - authentik.vhaudiquet.fr
sops: sops:
lastmodified: "2025-12-05T21:18:24Z" lastmodified: "2026-06-05T20:13:55Z"
mac: ENC[AES256_GCM,data:DpKXYMtn+01IVQ98t/oVG4bqRVBBSQojqKGmt1A0vco8EJKNtHxyykVuuouO4mhmx+UWKjxEg+KvgvV2Ptk4uGs64x2sCSnMuqnpwfd8xpxLukqVxVd60ICKFeeVt4MgwRrlOBO2WKMDoZE5pi7pxVoGDb86P2J4XHzWqVkGGX8=,iv:W1OZznwbmlZJzICIuEVszGwFGFOgPLiThX4uxVpaOiw=,tag:s1HhjGwGt/mkWMhsqmXjZw==,type:str] mac: ENC[AES256_GCM,data:rtrnY4XXaovFr/oXuZWJQa17Ihlgb9W7WMKYeN10qqx8REf6a3zqlUUGGSndYhjAZwpUjo3qixqAjW6kItBDgeF3DLpQ2T6acyOgXmbYNN+dWK4zb7jE0yZz69XIkUirabBWTkLqDACvw3iW5x4EAjg6/VYRVt4g5eugET5F/IU=,iv:eM+Z4SEJ6/y6gHzlYjLxcbqRn4dP4gbkaQqN2EGL4BY=,tag:EXklnS8lNeQErKcdP0XD6Q==,type:str]
pgp: pgp:
- created_at: "2025-12-05T21:18:24Z" - created_at: "2026-06-05T20:13:55Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiAQ//ZrmaLqypfT4HvrAO8tV/I8tl3PDZgLot0pQyv3Idu3s3 hQIMA7uy4qQr71wiARAAsreeLsc0Qhc/RDFP3GmusT0PCFq0XTnin9THWE+7YC/5
0e+Pn7zGBUvZXNYfgd20ilCatPVzt4x2KvFgaAkEMkqHnE2btLSrN66QiwHZDxF5 +kPcfKfyQGQGImzkl6niBxzl4jjxiyOyhdDWzwFw34Ets+1wXLlur9mo0v8GLfZG
1G+TNWs6ZOUSpUn7P1UdfroSm/Gy5sdUc8cTuolOkLqq0r88Wh3+RkxoR9Nv4f4p DEO+1VEzFheZzjM6pVNOWCJdGKR8WEuadjmMMCsux463JiEPtatRJgcAim3ux6uV
XDDNRo4al8t0QT+WHKlGwaD/58Vgu0CRzBsjZodZWrG+4VgzxHK+3rqPGY7s0Mpy TbtDNNF9yc9yp7GN8p0/kF3tnD40zaszM8+UznrWbDIFJOrixyVTZ3O9tKcjl55S
/epq73LBFRzgVagMqjH8LBJ60jjScWHVlGjRg4TtXDyhHYizEvlWt63sbWeYBLwC m5upCrrbc4rcp+uRiYrsiMZoEg3KvlqtxUw9mHoeVce83l7bziobixzBhnGRtAar
Uz0QHR3jWZoErbb71JpEhHa5P+QuUaZTeEq/groWsD1I7cceDC9EorhbcyWm7SNa zYUKsuu5PPpljV+ghDSIkcTrwLGQnInhlbOxKwDNVb0LiL/1c6dP4zPfZNh+Nvne
swTx23zjfdM/Hqi5Wz9UeTN8CkdSpb1mbG9YTvhB510wcpdVPTJNM1hVF+9OJycu XhUDx90WnGCFOI2t5tXelAymCBDgak2qCX4IxkxddBhL9lONwYIM8zmszjPQf7r1
RP6YH6dXuWNK7aSx62ppaz+UJb27tF+KXafO4yDIu5hY1vaeFSgCUgJTpYae4tS1 Gx4vFrUTqceEXI+JLiPog4/+gGHX1qzifdHBZR0ZtTi/XJfnhdH3fkJndLA65Pkg
pWBLR51FikImgkkEFjzDwAWGBwfYzvqWqGOjO6E2yaVRTSYYdZQbTj8Owq49zizT K4vY6KfomQLEmHurMVzEkoeXH95qSWmfmai4SJmKWqm33VFPZRFoVonnx4dP27SM
A4eZpPEeq+Z1FmQ7kjV7+tAV/GTDrSyvtytQ+fgebhVf+0KrcNUzQDEsQfV1htNl vZGmfgjOl5eeRk/jdrApJNTkCi/dkGUfNRDffwcYQgjCJaWOs1agchBSC/RLZVWN
mnR590NnBp83jlHVAFYUwaCEzcrfRrfGzrlacUVuOO2c4orSeRI2FOro+2AOjvzS 3FPmohgmGa/MBOX3qS1r/5G3XBdKuUxd/NJ2Bw8L0wodteGSEClEiMEXGGZLkOzS
XgGkpLEkrINUIuI27G838z9/9cFUqMqL6MTThuJjUmKphgLAZ1iqhyfEm/2kwXZz XAFSk/qmO3tJGViwOVtnb0ZXyTRritW9uR13N+LcaKJhC0PB/m/lXR6IlrfLJXnu
oJnnbBWIxN2/vltsuu/WprLHzbL5dBusLiBUeuSbPPron4r9Do2cNcFIT2hyAfA= AMD7w42wKMeBgGuQQ/Xm/iOVlS2H0kvbm1b1WEZMQUJlEleKSyQKbmQPujoi
=1NR0 =KjtC
-----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)$
+34
View File
@@ -0,0 +1,34 @@
# Root Kustomization for Flux
# Explicitly lists all components to exclude:
# - cert-manager: managed by separate Flux Kustomization (CRD dependency)
# - cert-manager-issuer: managed by separate Flux Kustomization (depends on cert-manager)
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
# System components
- system/cilium # cilium IP pool is managed here
- system/blocky
- system/caddy
- system/coredns
- system/csi-driver-nfs
- system/external-dns
- system/flux
- system/traefik
# Code
- code/gitea
- code/harbor
# Home
- home/home-assisant
- home/zigbee2mqtt
# Infrastructure
- infrastructure/authentik
# Personal
- personal/linkwarden
- personal/notesnook
- personal/photoprism
# Production
- production/umami
- production/vhaudiquet-fr
# Tools
- tools/dashy
- tools/glance
+18 -18
View File
@@ -64,29 +64,29 @@ resources:
cpu: 200m cpu: 200m
memory: 256Mi memory: 256Mi
# 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\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-26T22:01:30Z" lastmodified: "2026-06-05T16:01:30Z"
mac: ENC[AES256_GCM,data:PkXQH3Y+r4JUSRXJbNO+nQUhEvlQecvz5Jxwlb0bL3PPTi8Y8dCx9kxQAvMM9cijpcavGI04Fy0jRS07draTxlddzZ6FYqvVeu1FzQNtnVsobW/KNZ9mYIYPr9YEvybgHpdbbuO6lVjbERRrOLIFuECIpLoPX5D8+p8+43zBpAE=,iv:XJi6BsIC7wk7bqwSUFZMOwR3shYKjydvqBKNC55mmck=,tag:4C+QU5EAvUU+maw9txgGPQ==,type:str] mac: ENC[AES256_GCM,data:zcrVjYr3g0fDVMLP6T2kEDph3WbGh6nTGkqYwgfKuBOMQ/am+VxXmUJUh1YL0vvFjrwocK7hXFfJ6q/G5SNY+8GVLNeKfl+svfDEssmY9o9XOkSgmCh1MPHCUa6bP/+F1xXq0rU9umvRnjKfhC037iKkCDjEVm6KZt8v2OSvqJA=,iv:MjZtMcEuf9hwVRXGKn3BZnHXMJSeOp453J8SGyh6PTU=,tag:N1IxsGmaJr703gsQ0XjYjg==,type:str]
pgp: pgp:
- created_at: "2026-05-26T22:01:29Z" - created_at: "2026-06-05T16:01:29Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiAQ//USgWAGbn6zOOTw0agC/U0bVyWv9Ez0QTqi/TD9Yv+p1U hQIMA7uy4qQr71wiARAAikW2TqLZeBx2ERR7HF15cvCNDqCoTHwVUuTyc0qPUyoM
ksQhSFLs12LiBcH2j/fWs8KdEYJAwDqr7nZJsddz2gEVua223Z94cRiby10SvXfU Zy0X/wN3e0c4Ti0X4lUqJyICpH49sbKtygrRI4vVywr+4KgpKIwi/DTmPk358Cw2
bH4jpRsdWXj3dH9AET6N+uqiXocfDASE7G2WZalmVOQtsFi1SSVsrcAm/ODts4As 4E8DAVMcQDbpSPDgnl2DrrcPBa551MZusXs89nh3Eay4MW/gbEPpQvcuiI8tMQW8
7H224kR4/rxWaCEZ0i6S6r9n9wIZiUZGrBk80W8bK/JWBbl4zfgJ9tkzk4NMpJXh f8759mNQHGxKUhSvdbJJO13+I7e1vhJz/twWJPJlieBRQ46QQjOuGSAo6YWEH4R2
TDpaYJxV0T8/kqk/gPaECfN5Il+WgvVL95hS5FI+AxWyeHwWPd5sUgeil0dPoDOj Hkrp+7p8tWjFbJEnBlAW5lpcnqjCmoKPuOPXwi6mXpZfEssUsWE99DriCIuRM1ZQ
DlNuCyVepSqOo325JH7VoU19YRwYZwh0By//0WHOI8WIjQYUxXTAvHJyg61RLNK9 FBTroMHlwVESE58yBqxs1ZIMHxyncyj0rHfDnrOH08OpW9brTaardHZMcO2Kkil7
eqwIO6t2QZRol03MjXE7DCeoWraCG0nS+DDF0qHu8bNnhYHcBpiG8d8Lj9xpME51 uK5wTdTaNph1crLoWoiW6vuZv05OiHsuHe0miuhRakedmCcbC+dYGmBPDgo0mKYB
UL1iXSyh461jEcX+8yTImAFMn9Pvt9r+Iv2vT0ZJH8k2Fzxxli+RPL6CQY2qKY7E 0CzzSRL7MTB9LhGSxH6xrlm1hyRmVzNnYc35VPWf48S/jZi7iOOth/mRaxmi94VZ
ibPM0S7nVc8Kb7214xkniped4muzZF2vQJ8qmbcLu9sr9LV5d5Y13OF1NUdc3DTX O4XiAuwh77eXDaYoOgYaVpCicXXg2uoq3MVjl32yUeuwpDSxVfRUJz39s1rP3UMT
aRAiVErL2QJujoM5xxDC9CTu11e6TfLN9XysM31sCgDIXMb4fKjxYbJxKY99Y1+S CgFc+Yen7aUmcBYlid69Le2UR3JTGlr1LXyuXR4ju3x0k84qfGKAwjottB2snKu9
nQO2CiCUCb+hDLaWdmdSv/FY+1tKX67vrU9YeJ6XVJQhVhR+Rt30bvGkNwy34C/S twcxDzDMkjV4Maz3CmBxVglpxe6gOzOSk9BZujxogFHncRxMBo5BJO4/926iaWHS
XAHh0aE8KlrY1eCIf5RAygKgLEa1cehKvaGQMOoHWrPfOQUrA6lCvFVSxnwwduIm XgEPMREJARCGq+N+8vc7PQ1xlNEqcwL0c0PJjRVqQIAeuvF4QK9kH+P8aR0k1MXK
pJRbIgcsoLUPFffYcDdDmnvmSOfdCNm84k/CUiCtZxqgUkIX98KrZhAVXzCf WnUHF/3afdgPwpp4ZZJoxfna2AroRh2+Dns4KM7QN2oyFWPNPJuRKyAtaKewPp0=
=mAAM =DIqZ
-----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)$
+12 -12
View File
@@ -16,12 +16,12 @@ metadata:
data: data:
Caddyfile: | Caddyfile: |
vhaudiquet.fr { vhaudiquet.fr {
tls /etc/caddy/certs/vhaudiquet-fr.crt /etc/caddy/certs/vhaudiquet-fr.key tls /etc/caddy/certs/vhaudiquet-fr/tls.crt /etc/caddy/certs/vhaudiquet-fr/tls.key
reverse_proxy 10.1.2.171:80 reverse_proxy 10.1.2.171:80
} }
*.vhaudiquet.fr { *.vhaudiquet.fr {
tls /etc/caddy/certs/wildcard-vhaudiquet-fr.crt /etc/caddy/certs/wildcard-vhaudiquet-fr.key tls /etc/caddy/certs/wildcard-vhaudiquet-fr/tls.crt /etc/caddy/certs/wildcard-vhaudiquet-fr/tls.key
# Kubernetes services (via Traefik) # Kubernetes services (via Traefik)
@authentik host authentik.vhaudiquet.fr @authentik host authentik.vhaudiquet.fr
@@ -38,28 +38,28 @@ data:
@umami host umami.vhaudiquet.fr @umami host umami.vhaudiquet.fr
handle @authentik { handle @authentik {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @auth-nook { handle @auth-nook {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @nook-mg { handle @nook-mg {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @nook { handle @nook {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @sse-nook { handle @sse-nook {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @gitea { handle @gitea {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @flux-wh { handle @flux-wh {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
handle @umami { handle @umami {
reverse_proxy traefik.traefik.svc.cluster.local:80 reverse_proxy traefik.traefik.svc.cluster.local.:80
} }
# Docker VM services (via Traefik) # Docker VM services (via Traefik)
@@ -83,11 +83,11 @@ data:
} }
semery.fr { semery.fr {
tls /etc/caddy/certs/semery-fr.crt /etc/caddy/certs/semery-fr.key tls /etc/caddy/certs/semery-fr/tls.crt /etc/caddy/certs/semery-fr/tls.key
reverse_proxy 10.1.2.212:80 reverse_proxy 10.1.2.212:80
} }
buildpath.win { buildpath.win {
tls /etc/caddy/certs/buildpath-win.crt /etc/caddy/certs/buildpath-win.key tls /etc/caddy/certs/buildpath-win/tls.crt /etc/caddy/certs/buildpath-win/tls.key
reverse_proxy 10.1.2.212:80 reverse_proxy 10.1.2.212:80
} }
+52
View File
@@ -0,0 +1,52 @@
# Certificates managed by cert-manager
# These will automatically renew before expiry
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: vhaudiquet-fr
namespace: caddy
spec:
secretName: vhaudiquet-fr-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: vhaudiquet.fr
dnsNames:
- vhaudiquet.fr
duration: 2160h # 90 days
renewBefore: 360h # 15 days before expiry
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: wildcard-vhaudiquet-fr
namespace: caddy
spec:
secretName: wildcard-vhaudiquet-fr-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "*.vhaudiquet.fr"
dnsNames:
- "*.vhaudiquet.fr"
duration: 2160h # 90 days
renewBefore: 360h # 15 days before expiry
---
# semery.fr certificates are managed manually in certificates-secret.yaml
# until OVH DNS API credentials are added for DNS-01 challenges
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: buildpath-win
namespace: caddy
spec:
secretName: buildpath-win-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: buildpath.win
dnsNames:
- buildpath.win
duration: 2160h # 90 days
renewBefore: 360h # 15 days before expiry
@@ -5,6 +5,7 @@ resources:
- namespace.yaml - namespace.yaml
- repository.yaml - repository.yaml
- release.yaml - release.yaml
- certificates.yaml
- certificates-secret.yaml - certificates-secret.yaml
- caddyfile.yaml - caddyfile.yaml
secretGenerator: secretGenerator:
+63 -24
View File
@@ -31,19 +31,58 @@ securityContext: {}
health: health:
path: / path: /
port: 9999 port: 9999
# Extra volumes: certificates + external routes ConfigMap # Extra volumes: TLS certificates from cert-manager + external routes ConfigMap
volumes: volumes:
- name: certificates - name: vhaudiquet-fr-tls
secret: secret:
secretName: ENC[AES256_GCM,data:Er1F+5xhWKUT43+7jU/pwxWP,iv:Ohc3jFIQ4Enmbhd0F44SYWJiHlj1oFOrMdtM4oYKQEU=,tag:Kk8Y8aFSKMyGmY/uRVvyLw==,type:str] secretName: ENC[AES256_GCM,data:vc6kDDdxbluL/BmJb4w9TKs=,iv:FLsFMqUQWs3vzuH6fO64qikNpSx/RGneZyow8WYXlo0=,tag:TVsfs/pUmiA6mYYwHgxDLw==,type:str]
optional: ENC[AES256_GCM,data:JdlpGQ==,iv:xaoqonC9cGHXizHuAFrjhC4ZEtZ2IICeg2hxvGjyFM4=,tag:JYmlIXgIMON7z4++FrBGKQ==,type:bool] optional: ENC[AES256_GCM,data:I1ftGg==,iv:P/KwiMPHM+YYUPJ+M5GBcgZGRTrIskbCir4fQH1XUug=,tag:hbqOTv6BrmkkQ/kE3bCx+A==,type:bool]
- name: wildcard-vhaudiquet-fr-tls
secret:
secretName: ENC[AES256_GCM,data:KSaPirEmnfOHqtwNr3SoK1IsCZ6HalzH2tw=,iv:TL9/VqSq2fW+2se9GK+bopfbcHu/lgpjlD4dHLKf7s0=,tag:SKgvfnPvca9o3bXxILLX9A==,type:str]
optional: ENC[AES256_GCM,data:65Ht9Q==,iv:EM0rH3i8MVVDXXrARxL6djISin8ScCEdZ/J43WL7A0I=,tag:rOcLiIOaDAqW4C5j6Zv+tA==,type:bool]
# semery.fr certs from manual secret (until OVH DNS API is configured)
- name: semery-fr-tls
secret:
secretName: ENC[AES256_GCM,data:kDiP6Hg4nLMM4FY6/C21YnFn,iv:bFgsIMkgHfSy8ZsK3NLc9cZ/5TRV3B2WzWkCFBGl5uc=,tag:atz2qInNTSX3u9b5N4fPnQ==,type:str]
optional: ENC[AES256_GCM,data:vfjgpQ==,iv:XZBZyekKMQQzrFE05vG2w6Pwd2ZQ+RerjF/T8FKbuc4=,tag:SVRfxbOLG7z8fWyxclrvzQ==,type:bool]
items:
- key: ENC[AES256_GCM,data:UumzQqzt/iy7oS7P+Q==,iv:3zV2rTEpHclFVRYRACzrs4+IXLOIw8HMSgWLyQ6fLp0=,tag:rOlhuN2qIN0vtwgahtvKvQ==,type:str]
path: ENC[AES256_GCM,data:QfXoPe/t8Q==,iv:Cj/4ngLtDha5fd5d7gn6OONGNdAjoEwq1zJc+xxYJTM=,tag:9q1DbomT9p4DonVsu3OBEw==,type:str]
- key: ENC[AES256_GCM,data:m72H1Se5snCNyNpe9w==,iv:ybvgDs1PNalk3i50mkIbph5KWEUefaDyoVUvKjqoJP0=,tag:+0c/3vDxjbOp6qn5VXvPxg==,type:str]
path: ENC[AES256_GCM,data:DJT6fW8uZQ==,iv:ImJQ19fJ2PBwil64M/vUu2TAhVjTYK14rfiTojK2E7A=,tag:2OkaIF6u7hCqsS2Bkp9v9w==,type:str]
- name: wildcard-semery-fr-tls
secret:
secretName: ENC[AES256_GCM,data:AZVY6PS2tzVnU5mSVlbH621e,iv:HToh6ymWjFGK+xw1+MKAP2RGKJd+PuFC4My7erFeAOc=,tag:W2pksdZFrEFKzPrGwJ+d8g==,type:str]
optional: ENC[AES256_GCM,data:LbarYQ==,iv:FUiIoSlbc/5Tj1t2LIxEPC6Ey7DgSaezrr2+lTr8roY=,tag:dlqb5SFpm1JDwn9qwaTP8A==,type:bool]
items:
- key: ENC[AES256_GCM,data:8xY5dDL5KSNDAk1mTB58WtriIRNeFw==,iv:Ng7twP5cr/TfKpENug7kgZ1Pa24vhV0/wFtxCelRLZU=,tag:powPtyjVogU/NO4LSyT2pA==,type:str]
path: ENC[AES256_GCM,data:AIvmIcXtDQ==,iv:JshIK8HzTkMlZsDcdX0AIsrkyLST3qUdtLkEP29E/O8=,tag:njYcODU/bWN7XXDwsHV9Uw==,type:str]
- key: ENC[AES256_GCM,data:NqW+4UFJx3AjfS9BFoG3dhOsbHoy4g==,iv:TMMd96OebuBwBT80BzXDYHD/38l+cSDQ9q067/Dqkk0=,tag:IOL89DD3vDjbNm/qYbSUig==,type:str]
path: ENC[AES256_GCM,data:f5PVx/WfxQ==,iv:4aFgPWiyp0lnQFboQCprI9lAGCkSfrO03TlD/Pvx0do=,tag:aIvncQKaqtNu15jnpVSSww==,type:str]
- name: buildpath-win-tls
secret:
secretName: ENC[AES256_GCM,data:nUF53gg1cNg5fEWLsXmEh1Q=,iv:XUxXBDMrddGey7eoIebW/myOD0P/UDhY6bX4QSzT3X0=,tag:foE8OG/JcknTRzsxiKKzuA==,type:str]
optional: ENC[AES256_GCM,data:tCGcgw==,iv:LxIjr/EsHifL36wFkc1rb1irfk9fyWAoBxGaf+ksu1U=,tag:A96i+w6cTAk7NTxumcXzGw==,type:bool]
- name: routes - name: routes
configMap: configMap:
name: caddy-routes name: caddy-routes
# Extra volume mounts # Extra volume mounts - each secret mounted as a directory with tls.crt/tls.key
volumeMounts: volumeMounts:
- name: certificates - name: vhaudiquet-fr-tls
mountPath: /etc/caddy/certs mountPath: /etc/caddy/certs/vhaudiquet-fr
readOnly: true
- name: wildcard-vhaudiquet-fr-tls
mountPath: /etc/caddy/certs/wildcard-vhaudiquet-fr
readOnly: true
- name: semery-fr-tls
mountPath: /etc/caddy/certs/semery-fr
readOnly: true
- name: wildcard-semery-fr-tls
mountPath: /etc/caddy/certs/wildcard-semery-fr
readOnly: true
- name: buildpath-win-tls
mountPath: /etc/caddy/certs/buildpath-win
readOnly: true readOnly: true
- name: routes - name: routes
mountPath: /etc/caddy/routes mountPath: /etc/caddy/routes
@@ -72,27 +111,27 @@ affinity:
app.kubernetes.io/name: caddy app.kubernetes.io/name: caddy
topologyKey: kubernetes.io/hostname topologyKey: kubernetes.io/hostname
sops: sops:
lastmodified: "2026-05-08T11:43:14Z" lastmodified: "2026-06-16T10:08:07Z"
mac: ENC[AES256_GCM,data:K0HWw8yTPKy6e3aQV4SdiVwrCjiyCFlFbeycAiyJq4IdlKX9v4wFvjVFLR8VziH8oXJXdUUhr+LOiqNI5HwghXkVn2dOP2ij9jvXZtMic4P0AUN16PfWoedu9ozA+xsGHZ1OTUv+sxvKEUo5Z5Wp+u761w/Xqdn5hHmU2Komatk=,iv:ICwn/LvizIjXVfgiMje50dQ11JAH37wSla29bGAnjuA=,tag:mV7rtahUy4ODZaA7baM12w==,type:str] mac: ENC[AES256_GCM,data:HeWRLHO8x7tJ3fGpSW0Pz6tkuYgQh6QJHF3q9KZD8EgCyuxxrnRh74sEOF9e/KjtmaNKF2ak6QkR2Taa9qD3yblMJp9Zjc3ivC2aMEKxtdJN8B3bxRr1Ln1Na2kSny3+X/c1nC1swWyNNgeQJvKQlvhXjK5S56Y5NG/n/PBT3Q4=,iv:HyiLtk4ueORKezmpmY/I4vXPBwEudqkwNpk4fgDheeY=,tag:2W46a3geF4Fi8jDsSCPNjA==,type:str]
pgp: pgp:
- created_at: "2026-05-08T11:43:13Z" - created_at: "2026-06-16T10:08:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiAQ//aGnCSLLWTkhToTh833OJ1GwgN82F8R+RgsfpKIW+XNvI hQIMA7uy4qQr71wiARAAhoTczAWaCpuZbHq+NrssLQG4Ys0yYNYM9nflFEOkD1Sa
YdTCgaFrYdCGXsaLHijb7vVwCU0VRf/ufZfQp2+GupqRHCbMLSmlkoiyr9ImGlYX rTEAhJACKNFYKJ6P2V4rBQtKHRdqMdVfrtaumgSvuKBX4wJW+nG/LUSXENJV/UD9
VWQDajv74H/3CcyCQNjqfFRdUHLE+rfNuYaH/p3+/Ee2bgJi52f3uRdJ4lXSCWIf VqxiujfWKgps4XfNfuM/a7w9IbU7rk+mh+LBwwRpQeqEs7j1eZnJjQCBW4zGFeav
KW9lLbwjlfGnOnsnDkaPwcZW9QL353Mi82yXOu7OihobUaVgr83nESXbAS/k4mx1 XWYx2VmqfwQ/XhVaiSCvJjeJJk/U54Dot9W2ZoKCX+5zyZ+dWsX2ggXQWsoQCfOK
whOXAoEDeLQZfZrITEewOQ0PHjWJwKc0x2YCiQ0If33GSfDjzWPoDuXmQo/xhk98 uSTjjVKw80VvrDMX/TfbvNQDHNsljOSSeScA+lx6HElbDcAyUHxE99UAi6RVQazm
Nt3aNTMDvjriGNOIcZyUlEjq1HqCmd3pQSD5h8soR9Do/NsTocyK1da49iz91dha EjEHsVHvyR0Y/7hvVlo8FY7XS/81pXGLN22AcWbd1fIZlitRa9YbHZH1YWzWRzr5
jwoEga2iFis9Zd9rr7Caf3pWtmKENUGFJl15tpaelvk13jUebSyDubw0OIYbbILr JB2S+UMEOigw8WPg/1BAiFj3bCRn8aDyAMdUEKlbcXCYwoLynG6zVbgeuntYq0Zl
dVZAeiOHrRMD5crxG05zvOeLMASuL/IrK97RLBAonZLEkRrfgAwZHK2U0rq2HXpI Y4zAi4+G+fHvdAqQz44p+AyP9hgS/qMBQwsUnAxGfltfVBEew2I/Vz5OugtDyLIW
wlp4yDlF/eILvmMgAruP7lW0q/m5+DfxQtcZdamtm3FWj9m0iUAthvw02fplmFci UYrk+5LR+7cfJNCyCHQEyJL/YPsL1GDR1SP5YCrsDnuXPCEgwyRRLHFW8j2KCtLu
xJ82rkfkPAZSm7/yPJ9yiea+tKgX8yk1uArRtf8rsG6SED2lCRKmux8ElcZc5DYV YX59FbVLqo2xzT5nEaIYbLLhEq3+5KaVIBqzGWAwSBbu7bXru6jIG6prVwofJQxx
hyLivTN7X5Nr05mvaPIptCVm1iYoWaiQNZcPDax/LBZJhNaJgPUz1ue1Ppf422PS HCz2leboRZ3ZrC4Y4itHHuMfmSCtiildRhgPtVnvUdiQz0dS+RLNesH4hRvvxBPS
XgE4dh3x1ulcUhXm4nK/0FzKmJUOjcygPeGWmia0ZOEHub/ju+z8LgRAkBasqRXP XgF9gp+9JE/5XMxUmNNf0yUC1mlQuUHbC7JqLLpLBNAtQwljDLMIgPG0y5n2r0C3
4aepPm5xVY0g/Z0xksxIWpYUnLRzs0uUKd+zz1MvmWlZckxUO5wWJUWRcwCBDz4= zokdaebVj2XV9r7X25SQMyLzTdoXYqgGsoPBFnqQNpycg2HpmBX9isvqjbZ6x/g=
=Ql2K =AqxW
-----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)$
@@ -0,0 +1,24 @@
# Let's Encrypt ClusterIssuer
# Supports multiple DNS providers via DNS-01 challenge
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-production
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: vhaudiquet343@hotmail.fr
privateKeySecretRef:
name: letsencrypt-production-account-key
solvers:
# Cloudflare solver for vhaudiquet.fr and buildpath.win
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
selector:
dnsZones:
- vhaudiquet.fr
- buildpath.win
@@ -0,0 +1,5 @@
# ClusterIssuer resources for cert-manager
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- clusterissuer.yaml
@@ -0,0 +1,47 @@
# Cloudflare API Token for DNS-01 Challenges
#
# A Cloudflare API token with the following permissions:
# - Zone > DNS > Edit
# - Zone > Zone > Read
#
# Base64-encoded:
# echo -n "api-token" | base64
#
# This file will be SOPS-encrypted on pre-commit
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token
namespace: cert-manager
labels:
app.kubernetes.io/name: cert-manager
app.kubernetes.io/component: cloudflare-api-token
type: Opaque
data:
api-token: ENC[AES256_GCM,data:QZEgQdatWsC/vpboMlPDPyY5nVK/bKkBZ9Mjtt4VOfao8uN5zi0Bdu/OPtLKQarKGTR2srMmiRuuH1BGQunBwXAb4beDIT41,iv:sHoJ86a9qNsyIJ83YgPGWerxcvp3okbXE3pX+OYTbwk=,tag:lV8OWepMdI4foSlwXnb5Ng==,type:str]
sops:
lastmodified: "2026-06-16T10:24:36Z"
mac: ENC[AES256_GCM,data:vDjNGtGfQgNBJKxIYloBd/eAkx6U+Xh/4laJ31qyAyy8/2R+0NTL/2g6yc6vqf7m47qflfSOYmU4kC7IpNlUbl/WHznaWJky8d/MU2zCmcsqmt44XOf1ppD7wkoiIyTjVh+QDNFLmmg9SDquVDvmMYYGAUypCY/Rh9QAVp/Cwtk=,iv:EMS6tgMml6bMGO3qoPkf71ROjeu/WXR1fLTki/672xw=,tag:jP89nlDi8wNV9f0DJQZljA==,type:str]
pgp:
- created_at: "2026-06-16T10:24:36Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiARAAgJ19fZrQeD25vjz9wWx+3MYjWj2vq4HWGJ9nG06zc/Rl
PeR/LbdMSowAyjvTAdnsqaFnofpz9P7fGbzbIPFiulcsoqC2UQtBO833XWc8RoyY
7nP/+fc0UyriIudoblgHV+aEoHuSuJGn7y3lAZWx4fj98Rat1Ip7/gyfN8SgmYM0
dS68s2WdXMtV3w6vFcSr/HpQFdwFAvzB4+cEjwJo35axIWKAp4wzLlckv+MG7lLS
dqZzYeGjaUyJuIc3GxBNw8ixTcEvIKdxGcRPVCCH2KLphCd+sL2b3qRUHfJXPmNb
8Eq3iiLTbh3DZ+MB4UCkVHCNf9wwVERdpjvv1hBBGxckfmgqqB9Jo1MpuQNHJdXY
gLATxuR6FSwuNNw4FslBSW0TkjMHhsP1Skfl/R4usTCsIPkN+ogC0QPCwAyH6Jir
RoQQLRGnCKgFhSgRyAO+fEOcxHeJIcphcF4RtUDU1rtYIaCRRxjTJrSx9Niz02Sc
hC2BsG0gvCMYxC7hV6EE+4Ck/93AD+4ah5nsZBQ0R9OY75RnnHs9qbZDTjnI71OO
G6bTLE1rE5KZfvN9tUKfZ8edeUDQEgY4u5IeXZgXtTEE/DqkkKnIg5nNzCs9saWU
8/+irtiX3GiXbZsXrsRR37jXzpQu+QoEDydDIZdgEg3P/97R40db6yjh/tmh0pjS
XgEZOOAjGdL742K8kMfG4JhFfRw506JH6LLE080VX8yqU3IHQTovILwXtgzcNTyj
EF+FIAvT8RR+g0VtbSMPLwCiBFeknxxvKBNmhyzvov7dFnp0zE27/VHN0ZGY6to=
=YUJS
-----END PGP MESSAGE-----
fp: DC6910268E657FF70BA7EC289974494E76938DDC
encrypted_regex: ^(data|stringData|.*.key|.*.crt)$
version: 3.10.2
@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: cert-manager
resources:
- namespace.yaml
- repository.yaml
- release.yaml
- cloudflare-api-token-secret.yaml
secretGenerator:
- name: cert-manager-values
files:
- values.yaml=values.yaml
configurations:
- kustomizeconfig.yaml
@@ -0,0 +1,11 @@
nameReference:
- kind: HelmRepository
version: v1
fieldSpecs:
- path: spec/chart/spec/sourceRef/name
kind: HelmRelease
- kind: Secret
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease
@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: cert-manager
labels:
app.kubernetes.io/name: cert-manager
@@ -0,0 +1,19 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: cert-manager
namespace: cert-manager
spec:
interval: 1m
chart:
spec:
sourceRef:
kind: HelmRepository
name: cert-manager
namespace: cert-manager
chart: cert-manager
version: "v1.20.2"
interval: 1m
valuesFrom:
- kind: Secret
name: cert-manager-values
@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cert-manager
namespace: cert-manager
spec:
interval: 1h
url: https://charts.jetstack.io
@@ -0,0 +1,66 @@
# Cert-Manager Values
# Install CRDs as part of the Helm release
crds:
enabled: true
keep: true
# Enable DNS01 challenge providers
extraArgs:
- ENC[AES256_GCM,data:yzuTi9Hu7Dx95MQN+H/6gul381m64KYv5ZsHwg92BE/aUZyJzYArniIC+Nio+SygUXXb,iv:eBizFSW1T2/VvN3k8VRsEIpllHs5MA6Nr+jh9fCzZCs=,tag:sz9WBU687eTgnDXWoE02Nw==,type:str]
# Resource settings
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
cpu: 100m
memory: 128Mi
webhook:
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
cpu: 100m
memory: 128Mi
cainjector:
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
cpu: 100m
memory: 128Mi
startupapicheck:
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
cpu: 100m
memory: 128Mi
sops:
lastmodified: "2026-06-16T08:15:29Z"
mac: ENC[AES256_GCM,data:ZB7igt7ciH6X0DmvDi2gzg1eA8EYXqq/VRBSbaLT9x2SUi+9ax9w0V+fcTwOTWlwCvHOtSAZ2RYgX/wKFmbnKgrwoSpskGFsRlY947oLkRTk4HbTRP5HbciAQsRw3AVB4pgkR7maVZ9n15gzNHTTkd9x1akAeGHJg9lzg9+N6rE=,iv:jqyi/ZGLjKFBe9XSj2WBBOUbn9xvV9Wf4wrYxSs4t/M=,tag:2u84qHa69IsYFtSwJ6yFqQ==,type:str]
pgp:
- created_at: "2026-06-16T08:15:28Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiARAAiNHNEJjBOd6AK/moP1Xw7nvOidkRtIqw+QJRmfhPDG7B
CQy3y2armtFYzaWhDcMfiy1SkcD91kadbfxAifb5/Oit48VTv03bXZDvyrEdRwcI
n81rt3GQuyNDCj9aSUVi1nT5GHETrvdnyJp3u1dzfc/0i7GK+FiCbGAGzSnGdN77
+/caT5Jib+hIVskiOjhE85K3rTrh+aJMFKC6NG7Vw8GXh7N4r3EcazcX9KuJXxsn
NRT7XyYA8y15PlZQFkhRs1QCVvqH31WDwCEt0cE4r6Qn2aGy+v8ygJkum2sYPH7g
WZfC548mZrMrI9UNo10UfPCqGew/XpEla1/bgVByMHMdM9n961KRzCPtR349xXI4
1APX4WClQjbL/cXR2zMs19Y+GDjL7XF6rdSRDpEgTzQXb4f1ctswutcYxftvKI3c
EdfCGiRpVJx/wIuh82mL3SWqdi05Lekvt1zdLcG8Tx2+nF+52dWoyxNy1YMVyk0m
RXZFMZLHKumyDooairf1P11DOXcsa8FjZrqjvn6QI2LfmEGm3PQQQUXT8Wp/10e2
78Hr1rTGqQEzvSJu0FfDuundPws97ftPiuGcUD5hUj3rS6iGxdEp4trAPi0DCCd3
g7m6fNX41O8n39EU0Kp2G9kfICMghGEVL5czzRA4EsLH35K8XqP0ig6ay5kVXWrS
XgFic5jk5GdxzUL7TFjtr9AFFaWhIZkyyXwvEod3Ur3gB64Pi/ktet6OZSWU/7Wn
eRKn9yEm+W5Xzn9eiN6TYDsCWQBY5nP80YVuj53AMSu3KbR7UGy+AbJF3T+V6lo=
=GscV
-----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
@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- pool.yaml
@@ -0,0 +1,20 @@
# Flux Kustomization for cert-manager ClusterIssuer
# Depends on cert-manager being fully operational (CRDs installed)
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cert-manager-issuer
namespace: flux-system
spec:
interval: 10m
prune: true
sourceRef:
kind: GitRepository
name: homeprod
path: ./kubernetes/system/cert-manager-issuer
dependsOn:
- name: cert-manager
decryption:
provider: sops
secretRef:
name: flux-sops
+32
View File
@@ -0,0 +1,32 @@
# Flux Kustomization for cert-manager
# Separate from main homeprod because cert-manager CRDs must be installed
# before ClusterIssuer resources can be applied
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cert-manager
namespace: flux-system
spec:
interval: 10m
prune: true
sourceRef:
kind: GitRepository
name: homeprod
path: ./kubernetes/system/cert-manager
decryption:
provider: sops
secretRef:
name: flux-sops
healthChecks:
- apiVersion: apps/v1
kind: Deployment
name: cert-manager
namespace: cert-manager
- apiVersion: apps/v1
kind: Deployment
name: cert-manager-webhook
namespace: cert-manager
- apiVersion: apps/v1
kind: Deployment
name: cert-manager-cainjector
namespace: cert-manager
@@ -0,0 +1,8 @@
# Flux system resources
# Contains Flux Kustomization resources for additional dependencies
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- webhook.yaml
- cert-manager.yaml
- cert-manager-issuer.yaml