99 Commits

Author SHA1 Message Date
a20354992a remove actual from old set
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 51s
2025-12-01 15:25:11 -06:00
a6427aa56c Update php Docker tag to v8.5.0 (#2119)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 7s
renovate / renovate (push) Successful in 1m14s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| php | minor | `8.4.15-apache-bookworm` -> `8.5.0-apache-bookworm` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41LjAiLCJ1cGRhdGVkSW5WZXIiOiI0Mi41LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: #2119
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2025-12-01 21:21:37 +00:00
a9272358fd change path
All checks were successful
renovate / renovate (push) Successful in 1m15s
2025-12-01 15:18:57 -06:00
35acd8f602 change revision
All checks were successful
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Successful in 57s
2025-12-01 15:17:55 -06:00
3b1c52427a update path
All checks were successful
renovate / renovate (push) Successful in 1m53s
2025-12-01 15:11:16 -06:00
031472bab1 remove charts to prep for migration
All checks were successful
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Successful in 2m5s
2025-12-01 15:06:07 -06:00
4a30f53bd2 remove charts to prep for migration
Some checks failed
lint-test-helm / helm-lint (push) Successful in 28s
renovate / renovate (push) Has been cancelled
2025-12-01 15:05:25 -06:00
5ae2a63f5b Update Helm release argo-cd to v9.1.5 (#2161)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 17s
renovate / renovate (push) Successful in 1m37s
2025-12-01 19:02:18 +00:00
78cd19307e Update clidey/whodb Docker tag to v0.80.0 (#2160)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 2m6s
2025-12-01 16:02:01 +00:00
892a3b6bef Update searxng/searxng:latest Docker digest to faa7118 (#2159)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Successful in 1m49s
2025-12-01 15:01:56 +00:00
e1221f7913 Update rmcrackan/libation Docker tag to v12.7.5 (#2158)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 14s
renovate / renovate (push) Successful in 1m45s
2025-12-01 05:02:35 +00:00
598c91f1c4 don't ignore archive as its no longer used
All checks were successful
renovate / renovate (push) Successful in 2m18s
2025-11-30 22:12:19 -06:00
855245e8f8 fix templating
Some checks failed
lint-test-helm / helm-lint (push) Successful in 10s
renovate / renovate (push) Has been cancelled
render-manifests / render-manifests-helm (push) Successful in 1m52s
2025-11-30 22:10:45 -06:00
3467b8a427 ignore errors
All checks were successful
renovate / renovate (push) Successful in 1m38s
2025-11-30 22:06:25 -06:00
97f3fcf206 fix
All checks were successful
renovate / renovate (push) Successful in 1m32s
2025-11-30 21:55:25 -06:00
9763fd7744 remove uneeded log
All checks were successful
renovate / renovate (push) Successful in 1m57s
2025-11-30 21:47:52 -06:00
7d6be3985c add cluster loop
Some checks failed
lint-test-helm / helm-lint (push) Successful in 11s
render-manifests / render-manifests-helm (push) Failing after 23s
renovate / renovate (push) Has been cancelled
2025-11-30 21:46:44 -06:00
e694ad3fb3 use with sh
Some checks failed
lint-test-helm / helm-lint (push) Successful in 9s
render-manifests / render-manifests-helm (push) Failing after 10s
renovate / renovate (push) Successful in 1m8s
2025-11-30 21:42:51 -06:00
b7913afca1 fix command, add logs
All checks were successful
renovate / renovate (push) Successful in 1m27s
2025-11-30 21:36:22 -06:00
7d27140114 add repo step
All checks were successful
renovate / renovate (push) Successful in 3m39s
2025-11-30 21:19:17 -06:00
6e613e1e65 add chart lock
Some checks failed
lint-test-helm / helm-lint (push) Successful in 7s
render-manifests / render-manifests-helm (push) Failing after 36s
renovate / renovate (push) Successful in 1m13s
2025-11-30 21:14:57 -06:00
dafa71f8f3 update gitignore 2025-11-30 21:00:37 -06:00
708e52dfbb add new stack 2025-11-30 21:00:21 -06:00
418bc22998 deactivate deletion
All checks were successful
lint-test-helm / helm-lint (push) Successful in 10s
render-manifests / render-manifests-helm (push) Successful in 1m13s
renovate / renovate (push) Successful in 1m30s
2025-11-30 20:24:33 -06:00
85b15e8590 add step to clear prior manifests
All checks were successful
renovate / renovate (push) Successful in 1m54s
2025-11-30 19:19:46 -06:00
32d6244acf update paths
All checks were successful
renovate / renovate (push) Successful in 1m25s
2025-11-30 18:15:58 -06:00
8e2c65663b use separate dir for each branch
All checks were successful
renovate / renovate (push) Successful in 1m14s
2025-11-30 18:09:47 -06:00
9ead73777f change
All checks were successful
renovate / renovate (push) Successful in 3m36s
2025-11-30 17:26:38 -06:00
3e0cb21863 change
All checks were successful
renovate / renovate (push) Successful in 1m26s
2025-11-30 17:08:27 -06:00
a9f2dc375c change
All checks were successful
renovate / renovate (push) Successful in 2m9s
2025-11-30 16:56:34 -06:00
63fdef0e26 change
All checks were successful
renovate / renovate (push) Successful in 1m17s
2025-11-30 16:53:33 -06:00
fcbde5abc4 change
All checks were successful
renovate / renovate (push) Successful in 1m12s
2025-11-30 16:51:29 -06:00
2ba863bb98 change
All checks were successful
renovate / renovate (push) Successful in 1m44s
2025-11-30 16:48:57 -06:00
441f39b0cd fix jq
All checks were successful
renovate / renovate (push) Successful in 2m0s
2025-11-30 16:43:52 -06:00
4a4e8ab77f use jq
All checks were successful
renovate / renovate (push) Successful in 1m18s
2025-11-30 16:41:11 -06:00
68a25dc9fd change command
All checks were successful
renovate / renovate (push) Successful in 1m35s
2025-11-30 16:26:57 -06:00
96a44b823e fix
All checks were successful
renovate / renovate (push) Successful in 1m14s
2025-11-30 16:17:32 -06:00
e23dbd4df2 echo content
All checks were successful
renovate / renovate (push) Successful in 2m7s
2025-11-30 16:12:04 -06:00
1e6f90271a change redirection
All checks were successful
renovate / renovate (push) Successful in 1m24s
2025-11-30 16:05:55 -06:00
b789f2030e add error handling
All checks were successful
renovate / renovate (push) Successful in 1m6s
2025-11-30 15:55:58 -06:00
77ef98c3e0 use webrequest
Some checks failed
renovate / renovate (push) Failing after 3s
2025-11-30 15:45:13 -06:00
6156597591 use manual workflow
All checks were successful
renovate / renovate (push) Successful in 1m34s
2025-11-30 15:24:41 -06:00
48c232c275 revert
All checks were successful
renovate / renovate (push) Successful in 1m1s
2025-11-30 14:58:21 -06:00
9e897757c6 fix secrets
All checks were successful
renovate / renovate (push) Successful in 1m4s
2025-11-30 14:39:21 -06:00
b5beaa88b1 use different package
All checks were successful
renovate / renovate (push) Successful in 1m31s
2025-11-30 14:36:59 -06:00
5508678a6c use different package
All checks were successful
renovate / renovate (push) Successful in 1m14s
2025-11-30 14:21:06 -06:00
f3ed21b8a8 use different package
All checks were successful
renovate / renovate (push) Successful in 2m31s
2025-11-30 14:16:10 -06:00
2f4a342811 use token
All checks were successful
renovate / renovate (push) Successful in 1m27s
2025-11-30 14:10:43 -06:00
39c52e03a3 remove
All checks were successful
renovate / renovate (push) Successful in 1m56s
2025-11-30 14:07:45 -06:00
43aeb04ade use token
All checks were successful
renovate / renovate (push) Successful in 1m38s
2025-11-30 14:05:47 -06:00
9122e9f339 add commiter and author
All checks were successful
renovate / renovate (push) Successful in 1m13s
2025-11-30 13:46:03 -06:00
e212872535 Update clidey/whodb Docker tag to v0.78.0 (#2153)
Some checks failed
render-manifests / render-manifests-helm (push) Failing after 12s
lint-test-helm / helm-lint (push) Successful in 13s
renovate / renovate (push) Successful in 1m48s
2025-11-30 13:02:36 +00:00
08a0d296a3 Update ghcr.io/linuxserver/qbittorrent:5.1.4 Docker digest to a2eedc9 (#2152)
Some checks failed
lint-test-helm / helm-lint (push) Successful in 11s
render-manifests / render-manifests-helm (push) Failing after 1m15s
renovate / renovate (push) Successful in 2m29s
2025-11-30 08:03:31 +00:00
32c1f3a450 fix token
All checks were successful
renovate / renovate (push) Successful in 3m21s
2025-11-29 23:36:49 -06:00
b865730722 specific path
All checks were successful
renovate / renovate (push) Successful in 1m33s
2025-11-29 23:30:47 -06:00
8682100cc6 update file path
All checks were successful
renovate / renovate (push) Successful in 1m9s
2025-11-29 23:19:42 -06:00
5bad734c75 fix path
All checks were successful
renovate / renovate (push) Successful in 1m40s
2025-11-29 23:09:50 -06:00
0343b2d9ee use local path
Some checks failed
renovate / renovate (push) Failing after 3s
2025-11-29 23:05:33 -06:00
1c100f1c6b use absolute paths
All checks were successful
renovate / renovate (push) Successful in 1m1s
2025-11-29 22:58:47 -06:00
bee206bec1 remove name from build and lint
All checks were successful
renovate / renovate (push) Successful in 1m5s
2025-11-29 22:45:45 -06:00
e4b3d06e1d change to directory
Some checks failed
renovate / renovate (push) Has been cancelled
2025-11-29 22:44:35 -06:00
7408d8effb downgrade helm
All checks were successful
renovate / renovate (push) Successful in 1m11s
2025-11-29 22:39:33 -06:00
274ab32e2a add build and lint
All checks were successful
renovate / renovate (push) Successful in 1m41s
2025-11-29 22:31:45 -06:00
ce87523597 fix path
All checks were successful
renovate / renovate (push) Successful in 1m29s
2025-11-29 22:25:40 -06:00
25710206d5 fix env
All checks were successful
renovate / renovate (push) Successful in 1m18s
2025-11-29 22:23:16 -06:00
c705885dda fix path
All checks were successful
renovate / renovate (push) Successful in 2m23s
2025-11-29 22:03:01 -06:00
783d307998 add dispatch
All checks were successful
renovate / renovate (push) Successful in 2m5s
2025-11-29 21:49:49 -06:00
06397c2b57 fix render
All checks were successful
renovate / renovate (push) Successful in 1m40s
2025-11-29 21:45:18 -06:00
e102d910bc add render manifest workflow
Some checks failed
lint-test-helm / helm-lint (push) Successful in 9s
render-manifests / render-manifests-helm (push) Failing after 30s
renovate / renovate (push) Successful in 2m6s
2025-11-29 21:41:00 -06:00
bcc6a517ee fix secret
All checks were successful
lint-test-helm / helm-lint (push) Successful in 39s
renovate / renovate (push) Successful in 1m40s
2025-11-29 20:06:28 -06:00
f1a0008763 change cred
All checks were successful
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Successful in 1m17s
2025-11-29 17:54:33 -06:00
425351b338 Update searxng/searxng:latest Docker digest to 0124d32 (#2151)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 11s
renovate / renovate (push) Successful in 1m2s
2025-11-29 16:02:04 +00:00
9b90e7a19b add garage
All checks were successful
lint-test-helm / helm-lint (push) Successful in 16s
renovate / renovate (push) Successful in 1m53s
2025-11-28 22:55:54 -06:00
b58b3a3ed0 increase compression
Some checks failed
lint-test-docker / docker-lint (push) Successful in 8s
renovate / renovate (push) Has been cancelled
2025-11-28 22:55:08 -06:00
cc5fe67955 adjust interval
All checks were successful
lint-test-helm / helm-lint (push) Successful in 12s
renovate / renovate (push) Successful in 1m39s
2025-11-28 22:09:50 -06:00
31f7014f07 update labels
All checks were successful
lint-test-helm / helm-lint (push) Successful in 12s
renovate / renovate (push) Successful in 1m29s
2025-11-28 22:07:08 -06:00
c9ac593fc5 expand disk size
All checks were successful
lint-test-helm / helm-lint (push) Successful in 21s
renovate / renovate (push) Successful in 2m12s
2025-11-28 21:50:25 -06:00
0f538ceb3c expand disk size
All checks were successful
lint-test-helm / helm-lint (push) Successful in 41s
renovate / renovate (push) Successful in 1m48s
2025-11-28 21:46:10 -06:00
9fa80152bf rename servarr to content
All checks were successful
lint-test-helm / helm-lint (push) Successful in 11s
renovate / renovate (push) Successful in 1m6s
2025-11-28 18:49:29 -06:00
f617b0d175 rename servarr to content
All checks were successful
lint-test-helm / helm-lint (push) Successful in 11s
renovate / renovate (push) Successful in 1m48s
2025-11-28 18:44:46 -06:00
027367a16c Update ghcr.io/linuxserver/sonarr:4.0.16 Docker digest to 60e5edc (#2150)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Successful in 1m49s
2025-11-29 00:03:10 +00:00
d9f5e91d5d Update clidey/whodb Docker tag to v0.77.0 (#2149)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 10s
renovate / renovate (push) Successful in 3m1s
2025-11-28 21:01:45 +00:00
6fbb80c097 Update clidey/whodb Docker tag to v0.76.0 (#2148)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m33s
2025-11-28 20:01:56 +00:00
b628c8597b Update searxng/searxng:latest Docker digest to 7f816e1 (#2147)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m45s
2025-11-28 13:01:43 +00:00
07b0ace900 Update searxng/searxng:latest Docker digest to 782d8ab (#2146)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 12s
renovate / renovate (push) Successful in 1m28s
2025-11-28 11:01:20 +00:00
4144aad3cb Update searxng/searxng:latest Docker digest to ee07122 (#2145)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m9s
2025-11-28 10:01:43 +00:00
72d2293644 Update rmcrackan/libation Docker tag to v12.7.4 (#2144)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m28s
2025-11-27 05:01:44 +00:00
6bd1bacdd1 Update Helm release tailscale-operator to v1.90.9 (#2143)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 17s
renovate / renovate (push) Successful in 1m29s
2025-11-26 23:02:19 +00:00
0ccbc96cdb Update Helm release matrix-synapse to v3.12.16 (#2142)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 10s
renovate / renovate (push) Successful in 2m12s
2025-11-26 19:02:04 +00:00
5168ce593a Update ghcr.io/booklore-app/booklore Docker tag to v1.12.0 (#2140)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 23s
renovate / renovate (push) Successful in 1m54s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| ghcr.io/booklore-app/booklore | minor | `v1.11.0` -> `v1.12.0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41LjAiLCJ1cGRhdGVkSW5WZXIiOiI0Mi41LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: #2140
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2025-11-26 17:26:51 +00:00
0ce6a82c26 Update ghcr.io/linuxserver/prowlarr:2.3.0 Docker digest to 4758535 (#2141)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 7s
renovate / renovate (push) Successful in 1m13s
2025-11-26 05:01:48 +00:00
77b0e35a61 Update caronc/apprise Docker tag to v1.2.6 (#2139)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 7s
renovate / renovate (push) Successful in 1m33s
2025-11-26 03:01:49 +00:00
51701655b6 Update d3fk/s3cmd:latest Docker digest to 7bdbd33 (#2138)
Some checks failed
lint-test-helm / helm-lint (push) Successful in 8s
renovate / renovate (push) Has been cancelled
2025-11-26 03:01:38 +00:00
c5074ba043 remove calibre
All checks were successful
lint-test-helm / helm-lint (push) Successful in 7s
lint-test-docker / docker-lint (push) Successful in 10s
renovate / renovate (push) Successful in 1m36s
2025-11-25 20:11:36 -06:00
a6d9443290 Update Helm release generic-device-plugin to v0.20.1 (#2137)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m5s
2025-11-26 01:01:42 +00:00
a616c13446 Update ghcr.io/linuxserver/bazarr:1.5.3 Docker digest to 2be164c (#2136)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 6s
renovate / renovate (push) Successful in 1m30s
2025-11-25 22:01:21 +00:00
65c0028ba7 Update rmcrackan/libation Docker tag to v12.7.3 (#2135)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 7s
renovate / renovate (push) Successful in 1m10s
2025-11-25 21:01:42 +00:00
6dd9262d0f Update rmcrackan/libation Docker tag to v12.7.2 (#2134)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m31s
2025-11-25 15:01:48 +00:00
9ba873a026 Update goharbor/harbor-core Docker tag to v2.14.1 (#2126)
All checks were successful
lint-test-helm / helm-lint (push) Successful in 9s
renovate / renovate (push) Successful in 1m35s
2025-11-25 14:01:24 +00:00
57 changed files with 445 additions and 519 deletions

View File

@@ -6,7 +6,6 @@ on:
- main
paths:
- 'hosts/**'
- ! 'hosts/archive'
jobs:
docker-lint:

View File

@@ -6,7 +6,6 @@ on:
- main
paths:
- 'hosts/**'
- ! 'hosts/archive'
jobs:
docker-lint:

View File

@@ -6,7 +6,6 @@ on:
- main
paths:
- 'clusters/**'
- ! 'clusters/*/archive'
jobs:
helm-lint:

View File

@@ -6,7 +6,6 @@ on:
- main
paths:
- 'clusters/**'
- ! 'clusters/*/archive'
jobs:
helm-lint:

View File

@@ -0,0 +1,229 @@
name: render-manifests
on:
push:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
workflow_dispatch:
env:
CLUSTERS: cl01tl
BASE_BRANCH: manifests
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-helm:
runs-on: ubuntu-js
steps:
- name: Checkout
uses: actions/checkout@v6
with:
path: infrastructure
- name: Checkout Manifests
uses: actions/checkout@v6
with:
ref: manifests
path: infrastructure-manifests
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
- name: Remove Prior Manifests
run: |
cd ${MANIFEST_DIR}/clusters
rm -rf ./*
- name: Add Repositories
run: |
for cluster in ${CLUSTERS}; do
echo ">> Adding repositories for chart dependencies of cluster $cluster ..."
for chart_path in ${MAIN_DIR}/clusters/$cluster/helm/*; do
helm dependency list --max-col-width 120 $chart_path 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do echo "$cmd" | sh; done || true
done
done
- name: Render Helm Manifests
run: |
for cluster in ${CLUSTERS}; do
for chart_path in ${MAIN_DIR}/clusters/$cluster/helm/*; do
chart_name=$(basename "$chart_path")
echo ">> Rendering chart: $chart_name"
if [ -f "$chart_path/Chart.yaml" ]; then
mkdir -p ${MANIFEST_DIR}/clusters/$cluster/manifests/$chart_name
OUTPUT_FILE="${MANIFEST_DIR}/clusters/$cluster/manifests/$chart_name/$chart_name.yaml"
cd $chart_path
echo ""
echo ">> Building helm dependency ..."
helm dependency build
echo ""
echo ">> Linting helm ..."
helm lint --namespace "$chart_name" --with-subcharts
echo ""
echo ">> Rendering templates ..."
helm template "$chart_name" ./ --namespace "$chart_name" --include-crds > "$OUTPUT_FILE"
echo ""
echo ">> Manifests for $chart_name rendered to $OUTPUT_FILE"
echo ""
else
echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
echo ""
fi
done
done
- name: Check for Changes
id: check-changes
run: |
cd ${MANIFEST_DIR}
if git status --porcelain | grep -q .; then
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ">> No changes detected, skipping PR creation"
exit 0
fi
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
BRANCH_NAME="auto/update-manifests-$(date +%s)"
# Configure Git
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
# Create a new branch and stage all changes
echo ">> Creating and commiting to $BRANCH_NAME ..."
git checkout -b $BRANCH_NAME
git add .
git commit -m "chore: Update manifests after change"
# Push the new branch to the remote repository
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ">> Pushing changes to $REPO_URL ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@$(echo $REPO_URL | sed -e 's|https://||')" $BRANCH_NAME
echo "HEAD_BRANCH=$BRANCH_NAME" >> $GITEA_OUTPUT
echo "push=true" >> $GITEA_OUTPUT
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${HEAD_BRANCH}" \
--arg base "${BASE_BRANCH}" \
--arg title "Automated Manifest Update: $(date +%F)" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, title: $title, body: $body'} )
echo ">> Creating PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
PR_URL=$(cat response_body.json | jq -r .html_url)
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
echo "pull-request-operation=created" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "422" ]; then
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
- name: Cleanup Branch
if: failure() && steps.create-pull-request.outcome == 'failure'
env:
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
echo ">> Removing branch: ${HEAD_BRANCH}"
git push origin --delete ${HEAD_BRANCH}
- name: ntfy Created
uses: niniyas/ntfy-action@master
if: steps.create-pull-request.outputs.pull-request-operation == 'created'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Created - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Manifest rendering for Infrastructure has created a new Pull Request!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render Failure - Infrastructure"
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]'
image: true

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/**/archive/
/**/charts/
/**/manifests/

View File

@@ -15,7 +15,7 @@ bazarr:
main:
image:
repository: ghcr.io/linuxserver/bazarr
tag: 1.5.3@sha256:a42fef2a5ffa1dca8714e12892ba0b8de5c6c513f1bcdb1ffe4143e715cffb45
tag: 1.5.3@sha256:2be164c02c0bb311b6c32e57d3d0ddc2813d524e89ab51a3408c1bf6fafecda5
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -9,7 +9,7 @@ booklore:
main:
image:
repository: ghcr.io/booklore-app/booklore
tag: v1.11.0
tag: v1.12.0
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -1,21 +0,0 @@
apiVersion: v2
name: calibre-web-automated
version: 1.0.0
description: Calibre Web Automated
keywords:
- calibre-web-automated
- books
home: https://wiki.alexlebens.dev/s/fdcfdb7e-8f73-438e-b59c-3c2de2081885
sources:
- https://github.com/crocodilestick/Calibre-Web-Automator
- https://hub.docker.com/r/crocodilestick/calibre-web-automated
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
maintainers:
- name: alexlebens
dependencies:
- name: app-template
alias: calibre-web-automated
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.4.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/calibre-web.png
appVersion: V3.0.4

View File

@@ -1,78 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: calibre-web-automated-gmail-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-gmail-config
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: gmail.json
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/calibre-web/gmail
metadataPolicy: None
property: gmail.json
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: calibre-web-automated-config-backup-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-config-backup-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ `{{ .BUCKET_ENDPOINT }}` }}/calibre-web-automated/calibre-web-automated-config"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: S3_BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: access_key
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: secret_key

View File

@@ -1,58 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-calibre
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-calibre
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- calibre.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: calibre-web-automated-main
port: 8083
weight: 100
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-calibre-downloader
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-calibre-downloader
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- calibre-downloader.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: calibre-web-automated-downloader
port: 8084
weight: 100

View File

@@ -1,36 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: calibre-web-automated-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
volumeName: calibre-web-automated-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: calibre-web-automated-ingest-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-ingest-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
volumeName: calibre-web-automated-ingest-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi

View File

@@ -1,48 +0,0 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: calibre-web-automated-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
path: /volume2/Storage/Calibre
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: calibre-web-automated-ingest-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-ingest-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
path: /volume2/Storage/Calibre Import
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac

View File

@@ -1,28 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: calibre-web-automated-config-backup-source
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-web-automated-config-backup-source
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
sourcePVC: calibre-web-automated-config
trigger:
schedule: 0 4 * * *
restic:
pruneIntervalDays: 7
repository: calibre-web-automated-config-backup-secret
retain:
hourly: 1
daily: 3
weekly: 2
monthly: 2
yearly: 4
moverSecurityContext:
runAsUser: 1000
runAsGroup: 100
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot

View File

@@ -1,119 +0,0 @@
calibre-web-automated:
controllers:
main:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
containers:
main:
image:
repository: crocodilestick/calibre-web-automated
tag: V3.0.4
pullPolicy: IfNotPresent
env:
- name: TZ
value: US/Central
- name: PUID
value: 1000
- name: PGID
value: 100
resources:
requests:
cpu: 10m
memory: 256Mi
downloader:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
containers:
main:
image:
repository: ghcr.io/calibrain/calibre-web-automated-book-downloader
tag: latest@sha256:b1296c5edc89eee8742d86392ce40707233671044a454e002821e5c76cd58deb
pullPolicy: IfNotPresent
env:
- name: FLASK_PORT
value: 8084
- name: UID
value: 1000
- name: GID
value: 100
- name: USE_CF_BYPASS
value: false
- name: CLOUDFLARE_PROXY_URL
value: http://localhost:8000
- name: INGEST_DIR
value: /cwa-book-ingest
- name: BOOK_LANGUAGE
value: end
resources:
requests:
cpu: 10m
memory: 256Mi
bypass:
image:
repository: ghcr.io/sarperavci/cloudflarebypassforscraping
tag: latest@sha256:fc8443dd96450ab10ed455a05397c8a17bab89b8408b7cbb6242fa6e4fb9edf5
pullPolicy: IfNotPresent
resources:
requests:
cpu: 10m
memory: 128Mi
service:
main:
controller: main
ports:
http:
port: 8083
targetPort: 8083
protocol: HTTP
downloader:
controller: downloader
ports:
http:
port: 8084
targetPort: 8084
protocol: HTTP
persistence:
config:
forceRename: calibre-web-automated-config
storageClass: ceph-block
accessMode: ReadWriteOnce
size: 5Gi
retain: true
advancedMounts:
main:
main:
- path: /config
readOnly: false
gmail:
enabled: true
type: secret
name: calibre-web-automated-gmail-config
advancedMounts:
main:
main:
- path: /app/calibre-web/gmail.json
readOnly: true
mountPropagation: None
subPath: gmail.json
books:
existingClaim: calibre-web-automated-nfs-storage
advancedMounts:
main:
main:
- path: /calibre-library
readOnly: false
ingest:
existingClaim: calibre-web-automated-ingest-nfs-storage
advancedMounts:
main:
main:
- path: /cwa-book-ingest
readOnly: false
downloader:
main:
- path: /cwa-book-ingest
readOnly: false

View File

@@ -52,7 +52,7 @@ ephemera:
apprise-api:
image:
repository: caronc/apprise
tag: 1.2.5
tag: 1.2.6
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -76,20 +76,20 @@ homepage:
- Storage:
tab: Services
icon: mdi-database-#ffffff
- Servarr:
- Content:
tab: Services
icon: mdi-multimedia-#ffffff
- TV Shows:
tab: Servarr
tab: Content
icon: mdi-television-#ffffff
- Movies:
tab: Servarr
tab: Content
icon: mdi-filmstrip-#ffffff
- Music:
tab: Servarr
tab: Content
icon: mdi-music-box-multiple-#ffffff
- Books:
tab: Servarr
tab: Content
icon: mdi-book-open-variant-#ffffff
- External Services:
tab: Bookmarks
@@ -178,12 +178,6 @@ homepage:
siteMonitor: http://audiobookshelf.audiobookshelf:80
statusStyle: dot
- Books:
icon: sh-calibre-web.webp
description: Calibre Web Automated
href: https://calibre.alexlebens.net
siteMonitor: http://calibre-web-automated-main.calibre-web-automated:8083
statusStyle: dot
- Books (Booklore):
icon: sh-booklore.webp
description: Booklore
href: https://booklore.alexlebens.net
@@ -537,7 +531,7 @@ homepage:
href: https://backrest.alexlebens.net
siteMonitor: http://backrest.backrest:80
statusStyle: dot
- Servarr:
- Content:
- qUI:
icon: https://raw.githubusercontent.com/autobrr/qui/8487c818886df9abb2b1456f43b54e0ba180a2bd/web/public/icons.svg
description: qbitorrent
@@ -692,12 +686,6 @@ homepage:
href: https://ephemera.alexlebens.net
siteMonitor: http://ephemera.ephemera:80
statusStyle: dot
- CWA Downloader:
icon: sh-cwa-book-downloader.webp
description: Books
href: https://calibre-downloader.alexlebens.net
siteMonitor: http://calibre-web-automated-downloader.calibre-web-automated:8084
statusStyle: dot
- Listenarr:
icon: sh-audiobookrequest.webp
description: Audiobooks

View File

@@ -16,7 +16,7 @@ libation:
main:
image:
repository: rmcrackan/libation
tag: 12.7.1
tag: 12.7.5
pullPolicy: IfNotPresent
env:
- name: SLEEP_TIME

View File

@@ -20,7 +20,7 @@ prowlarr:
main:
image:
repository: ghcr.io/linuxserver/prowlarr
tag: 2.3.0@sha256:3dd3a316f60ea4e6714863286549a6ccaf0b8cf4efe5578ce3fe0e85475cb1cf
tag: 2.3.0@sha256:475853535de3de8441b87c1457c30f2e695f4831228b12b6b7274e9da409d874
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -9,7 +9,7 @@ searxng:
main:
image:
repository: searxng/searxng
tag: latest@sha256:fc076352d72154feb1d8c0eb42dd5570a3ebc9ca8c6b9c8318ce545a8dfd1ea4
tag: latest@sha256:faa7118f9167c2c1e09a3fbb9bd87eee0905d76456d297e62e815646afc97037
pullPolicy: IfNotPresent
env:
- name: SEARXNG_BASE_URL
@@ -43,7 +43,7 @@ searxng:
main:
image:
repository: searxng/searxng
tag: latest@sha256:fc076352d72154feb1d8c0eb42dd5570a3ebc9ca8c6b9c8318ce545a8dfd1ea4
tag: latest@sha256:faa7118f9167c2c1e09a3fbb9bd87eee0905d76456d297e62e815646afc97037
pullPolicy: IfNotPresent
env:
- name: SEARXNG_BASE_URL

View File

@@ -13,7 +13,7 @@ sonarr-4k:
main:
image:
repository: ghcr.io/linuxserver/sonarr
tag: 4.0.16@sha256:2fc9c36769a3f50ab529e7ccc37687d118ab42199b01588573f03b3393cc3223
tag: 4.0.16@sha256:60e5edcac39172294ad22d55d1b08c2c0a9fe658cad2f2c4d742ae017d7874de
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -13,7 +13,7 @@ sonarr-anime:
main:
image:
repository: ghcr.io/linuxserver/sonarr
tag: 4.0.16@sha256:2fc9c36769a3f50ab529e7ccc37687d118ab42199b01588573f03b3393cc3223
tag: 4.0.16@sha256:60e5edcac39172294ad22d55d1b08c2c0a9fe658cad2f2c4d742ae017d7874de
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -13,7 +13,7 @@ sonarr:
main:
image:
repository: ghcr.io/linuxserver/sonarr
tag: 4.0.16@sha256:2fc9c36769a3f50ab529e7ccc37687d118ab42199b01588573f03b3393cc3223
tag: 4.0.16@sha256:60e5edcac39172294ad22d55d1b08c2c0a9fe658cad2f2c4d742ae017d7874de
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -15,7 +15,7 @@ maintainers:
- name: alexlebens
dependencies:
- name: argo-cd
version: 9.1.4
version: 9.1.5
repository: https://argoproj.github.io/argo-helm
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
appVersion: 3.0.0

View File

@@ -9,10 +9,12 @@ metadata:
app.kubernetes.io/name: {{ $stack.name }}
app.kubernetes.io/instance: {{ $stack.name }}
app.kubernetes.io/part-of: {{ $.Release.Name }}
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
syncPolicy:
applicationsSync: create-update
preserveResourcesOnDeletion: false
preserveResourcesOnDeletion: true
generators:
- git:
repoURL: {{ $.Values.git.repo }}

View File

@@ -0,0 +1,6 @@
dependencies:
- name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.4.0
digest: sha256:b5d823171e1b4dc1d3856f782f0c67cbb5d49e4fa170df2f21b06303c7aff7f5
generated: "2025-11-30T21:05:19.732832-06:00"

View File

@@ -18,4 +18,4 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.4.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
appVersion: v25.5.0
appVersion: 25.11.0

View File

@@ -0,0 +1,16 @@
apiVersion: v2
name: stack
version: 1.0.0
description: Stack
keywords:
- argocd
- stack
- deployment
home: https://wiki.alexlebens.dev/s/0c2d1896-710d-4972-9bc8-08d71987428a
sources:
- https://github.com/argoproj/argo-cd
- https://gitea.alexlebens.dev/alexlebens/infrastructure
maintainers:
- name: alexlebens
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
appVersion: 1.0.0

View File

@@ -0,0 +1,80 @@
---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: application-set-cl01tl
namespace: argocd
labels:
app.kubernetes.io/name: application-set-cl01tl
app.kubernetes.io/instance: argocd
app.kubernetes.io/part-of: argocd
spec:
syncPolicy:
applicationsSync: create-update
preserveResourcesOnDeletion: true
generators:
- git:
repoURL: http://gitea-http.gitea:3000/alexlebens/infrastructure
revision: manifests
directories:
- path: clusters/cl01tl/manifests/*
- path: clusters/cl01tl/manifests/stack
exclude: true
template:
metadata:
name: '{{ `{{path.basename}}` }}'
spec:
project: default
source:
repoURL: http://gitea-http.gitea:3000/alexlebens/infrastructure
targetRevision: manifests
path: '{{ `{{.path.path}}` }}'
helm:
releaseName: '{{ `{{path.basename}}` }}'
destination:
name: in-cluster
namespace: '{{ `{{path.basename}}` }}'
revisionHistoryLimit: 3
ignoreDifferences:
- group: ""
kind: Service
jqPathExpressions:
- .spec.externalName
- group: "apps"
kind: "Deployment"
jsonPointers:
- /spec/template/metadata/annotations/checksum~1secret
- /spec/template/metadata/annotations/checksum~1secret-core
- /spec/template/metadata/annotations/checksum~1secret-jobservice
- /spec/template/metadata/annotations/checksum~1tls
- group: "apps"
kind: "StatefulSet"
jsonPointers:
- /spec/template/metadata/annotations/checksum~1secret
- /spec/template/metadata/annotations/checksum~1tls
- group: "apps"
kind: StatefulSet
jqPathExpressions:
- .spec.volumeClaimTemplates[]?.apiVersion
- .spec.volumeClaimTemplates[]?.kind
- .spec.volumeClaimTemplates[]?.metadata.creationTimestamp
- group: ""
kind: GpuDevicePlugin
jqPathExpressions:
- .metadata.annotations[]
syncPolicy:
automated:
prune: true
selfHeal: false
retry:
limit: 3
backoff:
duration: 1m
factor: 2
maxDuration: 15m
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
- ServerSideApply=true
- PruneLast=true
- RespectIgnoreDifferences=true

View File

@@ -0,0 +1,37 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: stack-cl01tl
namespace: argocd
labels:
app.kubernetes.io/name: stack-cl01tl
app.kubernetes.io/instance: argocd
app.kubernetes.io/part-of: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: http://gitea-http.gitea:3000/alexlebens/infrastructure
targetRevision: manifests
path: clusters/cl01tl/manifests/stack
destination:
name: in-cluster
namespace: argocd
revisionHistoryLimit: 3
syncPolicy:
automated:
prune: true
selfHeal: false
retry:
limit: 3
backoff:
duration: 1m
factor: 2
maxDuration: 15m
syncOptions:
- CreateNamespace=false
- ApplyOutOfSyncOnly=true
- ServerSideApply=true
- PruneLast=true
- RespectIgnoreDifferences=true

View File

@@ -140,9 +140,6 @@ gatus:
- name: audiobookshelf
url: https://audiobookshelf.alexlebens.net
<<: *defaults
- name: calibre
url: https://calibre.alexlebens.net
<<: *defaults
- name: home-assistant
url: https://home-assistant.alexlebens.net
<<: *defaults
@@ -304,9 +301,6 @@ gatus:
- name: huntarr
url: https://huntarr.alexlebens.net
<<: *defaults
- name: calibre-downloader
url: https://calibre-downloader.alexlebens.net
<<: *defaults
- name: tdarr
url: https://tdarr.alexlebens.net
<<: *defaults

View File

@@ -54,6 +54,25 @@ spec:
resyncPeriod: 1h
url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/etcd.json
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
name: grafana-dashboard-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: grafana-dashboard-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
instanceSelector:
matchLabels:
app: grafana-main
contentCacheDuration: 1h
folderUID: grafana-folder-system
resyncPeriod: 1h
url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/garage.json
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard

View File

@@ -109,7 +109,7 @@ kube-prometheus-stack:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 200Gi
storage: 250Gi
ntfy-alertmanager:
global:
fullnameOverride: ntfy-alertmanager

View File

@@ -42,7 +42,7 @@ loki:
persistence:
enableStatefulSetAutoDeletePVC: true
enabled: true
size: 100Gi
size: 150Gi
storageClass: synology-iscsi-delete
write:
replicas: 0

View File

@@ -75,10 +75,10 @@ spec:
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: s3-garage-local-secret
name: s3-garage-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: s3-garage-local-secret
app.kubernetes.io/name: s3-garage-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
@@ -90,57 +90,13 @@ spec:
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
key: /garage/home-infra/s3-exporter
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
key: /garage/home-infra/s3-exporter
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: AWS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_REGION
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: s3-garage-remote-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: s3-garage-remote-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: AWS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_REGION

View File

@@ -11,11 +11,11 @@ spec:
selector:
matchLabels:
app.kubernetes.io/name: s3-exporter
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/instance: s3-exporter
app.kubernetes.io/service: s3-exporter-digital-ocean
endpoints:
- port: metrics
interval: 6h
interval: 5m
scrapeTimeout: 120s
path: /metrics
@@ -33,11 +33,11 @@ spec:
selector:
matchLabels:
app.kubernetes.io/name: s3-exporter
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/instance: s3-exporter
app.kubernetes.io/service: s3-exporter-ceph-directus
endpoints:
- port: metrics
interval: 6h
interval: 5m
scrapeTimeout: 120s
path: /metrics
@@ -55,11 +55,11 @@ spec:
selector:
matchLabels:
app.kubernetes.io/name: s3-exporter
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/instance: s3-exporter
app.kubernetes.io/service: s3-exporter-garage-local
endpoints:
- port: metrics
interval: 6h
interval: 5m
scrapeTimeout: 120s
path: /metrics
@@ -77,10 +77,10 @@ spec:
selector:
matchLabels:
app.kubernetes.io/name: s3-exporter
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/instance: s3-exporter
app.kubernetes.io/service: s3-exporter-garage-remote
endpoints:
- port: metrics
interval: 6h
interval: 5m
scrapeTimeout: 120s
path: /metrics

View File

@@ -97,18 +97,15 @@ s3-exporter:
- name: S3_ACCESS_KEY
valueFrom:
secretKeyRef:
name: s3-garage-local-secret
name: s3-garage-secret
key: AWS_ACCESS_KEY_ID
- name: S3_SECRET_KEY
valueFrom:
secretKeyRef:
name: s3-garage-local-secret
name: s3-garage-secret
key: AWS_SECRET_ACCESS_KEY
- name: S3_REGION
valueFrom:
secretKeyRef:
name: s3-garage-local-secret
key: AWS_REGION
value: us-east-1
- name: LOG_LEVEL
value: debug
- name: S3_FORCE_PATH_STYLE
@@ -136,18 +133,15 @@ s3-exporter:
- name: S3_ACCESS_KEY
valueFrom:
secretKeyRef:
name: s3-garage-remote-secret
name: s3-garage-secret
key: AWS_ACCESS_KEY_ID
- name: S3_SECRET_KEY
valueFrom:
secretKeyRef:
name: s3-garage-remote-secret
name: s3-garage-secret
key: AWS_SECRET_ACCESS_KEY
- name: S3_REGION
valueFrom:
secretKeyRef:
name: s3-garage-remote-secret
key: AWS_REGION
value: us-east-1
- name: LOG_LEVEL
value: debug
- name: S3_FORCE_PATH_STYLE

View File

@@ -36,7 +36,7 @@ shelly-plug:
main:
image:
repository: php
tag: 8.4.15-apache-bookworm
tag: 8.5.0-apache-bookworm
pullPolicy: IfNotPresent
env:
- name: SHELLY_HOSTNAME

View File

@@ -212,7 +212,7 @@ backup:
s3-backup:
image:
repository: d3fk/s3cmd
tag: latest@sha256:caccff69634d420705b9f676d69e15d574fb65d1dd475b7412d3bc18df99e00f
tag: latest@sha256:7bdbd33bb3d044884598898b9e9b383385759fbd6ebf52888700bd9b0e0fab91
pullPolicy: IfNotPresent
command:
- /bin/sh
@@ -236,7 +236,7 @@ backup:
s3-prune:
image:
repository: d3fk/s3cmd
tag: latest@sha256:caccff69634d420705b9f676d69e15d574fb65d1dd475b7412d3bc18df99e00f
tag: latest@sha256:7bdbd33bb3d044884598898b9e9b383385759fbd6ebf52888700bd9b0e0fab91
pullPolicy: IfNotPresent
command:
- /bin/sh

View File

@@ -29,7 +29,7 @@ maintainers:
- name: alexlebens
dependencies:
- name: matrix-synapse
version: 3.12.15
version: 3.12.16
repository: https://ananace.gitlab.io/charts
- name: app-template
alias: matrix-hookshot

View File

@@ -28,7 +28,7 @@ qbittorrent:
qbittorrent:
image:
repository: ghcr.io/linuxserver/qbittorrent
tag: 5.1.4@sha256:26a08cd60d81e632aba8947b2c64dfd5f870a5f4a837ec4abedf2e1d174df891
tag: 5.1.4@sha256:a2eedc99b4876916943bd33e7c415efc448f6b514aa39b4f98c1e6472a717301
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -198,7 +198,7 @@ snapshot:
s3-backup:
image:
repository: d3fk/s3cmd
tag: latest@sha256:caccff69634d420705b9f676d69e15d574fb65d1dd475b7412d3bc18df99e00f
tag: latest@sha256:7bdbd33bb3d044884598898b9e9b383385759fbd6ebf52888700bd9b0e0fab91
pullPolicy: IfNotPresent
command:
- /bin/sh

View File

@@ -112,8 +112,6 @@ blocky:
backrest IN CNAME traefik-cl01tl
bazarr IN CNAME traefik-cl01tl
booklore IN CNAME traefik-cl01tl
calibre IN CNAME traefik-cl01tl
calibre-downloader IN CNAME traefik-cl01tl
ceph IN CNAME traefik-cl01tl
code-server IN CNAME traefik-cl01tl
ephemera IN CNAME traefik-cl01tl

View File

@@ -15,6 +15,6 @@ maintainers:
dependencies:
- name: generic-device-plugin
repository: https://gitea.alexlebens.dev/api/packages/alexlebens/helm
version: 0.20.0
version: 0.20.1
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kubernetes.png
appVersion: 1.0.0

View File

@@ -44,7 +44,7 @@ harbor:
core:
image:
repository: goharbor/harbor-core
tag: v2.14.0
tag: v2.14.1
replicas: 2
existingSecret: harbor-secret
secretName: harbor-secret

View File

@@ -17,7 +17,7 @@ maintainers:
- name: alexlebens
dependencies:
- name: tailscale-operator
version: 1.90.8
version: 1.90.9
repository: https://pkgs.tailscale.com/helmcharts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/tailscale-light.png
appVersion: v1.82.5

View File

@@ -73,7 +73,7 @@ etcd-backup:
s3-prune:
image:
repository: d3fk/s3cmd
tag: latest@sha256:caccff69634d420705b9f676d69e15d574fb65d1dd475b7412d3bc18df99e00f
tag: latest@sha256:7bdbd33bb3d044884598898b9e9b383385759fbd6ebf52888700bd9b0e0fab91
pullPolicy: IfNotPresent
command:
- /bin/sh

View File

@@ -10,7 +10,7 @@ metadata:
spec:
selector:
matchLabels:
app.kubernetes.io/name: garage-main
app.kubernetes.io/name: garage
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: admin

View File

@@ -135,7 +135,7 @@ garage:
data:
storageClass: synology-iscsi-delete
accessMode: ReadWriteOnce
size: 500Gi
size: 800Gi
retain: true
advancedMounts:
main:

View File

@@ -8,7 +8,7 @@ whodb:
main:
image:
repository: clidey/whodb
tag: 0.75.0
tag: 0.80.0
pullPolicy: IfNotPresent
env:
- name: WHODB_OLLAMA_HOST

View File

@@ -88,8 +88,6 @@ customDNS:
backrest IN CNAME traefik-cl01tl
bazarr IN CNAME traefik-cl01tl
booklore IN CNAME traefik-cl01tl
calibre IN CNAME traefik-cl01tl
calibre-downloader IN CNAME traefik-cl01tl
ceph IN CNAME traefik-cl01tl
code-server IN CNAME traefik-cl01tl
ephemera IN CNAME traefik-cl01tl

View File

@@ -88,8 +88,6 @@ customDNS:
backrest IN CNAME traefik-cl01tl
bazarr IN CNAME traefik-cl01tl
booklore IN CNAME traefik-cl01tl
calibre IN CNAME traefik-cl01tl
calibre-downloader IN CNAME traefik-cl01tl
ceph IN CNAME traefik-cl01tl
code-server IN CNAME traefik-cl01tl
ephemera IN CNAME traefik-cl01tl

View File

@@ -5,7 +5,7 @@ data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
compression_level = 1
compression_level = 3
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"