168 Commits

Author SHA1 Message Date
9653a824c4 chore(deps): update searxng/searxng:latest docker digest to 9206e4c (#4793)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 16s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 4m35s
2026-03-16 23:02:46 +00:00
082e159a96 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.13.0 (#4791)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 27s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 2m32s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.12.1` → `3.13.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.13.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.13.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.12.1...3.13.0)

##### Bug Fixes

- change execution mode ([a6c889f](a6c889f76a))

##### Features

- add and update pre-commit ([148fe8e](148fe8eeff))
- add fallback ([787479e](787479e077))
- add fallback ([220c29f](220c29f4f7))
- add fallback to run animations on switch ([954112e](954112e30e))
- add semantic-release/npm ([91c9a4b](91c9a4bb91))
- change paths ([9319228](9319228ef6))
- consolidate css into tailwind ([dfeb181](dfeb181a1d))
- downgrade to astro 5 ([f35c73b](f35c73b028))
- move scripts to script folder ([641c7cb](641c7cb33f))
- refactor static paths and photoswipe on blog page, move script to base layout ([93a53ca](93a53cab3d))
- remove react ([e3179b0](e3179b0480))
- revert shiki css changes ([c4104a5](c4104a52d1))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4791
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 17:59:28 +00:00
e865676f76 chore(deps): update helm release meilisearch to v0.28.0 (#4788)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m53s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 4m24s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [meilisearch](https://github.com/meilisearch/meilisearch-kubernetes/tree/main/charts/meilisearch) ([source](https://github.com/meilisearch/meilisearch-kubernetes)) | minor | `0.27.0` → `0.28.0` |

---

### Release Notes

<details>
<summary>meilisearch/meilisearch-kubernetes (meilisearch)</summary>

### [`v0.28.0`](https://github.com/meilisearch/meilisearch-kubernetes/releases/tag/meilisearch-0.28.0)

[Compare Source](https://github.com/meilisearch/meilisearch-kubernetes/compare/meilisearch-0.27.0...meilisearch-0.28.0)

A Helm chart for the Meilisearch search engine

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: #4788
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 16:03:10 +00:00
1899074f21 chore(deps): update helm release traefik-crds to v1.15.0 (#4787)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m12s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m17s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [traefik-crds](https://traefik.io/) ([source](https://github.com/traefik/traefik-helm-chart)) | minor | `1.14.0` → `1.15.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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: #4787
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 15:54:02 +00:00
33c9d0648f chore(config): migrate Renovate config (#4786)
All checks were successful
renovate / renovate (push) Successful in 5m43s
The Renovate config in this repository needs migrating. Typically this is because one or more configuration options you are using have been renamed.

  You don't need to merge this PR right away, because Renovate will continue to migrate these fields internally each time it runs. But later some of these fields may be fully deprecated and the migrations removed. So it's a good idea to merge this migration PR soon.

🔕 **Ignore**: Close this PR and you won't be reminded about config migration again, but one day your current config may no longer be valid.

 Got questions? Does something look wrong to you? Please don't hesitate to [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

Reviewed-on: #4786
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 15:27:26 +00:00
dfdbc6bff5 dev (#4785)
All checks were successful
renovate / renovate (push) Successful in 3m53s
render-manifests / render-manifests (push) Successful in 6m23s
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Reviewed-on: #4785
2026-03-16 05:14:58 +00:00
b50508a71a dev (#4776)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m1s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 2m27s
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Reviewed-on: #4776
2026-03-15 22:51:25 +00:00
61cbec9fdd chore(deps): update harbor.alexlebens.net/images/site-documentation docker tag to v0.3.0 (#4775)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 24s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-documentation](https://gitea.alexlebens.dev/alexlebens/site-documentation) | minor | `0.2.0` → `0.3.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-documentation (harbor.alexlebens.net/images/site-documentation)</summary>

### [`v0.3.0`](https://gitea.alexlebens.dev/alexlebens/site-documentation/blob/HEAD/CHANGELOG.md#030-2026-03-15)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-documentation/compare/0.2.0...0.3.0)

##### Features

- add and update pre-commit ([972bbff](972bbffb41))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4775
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 22:50:30 +00:00
742d074c3f chore(deps): update ghcr.io/linuxserver/plex:1.43.0 docker digest to 84f8646 (#4773)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m37s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 3m49s
2026-03-15 22:34:42 +00:00
06b288e17c Merge (#4771)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 42s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
Reviewed-on: #4771
2026-03-15 22:32:42 +00:00
2278a4f048 feat: add and update pre-commit (#4770)
All checks were successful
renovate / renovate (push) Successful in 1m12s
Reviewed-on: #4770
2026-03-15 21:57:31 +00:00
cdd4b0162a feat: remove old workflows (#4769)
All checks were successful
renovate / renovate (push) Successful in 2m46s
Reviewed-on: #4769
2026-03-15 21:50:42 +00:00
2e7be7edbe feat: remove push render
All checks were successful
renovate / renovate (push) Successful in 2m6s
2026-03-15 16:42:36 -05:00
383f29e421 feat: use vars
All checks were successful
renovate / renovate (push) Successful in 3m8s
2026-03-15 16:27:31 -05:00
b43cdeba18 feat: use PR instead of date
All checks were successful
renovate / renovate (push) Successful in 1m48s
2026-03-15 16:16:30 -05:00
bde7552ae1 feat: more specific condition for push event 2026-03-15 16:16:30 -05:00
3830d32c67 chore(deps): update freikin/dawarich docker tag to v1.3.4 (#4767)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 29s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 33s
renovate / renovate (push) Successful in 2m44s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [freikin/dawarich](https://github.com/Freika/dawarich) | patch | `1.3.3` → `1.3.4` |

---

### Release Notes

<details>
<summary>Freika/dawarich (freikin/dawarich)</summary>

### [`v1.3.4`](https://github.com/Freika/dawarich/blob/HEAD/CHANGELOG.md#134---2026-03-15)

[Compare Source](https://github.com/Freika/dawarich/compare/1.3.3...1.3.4)

##### Changed

- Redesigned onboarding modal with two paths: "I have data" (inline file import) and "Start tracking" (app download + QR code). New users with existing location data can now start importing within 2 clicks of signing up.
- Onboarding completion is now persisted server-side (`settings.onboarding_completed`) instead of relying solely on localStorage, preventing the modal from reappearing after browser data clears.
- Route opacity data migration now runs as a background job instead of inline during migration, improving deployment reliability for large instances.

##### Fixed

- Fix admin and supporter tooltip overflowing the page on narrow screens. [#&#8203;1449](https://github.com/Freika/dawarich/issues/1449)
- Fix date navigation arrow tooltips overlapping with the navbar on map pages. [#&#8203;2229](https://github.com/Freika/dawarich/issues/2229) [#&#8203;2100](https://github.com/Freika/dawarich/issues/2100)
- Fix infinite loading spinner when a trip has no points in its date range. [#&#8203;2293](https://github.com/Freika/dawarich/issues/2293)
- Fix Insights monthly digest panels disappearing when switching months. [#&#8203;2305](https://github.com/Freika/dawarich/issues/2305)
- Fix suggested visit confirm/decline not removing the visit from the list. [#&#8203;2307](https://github.com/Freika/dawarich/issues/2307)
- Fix Stats page reloading when clicking "countries, cities" link. [#&#8203;2270](https://github.com/Freika/dawarich/issues/2270)
- Fix map base layer selection not being restored after page reload (Maps v1). [#&#8203;2093](https://github.com/Freika/dawarich/issues/2093)
- Fix duplicate country names in stats caused by geocoder returning different spellings. [#&#8203;2044](https://github.com/Freika/dawarich/issues/2044)
- Fix total distance display overlapping layer picker when distance is in miles. [#&#8203;2017](https://github.com/Freika/dawarich/issues/2017)
- Fix default route opacity displaying as 6000% for new users. [#&#8203;1891](https://github.com/Freika/dawarich/issues/1891)
- Fix shared month stats map missing hexagons from the last day of the month. [#&#8203;1934](https://github.com/Freika/dawarich/issues/1934)
- Fix Nominatim reverse geocoder producing all places named "Suggested place" instead of actual place names. [#&#8203;2182](https://github.com/Freika/dawarich/issues/2182)
- Fix IDL-crossing route segmenter returning inconsistent coordinate types. `unwrapCoordinates` now always returns a uniform array-of-arrays structure. [#&#8203;2038](https://github.com/Freika/dawarich/issues/2038)
- Fix a migration taking too long. [#&#8203;2375](https://github.com/Freika/dawarich/issues/2375)
- Fix family sharing not including the requesting user's own location. [#&#8203;2153](https://github.com/Freika/dawarich/issues/2153)
- The "Destroy" button on the trip page is now orange. [#&#8203;2348](https://github.com/Freika/dawarich/issues/2348)

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4767
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 21:06:09 +00:00
92892732d0 chore(deps): update dependency freika/dawarich to v1.3.4 (#4766)
All checks were successful
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 17s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m33s
2026-03-15 20:49:21 +00:00
d71b0597cc chore(deps): update dependency binwiederhier/ntfy to v2.19.0 (#4755)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 11s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 33s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [binwiederhier/ntfy](https://github.com/binwiederhier/ntfy) | minor | `2.18.0` → `2.19.0` |
| [binwiederhier/ntfy](https://ntfy.sh/) ([source](https://github.com/binwiederhier/ntfy)) | minor | `v2.18.0` → `v2.19.0` |

---

### Release Notes

<details>
<summary>binwiederhier/ntfy (binwiederhier/ntfy)</summary>

### [`v2.19.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.19.0)

[Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.18.0...v2.19.0)

This is a fast-follow release that enables Postgres read replica support.

To offload read-heavy queries from the primary database, you can optionally configure one or more read replicas using the `database-replica-urls` option. When configured, non-critical read-only queries (e.g. fetching messages, checking access permissions, etc) are distributed across the replicas using round-robin, while all writes and correctness-critical reads continue to go to the primary. If a replica becomes unhealthy, ntfy automatically falls back to the primary until the replica recovers.

**Features:**

- Support [PostgreSQL read replicas](https://docs.ntfy.sh/config/#postgresql-experimental) for offloading non-critical read queries via `database-replica-urls` config option ([#&#8203;1648](https://github.com/binwiederhier/ntfy/pull/1648))
- Add interactive [config generator](https://docs.ntfy.sh/config/#config-generator) to the documentation to help create server configuration files ([#&#8203;1654](https://github.com/binwiederhier/ntfy/pull/1654))

**Bug fixes + maintenance:**

- Web: Throttle notification sound in web app to play at most once every 2 seconds (similar to [#&#8203;1550](https://github.com/binwiederhier/ntfy/issues/1550), thanks to [@&#8203;jlaffaye](https://github.com/jlaffaye) for reporting)
- Web: Add hover tooltips to icon buttons in web app account and preferences pages ([#&#8203;1565](https://github.com/binwiederhier/ntfy/issues/1565), thanks to [@&#8203;jermanuts](https://github.com/jermanuts) for reporting)

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4755
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:46:41 +00:00
1a70faa2e9 feat: use the user url for messages
All checks were successful
renovate / renovate (push) Successful in 2m4s
2026-03-15 15:40:46 -05:00
e1e54e567d feat: more specific condition for push event 2026-03-15 15:40:46 -05:00
3daa236d8c chore(deps): update kube-prometheus-stack docker tag to v82.10.4 (#4763)
All checks were successful
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m8s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m45s
2026-03-15 20:38:33 +00:00
d764dbc6d2 chore(deps): update helm release generic-device-plugin to v0.20.22 (#4761)
Some checks failed
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
2026-03-15 20:36:24 +00:00
44104ba195 chore(deps): update dependency outline/outline to v1.6.0 (#4756)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 22s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 32s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [outline/outline](https://github.com/outline/outline) | minor | `1.5.0` → `1.6.0` |

---

### Release Notes

<details>
<summary>outline/outline (outline/outline)</summary>

### [`v1.6.0`](https://github.com/outline/outline/releases/tag/v1.6.0)

[Compare Source](https://github.com/outline/outline/compare/v1.5.0...v1.6.0)

#### What's Changed

##### Highlights

- Added a built-in MCP (Model Context Protocol) server, allowing AI assistants like Claude, Cursor, and Mistral to securely interact with the knowledge base. This is disabled by default for existing workspaces – see more details in the [docs](https://docs.getoutline.com/s/guide/doc/mcp-6j9jtENNKL).
- New GitLab integration allows previewing issues, merge requests, and projects in documents. Connect GitLab cloud, self-hosted, or both!
- A new "Present" mode allows presenting any document as formatted slides based on headers and dividers. See [docs](https://docs.getoutline.com/s/guide/doc/present-mode-yMGzaY7A9L).

##### Other Improvements

- Fortran and ABAP language support added to code blocks in [#&#8203;11471](https://github.com/outline/outline/pull/11471)
- OAuth provider now supports dynamic client registration in [#&#8203;11462](https://github.com/outline/outline/pull/11462)
- Added support for rich Linear, GitHub, and GitLab project mentions
- It is now possible to insert templates from the block menu in [#&#8203;11647](https://github.com/outline/outline/pull/11647)
- Embed integrations shown in the editor are now configurable in **Settings -> Integrations -> Embeds** in [#&#8203;11612](https://github.com/outline/outline/pull/11612)
- Toggle blocks can now be closed/open by clicking on the title in [#&#8203;11469](https://github.com/outline/outline/pull/11469)
- Add `Meta+Shift+I` shortcut for opening Insights in [#&#8203;11492](https://github.com/outline/outline/pull/11492)
- Added webhook category for file attachments in [#&#8203;11494](https://github.com/outline/outline/pull/11494)
- Child documents are now shown in the markdown for shared documents in [#&#8203;11495](https://github.com/outline/outline/pull/11495)
- Much smaller initial javascript bundle in [#&#8203;11518](https://github.com/outline/outline/pull/11518)
- Added support for configurable proxy IP header in environment settings by [@&#8203;ashleysommer](https://github.com/ashleysommer) in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- Added text wrap option for code blocks in [#&#8203;11614](https://github.com/outline/outline/pull/11614)
- Support rendering any shared doc as Markdown by adding `.md` extension ([example](https://docs.getoutline.com/s/guide.md)) in [#&#8203;11668](https://github.com/outline/outline/pull/11668)
- Added support for the ELK layout engine in Mermaid diagrams in [#&#8203;11631](https://github.com/outline/outline/pull/11631)
- Added FontAwesome icon support to Mermaid diagrams in [#&#8203;11704](https://github.com/outline/outline/pull/11704)
- There is now an option to toggle all notifications in [#&#8203;11713](https://github.com/outline/outline/pull/11713)
- Added an "Open in Desktop" option to document menu in [#&#8203;11729](https://github.com/outline/outline/pull/11729)
- It is now possible to toggle the preview display for attached PDFs in [#&#8203;11746](https://github.com/outline/outline/pull/11746)
- `CMD+Shift+L` shortcut now works to toggle theme on publicly shared pages in [#&#8203;11750](https://github.com/outline/outline/pull/11750)
- Discord will no longer re-prompt authorization for existing grants by [@&#8203;lrstanley](https://github.com/lrstanley) in [#&#8203;11757](https://github.com/outline/outline/pull/11757)
- Small facelift of integrations directory in [#&#8203;11516](https://github.com/outline/outline/pull/11516) and group management
- API: Added new `templates.list`, `templates.create`, `templates.info` etc endpoints to manage templates in [#&#8203;11027](https://github.com/outline/outline/pull/11027)

##### Fixes

- Fixed an issue with pagination on search results in [#&#8203;11489](https://github.com/outline/outline/pull/11489)
- Fixed an issue where the find and replace dialog immediately closes when opened on mobile devices in [#&#8203;11497](https://github.com/outline/outline/pull/11497)
- Improved caching behavior by ignoring the browser cache for the diagram extension in [#&#8203;11498](https://github.com/outline/outline/pull/11498)
- Fixed an issue where the read-only collection editor would not remount correctly when navigating in [#&#8203;11499](https://github.com/outline/outline/pull/11499)
- Fixed overly greedy background highlighting in the editor in [#&#8203;11500](https://github.com/outline/outline/pull/11500)
- Resolved multiple issues related to sticky headers on tables in [#&#8203;11501](https://github.com/outline/outline/pull/11501)
- Improved performance by applying initial decorations earlier for toggle blocks in [#&#8203;11493](https://github.com/outline/outline/pull/11493)
- Improved the accuracy of touch device detection in [#&#8203;11515](https://github.com/outline/outline/pull/11515)
- Improved performance by protecting against thundering herd issues in the SSO access validation task in [#&#8203;11532](https://github.com/outline/outline/pull/11532)
- Improved performance by optimizing a slow database query in the notification helper in [#&#8203;11534](https://github.com/outline/outline/pull/11534)
- Improved performance by moving image downloads outside of database transactions in [#&#8203;11528](https://github.com/outline/outline/pull/11528)
- Fixed an issue where a duplicate Korean IME character would be inserted when pressing Enter in the search bar by [@&#8203;huiseo](https://github.com/huiseo) in [#&#8203;11543](https://github.com/outline/outline/pull/11543)
- Fixed an issue where split comment marks were not correctly updated or deleted in [#&#8203;11537](https://github.com/outline/outline/pull/11537)
- Added handling for network failures in the installation info endpoint for isolated environments in [#&#8203;11546](https://github.com/outline/outline/pull/11546)
- Fixed a printing error caused by timing issues with React's `queueMicrotask` in [#&#8203;11551](https://github.com/outline/outline/pull/11551)
- Improved performance by optimizing the user memberships query in [#&#8203;11553](https://github.com/outline/outline/pull/11553)
- Fixed styling issues by adding a read-only guard on table cell selections in [#&#8203;11555](https://github.com/outline/outline/pull/11555)
- Fixed an issue in the Notion importer where child page mentions were being ignored in [#&#8203;11567](https://github.com/outline/outline/pull/11567)
- Fixed an issue with the misuse of database transactions in document revision endpoints in [#&#8203;11574](https://github.com/outline/outline/pull/11574)
- Fixed an issue by properly wrapping the content of toggle blocks in [#&#8203;11577](https://github.com/outline/outline/pull/11577)
- Improved performance by caching user collection IDs in [#&#8203;11579](https://github.com/outline/outline/pull/11579)
- Fixed a memory leak where failed webhooks were held in memory after a timeout in [#&#8203;11580](https://github.com/outline/outline/pull/11580)
- Improved database performance by removing unnecessarily complex joins in [#&#8203;11581](https://github.com/outline/outline/pull/11581)
- Fixed horizontal text overflow issues in notification emails in [#&#8203;11584](https://github.com/outline/outline/pull/11584)
- Fixed support for toggling nested lists within completed checkbox items in [#&#8203;11583](https://github.com/outline/outline/pull/11583)
- Fixed an issue where an empty state would briefly flash in the mention menu in [#&#8203;11587](https://github.com/outline/outline/pull/11587)
- Fixed issues by normalizing the edit state in the collection overview in [#&#8203;11586](https://github.com/outline/outline/pull/11586)
- Improved performance to prevent database lockups when presenting lists of imported documents in [#&#8203;11591](https://github.com/outline/outline/pull/11591)
- Fixed UUID escaping for custom emojis during document creation via the API in [#&#8203;11594](https://github.com/outline/outline/pull/11594)
- Fixed an issue where searches within public docs were incorrectly including internal popularity scores in [#&#8203;11598](https://github.com/outline/outline/pull/11598)
- Fixed an issue with the rank ordering of search results in [#&#8203;11599](https://github.com/outline/outline/pull/11599)
- Improved the appearance and functionality of the search popover on public documents in [#&#8203;11601](https://github.com/outline/outline/pull/11601)
- Fixed visual and functional issues with the notifications popover in [#&#8203;11602](https://github.com/outline/outline/pull/11602)
- Increased the request timeout for file creation to better support uploading large files in [#&#8203;11570](https://github.com/outline/outline/pull/11570)
- Fixed a misalignment issue with the right sidebar header in [#&#8203;11539](https://github.com/outline/outline/pull/11539)
- Fixed issues related to rendering Mermaid diagrams in [#&#8203;11604](https://github.com/outline/outline/pull/11604)
- Fixed a visual issue where the search sorting control would wrap onto its own line in [#&#8203;11606](https://github.com/outline/outline/pull/11606)
- Made a variety of performance improvements to the `ProsemirrorHelper` in [#&#8203;11554](https://github.com/outline/outline/pull/11554)
- Fixed an issue where the sidebar would briefly flash upon initial page load in [#&#8203;11607](https://github.com/outline/outline/pull/11607)
- Ensured that documents are removed from the starred list when they are archived in [#&#8203;11611](https://github.com/outline/outline/pull/11611)
- Improved performance by verifying websocket connections before querying the database in [#&#8203;11620](https://github.com/outline/outline/pull/11620)
- Updated the rate limiter to use a combination of user ID and IP address for better accuracy in [#&#8203;11613](https://github.com/outline/outline/pull/11613)
- Fixed an issue to ensure diagram file formats (PNG/SVG) are preserved when editing in [#&#8203;11622](https://github.com/outline/outline/pull/11622)
- Added a security limit of 10 attempts for OTP (One-Time Password) logins in [#&#8203;11623](https://github.com/outline/outline/pull/11623)
- Fixed issues related to avatar uploads in [#&#8203;11624](https://github.com/outline/outline/pull/11624)
- Improved performance by including the collection's `updatedAt` property in websocket payloads in [#&#8203;11628](https://github.com/outline/outline/pull/11628)
- Improved performance by adding API request deduplication in [#&#8203;11629](https://github.com/outline/outline/pull/11629)
- Upgraded `framer-motion` to version 5 to resolve issues with tab animations in [#&#8203;11632](https://github.com/outline/outline/pull/11632)
- Fixed an issue by skipping link unfurling attempts for non-HTTP/HTTPS URLs in [#&#8203;11640](https://github.com/outline/outline/pull/11640)
- Improved reliability by validating OAuth client IDs as UUIDs before querying the database in [#&#8203;11653](https://github.com/outline/outline/pull/11653)
- Fixed an issue to ensure sourced permissions are correctly rebuilt when a document is moved in [#&#8203;11229](https://github.com/outline/outline/pull/11229)
- Improved navigation visuals by highlighting the parent menu item when its submenu is open in [#&#8203;11659](https://github.com/outline/outline/pull/11659)
- Fixed an issue where the ESC key was not working to close the Share popover in [#&#8203;11662](https://github.com/outline/outline/pull/11662)
- Removed the hidden star control from document list items on mobile devices in [#&#8203;11655](https://github.com/outline/outline/pull/11655)
- Fixed an issue that caused database deadlocks when inserting into subscriptions in [#&#8203;11667](https://github.com/outline/outline/pull/11667)
- Removed the deprecated `datadog-metrics` library in [#&#8203;11665](https://github.com/outline/outline/pull/11665)
- Fixed an issue where @&#8203;mentions on mobile were being inserted at the incorrect position in [#&#8203;11671](https://github.com/outline/outline/pull/11671)
- Fixed incorrect visual nesting of items in the document explorer in [#&#8203;11680](https://github.com/outline/outline/pull/11680)
- Improved the accuracy of user membership policy checks in [#&#8203;11687](https://github.com/outline/outline/pull/11687)
- Improved performance by avoiding the instantiation of unnecessary editor extensions in read-only mode in [#&#8203;11681](https://github.com/outline/outline/pull/11681)
- Added a missing check for enabled passkeys in the verification endpoint in [#&#8203;11689](https://github.com/outline/outline/pull/11689)
- Increased the font size within code blocks for better readability in [#&#8203;11690](https://github.com/outline/outline/pull/11690)
- Fixed an issue to ensure comments on nodes are correctly stripped when duplicating a document in [#&#8203;11700](https://github.com/outline/outline/pull/11700)
- Moved warning-level logs from Sentry to standard logging outputs in [#&#8203;11708](https://github.com/outline/outline/pull/11708)
- Added support for the German (`de_DE`) long-date format in localized time display by [@&#8203;iljalukin](https://github.com/iljalukin) in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- Removed the deprecated usage of `ALLOWED_DOMAINS` and `GOOGLE_ALLOWED_DOMAINS` environment variables by [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- Improved database performance by optimizing query pagination in [#&#8203;11726](https://github.com/outline/outline/pull/11726)
- Fixed a visual issue where the document explorer would jump when hovered over with the pointer in [#&#8203;11727](https://github.com/outline/outline/pull/11727)
- Fixed incorrect policy enforcement for file operations in [#&#8203;11728](https://github.com/outline/outline/pull/11728)
- Fixed an issue by properly filtering relationships returned from the list endpoint in [#&#8203;11738](https://github.com/outline/outline/pull/11738)
- Ensured that "Passkey" is only displayed on login screen if the workspace has actually used them in [#&#8203;11748](https://github.com/outline/outline/pull/11748)
- Changed the default behavior so that PDF attachments are no longer embedded automatically upon drag upload in [#&#8203;11745](https://github.com/outline/outline/pull/11745)
- Fixed an issue that caused stale collaborator IDs to be retained in [#&#8203;11749](https://github.com/outline/outline/pull/11749)
- Moved the group management interface to a dedicated sub-page for better organization in [#&#8203;11755](https://github.com/outline/outline/pull/11755)

#### New Contributors

- [@&#8203;ashleysommer](https://github.com/ashleysommer) made their first contribution in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- [@&#8203;iljalukin](https://github.com/iljalukin) made their first contribution in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) made their first contribution in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- [@&#8203;Daniel15](https://github.com/Daniel15) made their first contribution in [#&#8203;11731](https://github.com/outline/outline/pull/11731)
- [@&#8203;lrstanley](https://github.com/lrstanley) made their first contribution in [#&#8203;11757](https://github.com/outline/outline/pull/11757)

**Full Changelog**: <https://github.com/outline/outline/compare/v1.5.0...v1.6.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4756
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:32:01 +00:00
45754be712 chore(deps): update outlinewiki/outline docker tag to v1.6.0 (#4757)
Some checks failed
lint-test-helm / validate-kubeconform (push) Has been cancelled
lint-test-helm / lint-helm (push) Has started running
render-manifests / render-manifests (push) Has started running
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [outlinewiki/outline](https://github.com/outline/outline) | minor | `1.5.0` → `1.6.0` |

---

### Release Notes

<details>
<summary>outline/outline (outlinewiki/outline)</summary>

### [`v1.6.0`](https://github.com/outline/outline/releases/tag/v1.6.0)

[Compare Source](https://github.com/outline/outline/compare/v1.5.0...v1.6.0)

##### What's Changed

##### Highlights

- Added a built-in MCP (Model Context Protocol) server, allowing AI assistants like Claude, Cursor, and Mistral to securely interact with the knowledge base. This is disabled by default for existing workspaces – see more details in the [docs](https://docs.getoutline.com/s/guide/doc/mcp-6j9jtENNKL).
- New GitLab integration allows previewing issues, merge requests, and projects in documents. Connect GitLab cloud, self-hosted, or both!
- A new "Present" mode allows presenting any document as formatted slides based on headers and dividers. See [docs](https://docs.getoutline.com/s/guide/doc/present-mode-yMGzaY7A9L).

##### Other Improvements

- Fortran and ABAP language support added to code blocks in [#&#8203;11471](https://github.com/outline/outline/pull/11471)
- OAuth provider now supports dynamic client registration in [#&#8203;11462](https://github.com/outline/outline/pull/11462)
- Added support for rich Linear, GitHub, and GitLab project mentions
- It is now possible to insert templates from the block menu in [#&#8203;11647](https://github.com/outline/outline/pull/11647)
- Embed integrations shown in the editor are now configurable in **Settings -> Integrations -> Embeds** in [#&#8203;11612](https://github.com/outline/outline/pull/11612)
- Toggle blocks can now be closed/open by clicking on the title in [#&#8203;11469](https://github.com/outline/outline/pull/11469)
- Add `Meta+Shift+I` shortcut for opening Insights in [#&#8203;11492](https://github.com/outline/outline/pull/11492)
- Added webhook category for file attachments in [#&#8203;11494](https://github.com/outline/outline/pull/11494)
- Child documents are now shown in the markdown for shared documents in [#&#8203;11495](https://github.com/outline/outline/pull/11495)
- Much smaller initial javascript bundle in [#&#8203;11518](https://github.com/outline/outline/pull/11518)
- Added support for configurable proxy IP header in environment settings by [@&#8203;ashleysommer](https://github.com/ashleysommer) in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- Added text wrap option for code blocks in [#&#8203;11614](https://github.com/outline/outline/pull/11614)
- Support rendering any shared doc as Markdown by adding `.md` extension ([example](https://docs.getoutline.com/s/guide.md)) in [#&#8203;11668](https://github.com/outline/outline/pull/11668)
- Added support for the ELK layout engine in Mermaid diagrams in [#&#8203;11631](https://github.com/outline/outline/pull/11631)
- Added FontAwesome icon support to Mermaid diagrams in [#&#8203;11704](https://github.com/outline/outline/pull/11704)
- There is now an option to toggle all notifications in [#&#8203;11713](https://github.com/outline/outline/pull/11713)
- Added an "Open in Desktop" option to document menu in [#&#8203;11729](https://github.com/outline/outline/pull/11729)
- It is now possible to toggle the preview display for attached PDFs in [#&#8203;11746](https://github.com/outline/outline/pull/11746)
- `CMD+Shift+L` shortcut now works to toggle theme on publicly shared pages in [#&#8203;11750](https://github.com/outline/outline/pull/11750)
- Discord will no longer re-prompt authorization for existing grants by [@&#8203;lrstanley](https://github.com/lrstanley) in [#&#8203;11757](https://github.com/outline/outline/pull/11757)
- Small facelift of integrations directory in [#&#8203;11516](https://github.com/outline/outline/pull/11516) and group management
- API: Added new `templates.list`, `templates.create`, `templates.info` etc endpoints to manage templates in [#&#8203;11027](https://github.com/outline/outline/pull/11027)

##### Fixes

- Fixed an issue with pagination on search results in [#&#8203;11489](https://github.com/outline/outline/pull/11489)
- Fixed an issue where the find and replace dialog immediately closes when opened on mobile devices in [#&#8203;11497](https://github.com/outline/outline/pull/11497)
- Improved caching behavior by ignoring the browser cache for the diagram extension in [#&#8203;11498](https://github.com/outline/outline/pull/11498)
- Fixed an issue where the read-only collection editor would not remount correctly when navigating in [#&#8203;11499](https://github.com/outline/outline/pull/11499)
- Fixed overly greedy background highlighting in the editor in [#&#8203;11500](https://github.com/outline/outline/pull/11500)
- Resolved multiple issues related to sticky headers on tables in [#&#8203;11501](https://github.com/outline/outline/pull/11501)
- Improved performance by applying initial decorations earlier for toggle blocks in [#&#8203;11493](https://github.com/outline/outline/pull/11493)
- Improved the accuracy of touch device detection in [#&#8203;11515](https://github.com/outline/outline/pull/11515)
- Improved performance by protecting against thundering herd issues in the SSO access validation task in [#&#8203;11532](https://github.com/outline/outline/pull/11532)
- Improved performance by optimizing a slow database query in the notification helper in [#&#8203;11534](https://github.com/outline/outline/pull/11534)
- Improved performance by moving image downloads outside of database transactions in [#&#8203;11528](https://github.com/outline/outline/pull/11528)
- Fixed an issue where a duplicate Korean IME character would be inserted when pressing Enter in the search bar by [@&#8203;huiseo](https://github.com/huiseo) in [#&#8203;11543](https://github.com/outline/outline/pull/11543)
- Fixed an issue where split comment marks were not correctly updated or deleted in [#&#8203;11537](https://github.com/outline/outline/pull/11537)
- Added handling for network failures in the installation info endpoint for isolated environments in [#&#8203;11546](https://github.com/outline/outline/pull/11546)
- Fixed a printing error caused by timing issues with React's `queueMicrotask` in [#&#8203;11551](https://github.com/outline/outline/pull/11551)
- Improved performance by optimizing the user memberships query in [#&#8203;11553](https://github.com/outline/outline/pull/11553)
- Fixed styling issues by adding a read-only guard on table cell selections in [#&#8203;11555](https://github.com/outline/outline/pull/11555)
- Fixed an issue in the Notion importer where child page mentions were being ignored in [#&#8203;11567](https://github.com/outline/outline/pull/11567)
- Fixed an issue with the misuse of database transactions in document revision endpoints in [#&#8203;11574](https://github.com/outline/outline/pull/11574)
- Fixed an issue by properly wrapping the content of toggle blocks in [#&#8203;11577](https://github.com/outline/outline/pull/11577)
- Improved performance by caching user collection IDs in [#&#8203;11579](https://github.com/outline/outline/pull/11579)
- Fixed a memory leak where failed webhooks were held in memory after a timeout in [#&#8203;11580](https://github.com/outline/outline/pull/11580)
- Improved database performance by removing unnecessarily complex joins in [#&#8203;11581](https://github.com/outline/outline/pull/11581)
- Fixed horizontal text overflow issues in notification emails in [#&#8203;11584](https://github.com/outline/outline/pull/11584)
- Fixed support for toggling nested lists within completed checkbox items in [#&#8203;11583](https://github.com/outline/outline/pull/11583)
- Fixed an issue where an empty state would briefly flash in the mention menu in [#&#8203;11587](https://github.com/outline/outline/pull/11587)
- Fixed issues by normalizing the edit state in the collection overview in [#&#8203;11586](https://github.com/outline/outline/pull/11586)
- Improved performance to prevent database lockups when presenting lists of imported documents in [#&#8203;11591](https://github.com/outline/outline/pull/11591)
- Fixed UUID escaping for custom emojis during document creation via the API in [#&#8203;11594](https://github.com/outline/outline/pull/11594)
- Fixed an issue where searches within public docs were incorrectly including internal popularity scores in [#&#8203;11598](https://github.com/outline/outline/pull/11598)
- Fixed an issue with the rank ordering of search results in [#&#8203;11599](https://github.com/outline/outline/pull/11599)
- Improved the appearance and functionality of the search popover on public documents in [#&#8203;11601](https://github.com/outline/outline/pull/11601)
- Fixed visual and functional issues with the notifications popover in [#&#8203;11602](https://github.com/outline/outline/pull/11602)
- Increased the request timeout for file creation to better support uploading large files in [#&#8203;11570](https://github.com/outline/outline/pull/11570)
- Fixed a misalignment issue with the right sidebar header in [#&#8203;11539](https://github.com/outline/outline/pull/11539)
- Fixed issues related to rendering Mermaid diagrams in [#&#8203;11604](https://github.com/outline/outline/pull/11604)
- Fixed a visual issue where the search sorting control would wrap onto its own line in [#&#8203;11606](https://github.com/outline/outline/pull/11606)
- Made a variety of performance improvements to the `ProsemirrorHelper` in [#&#8203;11554](https://github.com/outline/outline/pull/11554)
- Fixed an issue where the sidebar would briefly flash upon initial page load in [#&#8203;11607](https://github.com/outline/outline/pull/11607)
- Ensured that documents are removed from the starred list when they are archived in [#&#8203;11611](https://github.com/outline/outline/pull/11611)
- Improved performance by verifying websocket connections before querying the database in [#&#8203;11620](https://github.com/outline/outline/pull/11620)
- Updated the rate limiter to use a combination of user ID and IP address for better accuracy in [#&#8203;11613](https://github.com/outline/outline/pull/11613)
- Fixed an issue to ensure diagram file formats (PNG/SVG) are preserved when editing in [#&#8203;11622](https://github.com/outline/outline/pull/11622)
- Added a security limit of 10 attempts for OTP (One-Time Password) logins in [#&#8203;11623](https://github.com/outline/outline/pull/11623)
- Fixed issues related to avatar uploads in [#&#8203;11624](https://github.com/outline/outline/pull/11624)
- Improved performance by including the collection's `updatedAt` property in websocket payloads in [#&#8203;11628](https://github.com/outline/outline/pull/11628)
- Improved performance by adding API request deduplication in [#&#8203;11629](https://github.com/outline/outline/pull/11629)
- Upgraded `framer-motion` to version 5 to resolve issues with tab animations in [#&#8203;11632](https://github.com/outline/outline/pull/11632)
- Fixed an issue by skipping link unfurling attempts for non-HTTP/HTTPS URLs in [#&#8203;11640](https://github.com/outline/outline/pull/11640)
- Improved reliability by validating OAuth client IDs as UUIDs before querying the database in [#&#8203;11653](https://github.com/outline/outline/pull/11653)
- Fixed an issue to ensure sourced permissions are correctly rebuilt when a document is moved in [#&#8203;11229](https://github.com/outline/outline/pull/11229)
- Improved navigation visuals by highlighting the parent menu item when its submenu is open in [#&#8203;11659](https://github.com/outline/outline/pull/11659)
- Fixed an issue where the ESC key was not working to close the Share popover in [#&#8203;11662](https://github.com/outline/outline/pull/11662)
- Removed the hidden star control from document list items on mobile devices in [#&#8203;11655](https://github.com/outline/outline/pull/11655)
- Fixed an issue that caused database deadlocks when inserting into subscriptions in [#&#8203;11667](https://github.com/outline/outline/pull/11667)
- Removed the deprecated `datadog-metrics` library in [#&#8203;11665](https://github.com/outline/outline/pull/11665)
- Fixed an issue where @&#8203;mentions on mobile were being inserted at the incorrect position in [#&#8203;11671](https://github.com/outline/outline/pull/11671)
- Fixed incorrect visual nesting of items in the document explorer in [#&#8203;11680](https://github.com/outline/outline/pull/11680)
- Improved the accuracy of user membership policy checks in [#&#8203;11687](https://github.com/outline/outline/pull/11687)
- Improved performance by avoiding the instantiation of unnecessary editor extensions in read-only mode in [#&#8203;11681](https://github.com/outline/outline/pull/11681)
- Added a missing check for enabled passkeys in the verification endpoint in [#&#8203;11689](https://github.com/outline/outline/pull/11689)
- Increased the font size within code blocks for better readability in [#&#8203;11690](https://github.com/outline/outline/pull/11690)
- Fixed an issue to ensure comments on nodes are correctly stripped when duplicating a document in [#&#8203;11700](https://github.com/outline/outline/pull/11700)
- Moved warning-level logs from Sentry to standard logging outputs in [#&#8203;11708](https://github.com/outline/outline/pull/11708)
- Added support for the German (`de_DE`) long-date format in localized time display by [@&#8203;iljalukin](https://github.com/iljalukin) in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- Removed the deprecated usage of `ALLOWED_DOMAINS` and `GOOGLE_ALLOWED_DOMAINS` environment variables by [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- Improved database performance by optimizing query pagination in [#&#8203;11726](https://github.com/outline/outline/pull/11726)
- Fixed a visual issue where the document explorer would jump when hovered over with the pointer in [#&#8203;11727](https://github.com/outline/outline/pull/11727)
- Fixed incorrect policy enforcement for file operations in [#&#8203;11728](https://github.com/outline/outline/pull/11728)
- Fixed an issue by properly filtering relationships returned from the list endpoint in [#&#8203;11738](https://github.com/outline/outline/pull/11738)
- Ensured that "Passkey" is only displayed on login screen if the workspace has actually used them in [#&#8203;11748](https://github.com/outline/outline/pull/11748)
- Changed the default behavior so that PDF attachments are no longer embedded automatically upon drag upload in [#&#8203;11745](https://github.com/outline/outline/pull/11745)
- Fixed an issue that caused stale collaborator IDs to be retained in [#&#8203;11749](https://github.com/outline/outline/pull/11749)
- Moved the group management interface to a dedicated sub-page for better organization in [#&#8203;11755](https://github.com/outline/outline/pull/11755)

##### New Contributors

- [@&#8203;ashleysommer](https://github.com/ashleysommer) made their first contribution in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- [@&#8203;iljalukin](https://github.com/iljalukin) made their first contribution in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) made their first contribution in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- [@&#8203;Daniel15](https://github.com/Daniel15) made their first contribution in [#&#8203;11731](https://github.com/outline/outline/pull/11731)
- [@&#8203;lrstanley](https://github.com/lrstanley) made their first contribution in [#&#8203;11757](https://github.com/outline/outline/pull/11757)

**Full Changelog**: <https://github.com/outline/outline/compare/v1.5.0...v1.6.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4757
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:31:37 +00:00
0e9d1eb85d chore(deps): update postgres-cluster docker tag to v7.10.0 (#4758)
Some checks failed
renovate / renovate (push) Successful in 1m46s
render-manifests / render-manifests (push) Successful in 1m48s
lint-test-helm / validate-kubeconform (push) Has been cancelled
lint-test-helm / lint-helm (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [postgres-cluster](https://github.com/cloudnative-pg/cloudnative-pg) | minor | `7.9.1` → `7.10.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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiLCJpbWFnZSJdfQ==-->

Reviewed-on: #4758
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:25:47 +00:00
1062e4cb3c feat: specify http port
All checks were successful
render-manifests / render-manifests (push) Successful in 43s
lint-test-helm / lint-helm (push) Successful in 1m7s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 8m55s
2026-03-15 15:02:19 -05:00
7dac56f404 chore(deps): update ghcr.io/linuxserver/qbittorrent:5.1.4 docker digest to 855e5f4 (#4753)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 21s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 8m24s
renovate / renovate (push) Successful in 1m22s
2026-03-15 08:03:46 +00:00
649b9f4bbe chore(config): migrate Renovate config (#4752)
All checks were successful
renovate / renovate (push) Successful in 3m8s
The Renovate config in this repository needs migrating. Typically this is because one or more configuration options you are using have been renamed.

  You don't need to merge this PR right away, because Renovate will continue to migrate these fields internally each time it runs. But later some of these fields may be fully deprecated and the migrations removed. So it's a good idea to merge this migration PR soon.

🔕 **Ignore**: Close this PR and you won't be reminded about config migration again, but one day your current config may no longer be valid.

 Got questions? Does something look wrong to you? Please don't hesitate to [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

Reviewed-on: #4752
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 06:08:46 +00:00
27151632c0 feat: add description
All checks were successful
lint-test-helm / lint-helm (push) Successful in 50s
render-manifests / render-manifests (push) Successful in 49s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m48s
2026-03-15 01:00:58 -05:00
04ff752696 feat: add renovate tags for specific images 2026-03-15 01:00:28 -05:00
d373ba5ae9 feat: renovate for kubeconform 2026-03-15 00:54:33 -05:00
e00b12f619 feat: update helm and use renovate to keep it updated 2026-03-15 00:52:57 -05:00
6cb0c2e987 feat: remove if
All checks were successful
renovate / renovate (push) Successful in 1m27s
2026-03-15 00:44:06 -05:00
088c4ae827 feat: remove link to wiki
All checks were successful
lint-test-helm / lint-helm (push) Successful in 14s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 33s
renovate / renovate (push) Successful in 2m46s
2026-03-15 00:39:46 -05:00
e00766e4b0 feat: add cache
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-15 00:39:04 -05:00
79b301e4ef feat: add helm repos
All checks were successful
renovate / renovate (push) Successful in 1m26s
2026-03-15 00:34:47 -05:00
e1bf47f045 feat: improve linking 2026-03-15 00:33:28 -05:00
0315445a50 feat: add kubeconform job
All checks were successful
renovate / renovate (push) Successful in 1m40s
2026-03-15 00:25:35 -05:00
6450588d17 feat: refactor and improve steps
All checks were successful
renovate / renovate (push) Successful in 1m40s
2026-03-15 00:10:28 -05:00
4dd98f9581 feat: refactor and improve steps
All checks were successful
renovate / renovate (push) Successful in 3m34s
2026-03-15 00:05:19 -05:00
702ffc65da feat: use hyphen for consistency
All checks were successful
renovate / renovate (push) Successful in 1m27s
2026-03-14 23:38:35 -05:00
2372ab4b69 feat: add dir output to render
All checks were successful
renovate / renovate (push) Successful in 1m43s
2026-03-14 23:33:15 -05:00
ed57ae842b feat: ignore oci repo
All checks were successful
renovate / renovate (push) Successful in 1m33s
2026-03-14 23:26:46 -05:00
9099d66bd8 feat: group output
All checks were successful
renovate / renovate (push) Successful in 1m35s
2026-03-14 23:22:46 -05:00
b8447dd0ed feat: add update pr step 2026-03-14 23:22:03 -05:00
c373ee4844 feat: improve formatting, revert yq strip command
All checks were successful
renovate / renovate (push) Successful in 1m26s
2026-03-14 23:19:31 -05:00
da8ba776e8 feat: consolidate render workflows to 1
All checks were successful
renovate / renovate (push) Successful in 1m55s
2026-03-14 23:07:57 -05:00
b4afd2ab46 feat: upgrade chart to v1
All checks were successful
lint-test-helm / lint-helm (push) Successful in 11s
render-manifests-push / render-manifests-push (push) Successful in 2m10s
renovate / renovate (push) Successful in 1m18s
2026-03-14 21:08:24 -05:00
d0d9380b93 chore(deps): update booklore-app/booklore to v2.2.1 (#4747)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 14s
renovate / renovate (push) Has been cancelled
2026-03-15 02:06:18 +00:00
c435ba993e feat: refactor and improve steps
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-14 21:04:35 -05:00
85aa62b529 feat: remove link to wiki
All checks were successful
lint-test-helm / lint-helm (push) Successful in 31s
render-manifests-push / render-manifests-push (push) Successful in 31s
renovate / renovate (push) Successful in 2m8s
2026-03-14 21:02:19 -05:00
74af45cb57 fix: missing closing quote
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-14 21:00:35 -05:00
849fdb432d chore(deps): update registry.k8s.io/coredns/coredns docker tag to v1.14.2 (#4745)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 31s
renovate / renovate (push) Successful in 1m36s
2026-03-15 01:58:17 +00:00
78d15dccad feat: refactor and improve steps
All checks were successful
renovate / renovate (push) Successful in 1m57s
2026-03-14 20:56:01 -05:00
8bfb5aeea3 feat: add api version and dry-run=server options to render
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-14 20:54:57 -05:00
5baa34db7e feat: change schedule to morning 2026-03-14 20:49:05 -05:00
d05381f6d2 fix: missing slash to place into folder
All checks were successful
renovate / renovate (push) Successful in 3m17s
2026-03-14 20:45:48 -05:00
b2cf5c094c feat: revert clean comments
All checks were successful
renovate / renovate (push) Successful in 2m4s
2026-03-14 20:31:20 -05:00
20d80826cb fix: missing apostrophe
All checks were successful
renovate / renovate (push) Successful in 3m59s
2026-03-14 20:15:06 -05:00
efe27b9307 chore(deps): update actions/cache action to v5 (#4741)
All checks were successful
renovate / renovate (push) Successful in 3m2s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/cache](https://github.com/actions/cache) | action | major | `v4` → `v5` |

---

### Release Notes

<details>
<summary>actions/cache (actions/cache)</summary>

### [`v5`](https://github.com/actions/cache/compare/v4...v5)

[Compare Source](https://github.com/actions/cache/compare/v4...v5)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: #4741
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 01:06:15 +00:00
13f4726021 fix: remove local variable assignment
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-14 20:05:46 -05:00
2785f337cf feat: refactor and improve steps
All checks were successful
renovate / renovate (push) Successful in 3m1s
2026-03-14 19:59:30 -05:00
67163611af chore(deps): update dependency mariadb-operator/mariadb-operator to v26 (#4704)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m0s
renovate / renovate (push) Successful in 2m58s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [mariadb-operator/mariadb-operator](https://github.com/mariadb-operator/mariadb-operator) | major | `25.10.4` → `26.3.0` |

---

### Release Notes

<details>
<summary>mariadb-operator/mariadb-operator (mariadb-operator/mariadb-operator)</summary>

### [`v26.3.0`](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0)

[Compare Source](https://github.com/mariadb-operator/mariadb-operator/compare/25.10.4...26.3.0)

**`mariadb-operator` [26.03](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0) is here!** 🦭

Welcome to another release of `mariadb-operator`! In this version, we have significantly enhanced our disaster recovery capabilities by adding support for **on-demand physical backups**, **Azure Blob Storage** and... (🥁)... **Point-In-Time-Recovery** .

Additionally, we've received a bunch of contributions by our amazing community during this release, including bug fixes and new features. We feel very grateful for your efforts and support, thank you! 🙇‍♂️ Refer to the PRs in the changelog below for further details.

If you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_26.3.0.md)** for a smooth transition.

#### Point-In-Time-Recovery

Point-in-time recovery (PITR) is a feature that allows you to restore a `MariaDB` instance to a specific point in time. For achieving this, it combines a full base backup and the binary logs that record all changes made to the database after the backup. This is something fully automated by operator, covering archival and restoration up to a specific time, ensuring business continuity and reduced RTO and RPO.

In order to configure PITR, you need to create a `PhysicalBackup` object to be used as full base backup. For example, you can configure a nightly backup:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  mariaDbRef:
    name: mariadb-repl
  schedule:
    cron: "0 0 * * *"
    suspend: false
    immediate: true
  compression: bzip2
  maxRetention: 720h
  storage:
    s3:
      bucket: physicalbackups
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
```

Next step is configuring common aspects of both binary log archiving and point-in-time restoration by defining a `PointInTimeRecovery` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  physicalBackupRef:
    name: physicalbackup-daily
  storage:
    s3:
      bucket: binlogs
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
  compression: gzip
  archiveTimeout: 1h
  strictMode: false
```

The new `PointInTimeRecovery` CR is just a configuration object that contains shared settings for both binary log archiving and point-in-time recovery. It has also a reference to a `PhysicalBackup` CR, used as full base backup.

In order to configure binary log archiving, you need to set a reference to the `PointInTimeRecovery` CR in the `MariaDB` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  pointInTimeRecoveryRef:
    name: pitr
```

This will enable the binary log archival in the sidecar agent, which will eventually report the last recoverable time via the `PointInTimeRecovery` status:

```bash
kubectl get pitr
NAME   PHYSICAL BACKUP        LAST RECOVERABLE TIME   STRICT MODE   AGE
pitr   physicalbackup-daily   2026-02-27T20:10:42Z    false         43h
```

In order to perform a point-in-time restoration, you can create a new `MariaDB` instance with a reference to the `PointInTimeRecovery` object in the `bootstrapFrom` field, along with the `targetRecoveryTime`, which should be before or at the last recoverable time:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  bootstrapFrom:
    pointInTimeRecoveryRef:
      name: pitr
    targetRecoveryTime: 2026-02-27T20:10:42Z
```

The restoration process will match the closest physical backup before or at the `targetRecoveryTime`, and then it will replay the archived binary logs from the backup GTID position up until the `targetRecoveryTime`.

Refer to the [PITR docs](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/pitr.md) for additional details.

#### Azure Blob Storage

So far, we have only supported S3-compatible storage as object storage for keeping the backups. We are now introducing native support for Azure Blob Storage in the `PhysicalBackup` and `PointInTimeRecovery` CRs. You can configure it under the `storage` field, similarly to S3:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  storage:
    azureBlob:
      containerName: binlogs
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  storage:
    azureBlob:
      containerName: physicalbackup
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

Refer to the [physical backup storage](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#azure-blob-storage-credentials) docs for additional details.

It is important to note that we couldn't find the bandwidth to support it for `Backup` resource (logical backup) in this release, [contributions are welcomed](https://github.com/mariadb-operator/mariadb-operator/issues/1653)!

Kudos to our co-maintainer [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) for smoothly driving this feature end-to-end!

#### On-demand `PhysicalBackup`

We have introduced the ability to trigger on-demand physical backup manually. For doing so, you need to provide an identifier in the `schedule.onDemand` field of the `PhysicalBackup` resource:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup
spec:
  schedule:
    onDemand: "1"
```

Once scheduled, the operator tracks the identifier under the status subresource. If the identifier in the status differs from `schedule.onDemand`, the operator will trigger a new physical backup.

Refer to the [physical backup scheduling](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#scheduling) docs for additional details.

##### Behaviour change in `targetRecoveryTime`

To satisfy requirements of point-in-time recovery, we have unified the behaviour of the `bootstrapFrom.targetRecoveryTime` field in the `MariaDB` object: Logical and physical backup files whose timestamp is closest to `targetRecoveryTime`, **but not after**, will be matched.

Please take this into account when upgrading to this version.

##### Change in Helm `values.yaml`

`config` has been split into `repository` and `tag` to facilitate overriding the image registry (see [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)). Please update your `values.yaml` from:

```yaml
config:
  mariadbImageName: docker-registry1.mariadb.com/library/mariadb
  maxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale:23.08.5
  exporterImage: prom/mysqld-exporter:v0.15.1
  exporterMaxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi:v0.0.1
```

to the following format:

```yaml
config:
  mariadbImage:
    repository: docker-registry1.mariadb.com/library/mariadb
    tag: 11.8.5
  maxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale
    tag: 23.08.5
  exporterImage:
    repository: prom/mysqld-exporter
    tag: v0.15.1
  exporterMaxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi
    tag: v0.0.1
```

##### Updated dependencies

| Platform/Component | Version |
| ------------------ | ------- |
| Kubernetes         | 1.35    |
| Go                 | 1.26.1  |
| controller-runtime | 0.23.3  |

#### Updated roadmap

The next feature to be supported is the new multi-cluster topology. Stay tuned!

- [x] ~~[Point In Time Recovery (PITR)](https://github.com/mariadb-operator/mariadb-operator/issues/507)~~
- [ ] [Multi-cluster topology](https://github.com/mariadb-operator/mariadb-operator/issues/1543)

***

#### Community

Contributions of any kind are always welcome: adding yourself to the [list of adopters](https://github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md), reporting issues, submitting pull requests, or simply starring the project! 🌟

#### Enterprise

For enterprise users, see the **[MariaDB Enterprise Operator](https://mariadb.com/products/enterprise/kubernetes-operator/)**, a commercially supported Kubernetes operator from MariaDB with additional enterprise-grade features.

#### What's Changed

- feat: Use primary Service by default for HA mariaDB connections by [@&#8203;softho0n](https://github.com/softho0n) in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- feat: add loadBalancerClass field to ServiceTemplate by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- fix: use standard compression extensions and add magic bytes validation by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1588](https://github.com/mariadb-operator/mariadb-operator/pull/1588)
- Make volumes and volumeMounts mutable by [@&#8203;hedgieinsocks](https://github.com/hedgieinsocks) in [#&#8203;1601](https://github.com/mariadb-operator/mariadb-operator/pull/1601)
- chore: Bump to latest go by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1630](https://github.com/mariadb-operator/mariadb-operator/pull/1630)
- make imagePullSecrets mutable by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- split config images in repository and tag by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)
- Galera recovery: disable bootstrap on other pods before bootstrapping by [@&#8203;infocusmodereal](https://github.com/infocusmodereal) in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- Bump github.com/minio/minio-go/v7 from 7.0.97 to 7.0.98 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1585](https://github.com/mariadb-operator/mariadb-operator/pull/1585)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.13.0 to 2.16.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1624](https://github.com/mariadb-operator/mariadb-operator/pull/1624)
- Bump ghcr.io/devcontainers/features/kubectl-helm-minikube from 1.2.2 to 1.3.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1623](https://github.com/mariadb-operator/mariadb-operator/pull/1623)
- Bump goreleaser/goreleaser-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1620](https://github.com/mariadb-operator/mariadb-operator/pull/1620)
- Bump github.com/onsi/gomega from 1.38.3 to 1.39.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1581](https://github.com/mariadb-operator/mariadb-operator/pull/1581)
- Bump crate-ci/typos from 1.41.0 to 1.44.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1625](https://github.com/mariadb-operator/mariadb-operator/pull/1625)
- Bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1586](https://github.com/mariadb-operator/mariadb-operator/pull/1586)
- Bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1580](https://github.com/mariadb-operator/mariadb-operator/pull/1580)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.87.1 to 0.88.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1579](https://github.com/mariadb-operator/mariadb-operator/pull/1579)
- Disable service links in MariaDB and MaxScale pod specs by [@&#8203;usiegj00](https://github.com/usiegj00) in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- Fix finalizer for ExternalMariDB by [@&#8203;snaax](https://github.com/snaax) in [#&#8203;1606](https://github.com/mariadb-operator/mariadb-operator/pull/1606)
- test: Added int tests for sql resources with external mariadb deletion by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1649](https://github.com/mariadb-operator/mariadb-operator/pull/1649)
- Bump github.com/minio/minio-go/v7 from 7.0.98 to 7.0.99 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1648](https://github.com/mariadb-operator/mariadb-operator/pull/1648)
- Bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1645](https://github.com/mariadb-operator/mariadb-operator/pull/1645)
- Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1644](https://github.com/mariadb-operator/mariadb-operator/pull/1644)
- Bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1642](https://github.com/mariadb-operator/mariadb-operator/pull/1642)
- Bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1641](https://github.com/mariadb-operator/mariadb-operator/pull/1641)
- Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1646](https://github.com/mariadb-operator/mariadb-operator/pull/1646)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.16.0 to 2.16.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1640](https://github.com/mariadb-operator/mariadb-operator/pull/1640)
- Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1638](https://github.com/mariadb-operator/mariadb-operator/pull/1638)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.88.0 to 0.89.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1643](https://github.com/mariadb-operator/mariadb-operator/pull/1643)
- Bump golang from 1.25.7-alpine3.23 to 1.26.1-alpine3.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1639](https://github.com/mariadb-operator/mariadb-operator/pull/1639)
- feat: Latest controller-runtime. Webhook changes, New Events API by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1651](https://github.com/mariadb-operator/mariadb-operator/pull/1651)
- Support for ephemeral volumes in `MariaDB` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1650](https://github.com/mariadb-operator/mariadb-operator/pull/1650)
- fix: accept compressed backup files in logical restore by [@&#8203;voron](https://github.com/voron) in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- Fix typo: syncrhonous -> synchronous by [@&#8203;sjmudd](https://github.com/sjmudd) in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)
- Release 26.03: `PointInTimeRecovery`, Azure Blob Storage & on-demand `PhysicalBackups` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1517](https://github.com/mariadb-operator/mariadb-operator/pull/1517)

#### New Contributors

- [@&#8203;softho0n](https://github.com/softho0n) made their first contribution in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- [@&#8203;yangminglintw](https://github.com/yangminglintw) made their first contribution in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- [@&#8203;dmaes](https://github.com/dmaes) made their first contribution in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- [@&#8203;infocusmodereal](https://github.com/infocusmodereal) made their first contribution in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- [@&#8203;usiegj00](https://github.com/usiegj00) made their first contribution in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- [@&#8203;voron](https://github.com/voron) made their first contribution in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- [@&#8203;sjmudd](https://github.com/sjmudd) made their first contribution in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)

**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.4...26.3.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4704
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 00:04:42 +00:00
15f4df3ec4 chore(deps): update helm release mariadb-cluster to v26 (#4705)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 11s
renovate / renovate (push) Successful in 2m31s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [mariadb-cluster](https://github.com/mariadb-operator/mariadb-operator) | major | `25.10.4` → `26.3.0` |

---

### Release Notes

<details>
<summary>mariadb-operator/mariadb-operator (mariadb-cluster)</summary>

### [`v26.3.0`](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0)

[Compare Source](https://github.com/mariadb-operator/mariadb-operator/compare/mariadb-cluster-25.10.4...mariadb-cluster-26.3.0)

**`mariadb-operator` [26.03](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0) is here!** 🦭

Welcome to another release of `mariadb-operator`! In this version, we have significantly enhanced our disaster recovery capabilities by adding support for **on-demand physical backups**, **Azure Blob Storage** and... (🥁)... **Point-In-Time-Recovery** .

Additionally, we've received a bunch of contributions by our amazing community during this release, including bug fixes and new features. We feel very grateful for your efforts and support, thank you! 🙇‍♂️ Refer to the PRs in the changelog below for further details.

If you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_26.3.0.md)** for a smooth transition.

#### Point-In-Time-Recovery

Point-in-time recovery (PITR) is a feature that allows you to restore a `MariaDB` instance to a specific point in time. For achieving this, it combines a full base backup and the binary logs that record all changes made to the database after the backup. This is something fully automated by operator, covering archival and restoration up to a specific time, ensuring business continuity and reduced RTO and RPO.

In order to configure PITR, you need to create a `PhysicalBackup` object to be used as full base backup. For example, you can configure a nightly backup:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  mariaDbRef:
    name: mariadb-repl
  schedule:
    cron: "0 0 * * *"
    suspend: false
    immediate: true
  compression: bzip2
  maxRetention: 720h
  storage:
    s3:
      bucket: physicalbackups
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
```

Next step is configuring common aspects of both binary log archiving and point-in-time restoration by defining a `PointInTimeRecovery` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  physicalBackupRef:
    name: physicalbackup-daily
  storage:
    s3:
      bucket: binlogs
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
  compression: gzip
  archiveTimeout: 1h
  strictMode: false
```

The new `PointInTimeRecovery` CR is just a configuration object that contains shared settings for both binary log archiving and point-in-time recovery. It has also a reference to a `PhysicalBackup` CR, used as full base backup.

In order to configure binary log archiving, you need to set a reference to the `PointInTimeRecovery` CR in the `MariaDB` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  pointInTimeRecoveryRef:
    name: pitr
```

This will enable the binary log archival in the sidecar agent, which will eventually report the last recoverable time via the `PointInTimeRecovery` status:

```bash
kubectl get pitr
NAME   PHYSICAL BACKUP        LAST RECOVERABLE TIME   STRICT MODE   AGE
pitr   physicalbackup-daily   2026-02-27T20:10:42Z    false         43h
```

In order to perform a point-in-time restoration, you can create a new `MariaDB` instance with a reference to the `PointInTimeRecovery` object in the `bootstrapFrom` field, along with the `targetRecoveryTime`, which should be before or at the last recoverable time:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  bootstrapFrom:
    pointInTimeRecoveryRef:
      name: pitr
    targetRecoveryTime: 2026-02-27T20:10:42Z
```

The restoration process will match the closest physical backup before or at the `targetRecoveryTime`, and then it will replay the archived binary logs from the backup GTID position up until the `targetRecoveryTime`.

Refer to the [PITR docs](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/pitr.md) for additional details.

#### Azure Blob Storage

So far, we have only supported S3-compatible storage as object storage for keeping the backups. We are now introducing native support for Azure Blob Storage in the `PhysicalBackup` and `PointInTimeRecovery` CRs. You can configure it under the `storage` field, similarly to S3:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  storage:
    azureBlob:
      containerName: binlogs
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  storage:
    azureBlob:
      containerName: physicalbackup
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

Refer to the [physical backup storage](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#azure-blob-storage-credentials) docs for additional details.

It is important to note that we couldn't find the bandwidth to support it for `Backup` resource (logical backup) in this release, [contributions are welcomed](https://github.com/mariadb-operator/mariadb-operator/issues/1653)!

Kudos to our co-maintainer [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) for smoothly driving this feature end-to-end!

#### On-demand `PhysicalBackup`

We have introduced the ability to trigger on-demand physical backup manually. For doing so, you need to provide an identifier in the `schedule.onDemand` field of the `PhysicalBackup` resource:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup
spec:
  schedule:
    onDemand: "1"
```

Once scheduled, the operator tracks the identifier under the status subresource. If the identifier in the status differs from `schedule.onDemand`, the operator will trigger a new physical backup.

Refer to the [physical backup scheduling](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#scheduling) docs for additional details.

##### Behaviour change in `targetRecoveryTime`

To satisfy requirements of point-in-time recovery, we have unified the behaviour of the `bootstrapFrom.targetRecoveryTime` field in the `MariaDB` object: Logical and physical backup files whose timestamp is closest to `targetRecoveryTime`, **but not after**, will be matched.

Please take this into account when upgrading to this version.

##### Change in Helm `values.yaml`

`config` has been split into `repository` and `tag` to facilitate overriding the image registry (see [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)). Please update your `values.yaml` from:

```yaml
config:
  mariadbImageName: docker-registry1.mariadb.com/library/mariadb
  maxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale:23.08.5
  exporterImage: prom/mysqld-exporter:v0.15.1
  exporterMaxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi:v0.0.1
```

to the following format:

```yaml
config:
  mariadbImage:
    repository: docker-registry1.mariadb.com/library/mariadb
    tag: 11.8.5
  maxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale
    tag: 23.08.5
  exporterImage:
    repository: prom/mysqld-exporter
    tag: v0.15.1
  exporterMaxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi
    tag: v0.0.1
```

##### Updated dependencies

| Platform/Component | Version |
| ------------------ | ------- |
| Kubernetes         | 1.35    |
| Go                 | 1.26.1  |
| controller-runtime | 0.23.3  |

#### Updated roadmap

The next feature to be supported is the new multi-cluster topology. Stay tuned!

- [x] ~~[Point In Time Recovery (PITR)](https://github.com/mariadb-operator/mariadb-operator/issues/507)~~
- [ ] [Multi-cluster topology](https://github.com/mariadb-operator/mariadb-operator/issues/1543)

***

#### Community

Contributions of any kind are always welcome: adding yourself to the [list of adopters](https://github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md), reporting issues, submitting pull requests, or simply starring the project! 🌟

#### Enterprise

For enterprise users, see the **[MariaDB Enterprise Operator](https://mariadb.com/products/enterprise/kubernetes-operator/)**, a commercially supported Kubernetes operator from MariaDB with additional enterprise-grade features.

#### What's Changed

- feat: Use primary Service by default for HA mariaDB connections by [@&#8203;softho0n](https://github.com/softho0n) in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- feat: add loadBalancerClass field to ServiceTemplate by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- fix: use standard compression extensions and add magic bytes validation by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1588](https://github.com/mariadb-operator/mariadb-operator/pull/1588)
- Make volumes and volumeMounts mutable by [@&#8203;hedgieinsocks](https://github.com/hedgieinsocks) in [#&#8203;1601](https://github.com/mariadb-operator/mariadb-operator/pull/1601)
- chore: Bump to latest go by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1630](https://github.com/mariadb-operator/mariadb-operator/pull/1630)
- make imagePullSecrets mutable by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- split config images in repository and tag by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)
- Galera recovery: disable bootstrap on other pods before bootstrapping by [@&#8203;infocusmodereal](https://github.com/infocusmodereal) in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- Bump github.com/minio/minio-go/v7 from 7.0.97 to 7.0.98 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1585](https://github.com/mariadb-operator/mariadb-operator/pull/1585)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.13.0 to 2.16.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1624](https://github.com/mariadb-operator/mariadb-operator/pull/1624)
- Bump ghcr.io/devcontainers/features/kubectl-helm-minikube from 1.2.2 to 1.3.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1623](https://github.com/mariadb-operator/mariadb-operator/pull/1623)
- Bump goreleaser/goreleaser-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1620](https://github.com/mariadb-operator/mariadb-operator/pull/1620)
- Bump github.com/onsi/gomega from 1.38.3 to 1.39.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1581](https://github.com/mariadb-operator/mariadb-operator/pull/1581)
- Bump crate-ci/typos from 1.41.0 to 1.44.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1625](https://github.com/mariadb-operator/mariadb-operator/pull/1625)
- Bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1586](https://github.com/mariadb-operator/mariadb-operator/pull/1586)
- Bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1580](https://github.com/mariadb-operator/mariadb-operator/pull/1580)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.87.1 to 0.88.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1579](https://github.com/mariadb-operator/mariadb-operator/pull/1579)
- Disable service links in MariaDB and MaxScale pod specs by [@&#8203;usiegj00](https://github.com/usiegj00) in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- Fix finalizer for ExternalMariDB by [@&#8203;snaax](https://github.com/snaax) in [#&#8203;1606](https://github.com/mariadb-operator/mariadb-operator/pull/1606)
- test: Added int tests for sql resources with external mariadb deletion by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1649](https://github.com/mariadb-operator/mariadb-operator/pull/1649)
- Bump github.com/minio/minio-go/v7 from 7.0.98 to 7.0.99 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1648](https://github.com/mariadb-operator/mariadb-operator/pull/1648)
- Bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1645](https://github.com/mariadb-operator/mariadb-operator/pull/1645)
- Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1644](https://github.com/mariadb-operator/mariadb-operator/pull/1644)
- Bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1642](https://github.com/mariadb-operator/mariadb-operator/pull/1642)
- Bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1641](https://github.com/mariadb-operator/mariadb-operator/pull/1641)
- Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1646](https://github.com/mariadb-operator/mariadb-operator/pull/1646)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.16.0 to 2.16.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1640](https://github.com/mariadb-operator/mariadb-operator/pull/1640)
- Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1638](https://github.com/mariadb-operator/mariadb-operator/pull/1638)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.88.0 to 0.89.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1643](https://github.com/mariadb-operator/mariadb-operator/pull/1643)
- Bump golang from 1.25.7-alpine3.23 to 1.26.1-alpine3.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1639](https://github.com/mariadb-operator/mariadb-operator/pull/1639)
- feat: Latest controller-runtime. Webhook changes, New Events API by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1651](https://github.com/mariadb-operator/mariadb-operator/pull/1651)
- Support for ephemeral volumes in `MariaDB` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1650](https://github.com/mariadb-operator/mariadb-operator/pull/1650)
- fix: accept compressed backup files in logical restore by [@&#8203;voron](https://github.com/voron) in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- Fix typo: syncrhonous -> synchronous by [@&#8203;sjmudd](https://github.com/sjmudd) in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)
- Release 26.03: `PointInTimeRecovery`, Azure Blob Storage & on-demand `PhysicalBackups` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1517](https://github.com/mariadb-operator/mariadb-operator/pull/1517)

#### New Contributors

- [@&#8203;softho0n](https://github.com/softho0n) made their first contribution in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- [@&#8203;yangminglintw](https://github.com/yangminglintw) made their first contribution in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- [@&#8203;dmaes](https://github.com/dmaes) made their first contribution in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- [@&#8203;infocusmodereal](https://github.com/infocusmodereal) made their first contribution in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- [@&#8203;usiegj00](https://github.com/usiegj00) made their first contribution in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- [@&#8203;voron](https://github.com/voron) made their first contribution in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- [@&#8203;sjmudd](https://github.com/sjmudd) made their first contribution in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)

**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.4...26.3.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4705
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 23:58:42 +00:00
215f7edc86 chore(deps): update helm release mariadb-operator to v26 (#4706)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
renovate / renovate (push) Successful in 3m2s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [mariadb-operator](https://github.com/mariadb-operator/mariadb-operator) | major | `25.10.4` → `26.3.0` |

---

### Release Notes

<details>
<summary>mariadb-operator/mariadb-operator (mariadb-operator)</summary>

### [`v26.3.0`](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0)

[Compare Source](https://github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-25.10.4...mariadb-operator-26.3.0)

**`mariadb-operator` [26.03](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0) is here!** 🦭

Welcome to another release of `mariadb-operator`! In this version, we have significantly enhanced our disaster recovery capabilities by adding support for **on-demand physical backups**, **Azure Blob Storage** and... (🥁)... **Point-In-Time-Recovery** .

Additionally, we've received a bunch of contributions by our amazing community during this release, including bug fixes and new features. We feel very grateful for your efforts and support, thank you! 🙇‍♂️ Refer to the PRs in the changelog below for further details.

If you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_26.3.0.md)** for a smooth transition.

#### Point-In-Time-Recovery

Point-in-time recovery (PITR) is a feature that allows you to restore a `MariaDB` instance to a specific point in time. For achieving this, it combines a full base backup and the binary logs that record all changes made to the database after the backup. This is something fully automated by operator, covering archival and restoration up to a specific time, ensuring business continuity and reduced RTO and RPO.

In order to configure PITR, you need to create a `PhysicalBackup` object to be used as full base backup. For example, you can configure a nightly backup:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  mariaDbRef:
    name: mariadb-repl
  schedule:
    cron: "0 0 * * *"
    suspend: false
    immediate: true
  compression: bzip2
  maxRetention: 720h
  storage:
    s3:
      bucket: physicalbackups
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
```

Next step is configuring common aspects of both binary log archiving and point-in-time restoration by defining a `PointInTimeRecovery` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  physicalBackupRef:
    name: physicalbackup-daily
  storage:
    s3:
      bucket: binlogs
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
  compression: gzip
  archiveTimeout: 1h
  strictMode: false
```

The new `PointInTimeRecovery` CR is just a configuration object that contains shared settings for both binary log archiving and point-in-time recovery. It has also a reference to a `PhysicalBackup` CR, used as full base backup.

In order to configure binary log archiving, you need to set a reference to the `PointInTimeRecovery` CR in the `MariaDB` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  pointInTimeRecoveryRef:
    name: pitr
```

This will enable the binary log archival in the sidecar agent, which will eventually report the last recoverable time via the `PointInTimeRecovery` status:

```bash
kubectl get pitr
NAME   PHYSICAL BACKUP        LAST RECOVERABLE TIME   STRICT MODE   AGE
pitr   physicalbackup-daily   2026-02-27T20:10:42Z    false         43h
```

In order to perform a point-in-time restoration, you can create a new `MariaDB` instance with a reference to the `PointInTimeRecovery` object in the `bootstrapFrom` field, along with the `targetRecoveryTime`, which should be before or at the last recoverable time:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  bootstrapFrom:
    pointInTimeRecoveryRef:
      name: pitr
    targetRecoveryTime: 2026-02-27T20:10:42Z
```

The restoration process will match the closest physical backup before or at the `targetRecoveryTime`, and then it will replay the archived binary logs from the backup GTID position up until the `targetRecoveryTime`.

Refer to the [PITR docs](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/pitr.md) for additional details.

#### Azure Blob Storage

So far, we have only supported S3-compatible storage as object storage for keeping the backups. We are now introducing native support for Azure Blob Storage in the `PhysicalBackup` and `PointInTimeRecovery` CRs. You can configure it under the `storage` field, similarly to S3:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  storage:
    azureBlob:
      containerName: binlogs
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  storage:
    azureBlob:
      containerName: physicalbackup
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

Refer to the [physical backup storage](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#azure-blob-storage-credentials) docs for additional details.

It is important to note that we couldn't find the bandwidth to support it for `Backup` resource (logical backup) in this release, [contributions are welcomed](https://github.com/mariadb-operator/mariadb-operator/issues/1653)!

Kudos to our co-maintainer [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) for smoothly driving this feature end-to-end!

#### On-demand `PhysicalBackup`

We have introduced the ability to trigger on-demand physical backup manually. For doing so, you need to provide an identifier in the `schedule.onDemand` field of the `PhysicalBackup` resource:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup
spec:
  schedule:
    onDemand: "1"
```

Once scheduled, the operator tracks the identifier under the status subresource. If the identifier in the status differs from `schedule.onDemand`, the operator will trigger a new physical backup.

Refer to the [physical backup scheduling](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#scheduling) docs for additional details.

##### Behaviour change in `targetRecoveryTime`

To satisfy requirements of point-in-time recovery, we have unified the behaviour of the `bootstrapFrom.targetRecoveryTime` field in the `MariaDB` object: Logical and physical backup files whose timestamp is closest to `targetRecoveryTime`, **but not after**, will be matched.

Please take this into account when upgrading to this version.

##### Change in Helm `values.yaml`

`config` has been split into `repository` and `tag` to facilitate overriding the image registry (see [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)). Please update your `values.yaml` from:

```yaml
config:
  mariadbImageName: docker-registry1.mariadb.com/library/mariadb
  maxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale:23.08.5
  exporterImage: prom/mysqld-exporter:v0.15.1
  exporterMaxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi:v0.0.1
```

to the following format:

```yaml
config:
  mariadbImage:
    repository: docker-registry1.mariadb.com/library/mariadb
    tag: 11.8.5
  maxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale
    tag: 23.08.5
  exporterImage:
    repository: prom/mysqld-exporter
    tag: v0.15.1
  exporterMaxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi
    tag: v0.0.1
```

##### Updated dependencies

| Platform/Component | Version |
| ------------------ | ------- |
| Kubernetes         | 1.35    |
| Go                 | 1.26.1  |
| controller-runtime | 0.23.3  |

#### Updated roadmap

The next feature to be supported is the new multi-cluster topology. Stay tuned!

- [x] ~~[Point In Time Recovery (PITR)](https://github.com/mariadb-operator/mariadb-operator/issues/507)~~
- [ ] [Multi-cluster topology](https://github.com/mariadb-operator/mariadb-operator/issues/1543)

***

#### Community

Contributions of any kind are always welcome: adding yourself to the [list of adopters](https://github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md), reporting issues, submitting pull requests, or simply starring the project! 🌟

#### Enterprise

For enterprise users, see the **[MariaDB Enterprise Operator](https://mariadb.com/products/enterprise/kubernetes-operator/)**, a commercially supported Kubernetes operator from MariaDB with additional enterprise-grade features.

#### What's Changed

- feat: Use primary Service by default for HA mariaDB connections by [@&#8203;softho0n](https://github.com/softho0n) in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- feat: add loadBalancerClass field to ServiceTemplate by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- fix: use standard compression extensions and add magic bytes validation by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1588](https://github.com/mariadb-operator/mariadb-operator/pull/1588)
- Make volumes and volumeMounts mutable by [@&#8203;hedgieinsocks](https://github.com/hedgieinsocks) in [#&#8203;1601](https://github.com/mariadb-operator/mariadb-operator/pull/1601)
- chore: Bump to latest go by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1630](https://github.com/mariadb-operator/mariadb-operator/pull/1630)
- make imagePullSecrets mutable by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- split config images in repository and tag by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)
- Galera recovery: disable bootstrap on other pods before bootstrapping by [@&#8203;infocusmodereal](https://github.com/infocusmodereal) in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- Bump github.com/minio/minio-go/v7 from 7.0.97 to 7.0.98 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1585](https://github.com/mariadb-operator/mariadb-operator/pull/1585)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.13.0 to 2.16.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1624](https://github.com/mariadb-operator/mariadb-operator/pull/1624)
- Bump ghcr.io/devcontainers/features/kubectl-helm-minikube from 1.2.2 to 1.3.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1623](https://github.com/mariadb-operator/mariadb-operator/pull/1623)
- Bump goreleaser/goreleaser-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1620](https://github.com/mariadb-operator/mariadb-operator/pull/1620)
- Bump github.com/onsi/gomega from 1.38.3 to 1.39.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1581](https://github.com/mariadb-operator/mariadb-operator/pull/1581)
- Bump crate-ci/typos from 1.41.0 to 1.44.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1625](https://github.com/mariadb-operator/mariadb-operator/pull/1625)
- Bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1586](https://github.com/mariadb-operator/mariadb-operator/pull/1586)
- Bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1580](https://github.com/mariadb-operator/mariadb-operator/pull/1580)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.87.1 to 0.88.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1579](https://github.com/mariadb-operator/mariadb-operator/pull/1579)
- Disable service links in MariaDB and MaxScale pod specs by [@&#8203;usiegj00](https://github.com/usiegj00) in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- Fix finalizer for ExternalMariDB by [@&#8203;snaax](https://github.com/snaax) in [#&#8203;1606](https://github.com/mariadb-operator/mariadb-operator/pull/1606)
- test: Added int tests for sql resources with external mariadb deletion by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1649](https://github.com/mariadb-operator/mariadb-operator/pull/1649)
- Bump github.com/minio/minio-go/v7 from 7.0.98 to 7.0.99 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1648](https://github.com/mariadb-operator/mariadb-operator/pull/1648)
- Bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1645](https://github.com/mariadb-operator/mariadb-operator/pull/1645)
- Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1644](https://github.com/mariadb-operator/mariadb-operator/pull/1644)
- Bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1642](https://github.com/mariadb-operator/mariadb-operator/pull/1642)
- Bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1641](https://github.com/mariadb-operator/mariadb-operator/pull/1641)
- Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1646](https://github.com/mariadb-operator/mariadb-operator/pull/1646)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.16.0 to 2.16.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1640](https://github.com/mariadb-operator/mariadb-operator/pull/1640)
- Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1638](https://github.com/mariadb-operator/mariadb-operator/pull/1638)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.88.0 to 0.89.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1643](https://github.com/mariadb-operator/mariadb-operator/pull/1643)
- Bump golang from 1.25.7-alpine3.23 to 1.26.1-alpine3.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1639](https://github.com/mariadb-operator/mariadb-operator/pull/1639)
- feat: Latest controller-runtime. Webhook changes, New Events API by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1651](https://github.com/mariadb-operator/mariadb-operator/pull/1651)
- Support for ephemeral volumes in `MariaDB` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1650](https://github.com/mariadb-operator/mariadb-operator/pull/1650)
- fix: accept compressed backup files in logical restore by [@&#8203;voron](https://github.com/voron) in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- Fix typo: syncrhonous -> synchronous by [@&#8203;sjmudd](https://github.com/sjmudd) in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)
- Release 26.03: `PointInTimeRecovery`, Azure Blob Storage & on-demand `PhysicalBackups` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1517](https://github.com/mariadb-operator/mariadb-operator/pull/1517)

#### New Contributors

- [@&#8203;softho0n](https://github.com/softho0n) made their first contribution in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- [@&#8203;yangminglintw](https://github.com/yangminglintw) made their first contribution in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- [@&#8203;dmaes](https://github.com/dmaes) made their first contribution in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- [@&#8203;infocusmodereal](https://github.com/infocusmodereal) made their first contribution in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- [@&#8203;usiegj00](https://github.com/usiegj00) made their first contribution in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- [@&#8203;voron](https://github.com/voron) made their first contribution in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- [@&#8203;sjmudd](https://github.com/sjmudd) made their first contribution in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)

**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.4...26.3.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4706
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 23:54:24 +00:00
510f059037 chore(deps): update ghcr.io/haveagitgat/tdarr_node docker tag to v2.63.01 (#4737)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 11s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/haveagitgat/tdarr_node](https://github.com/HaveAGitGat/tdarr_express_be) | minor | `2.62.01` → `2.63.01` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4737
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 23:51:38 +00:00
9fce102ad0 chore(deps): update ghcr.io/haveagitgat/tdarr docker tag to v2.63.01 (#4736)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 19s
renovate / renovate (push) Successful in 3m29s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/haveagitgat/tdarr](https://github.com/HaveAGitGat/tdarr_express_be) | minor | `2.62.01` → `2.63.01` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4736
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 23:19:45 +00:00
56f7191743 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.12.1 (#4738)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 48s
renovate / renovate (push) Successful in 5m47s
2026-03-14 23:02:43 +00:00
d4b33afb65 chore(deps): update ghcr.io/linuxserver/code-server:4.111.0 docker digest to 12c04b4 (#4734)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 18s
renovate / renovate (push) Successful in 2m20s
2026-03-14 20:52:12 +00:00
d92659d146 chore(deps): update ghcr.io/gethomepage/homepage docker tag to v1.11.0 (#4728)
Some checks failed
lint-test-docker / lint-docker-compose (push) Successful in 52s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/gethomepage/homepage](https://github.com/gethomepage/homepage) | minor | `v1.10.1` → `v1.11.0` |

---

### Release Notes

<details>
<summary>gethomepage/homepage (ghcr.io/gethomepage/homepage)</summary>

### [`v1.11.0`](https://github.com/gethomepage/homepage/releases/tag/v1.11.0)

[Compare Source](https://github.com/gethomepage/homepage/compare/v1.10.1...v1.11.0)

##### What's Changed

- Chore(deps): Bump actions/checkout from 4 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6284](https://github.com/gethomepage/homepage/pull/6284)
- Chore(deps): Bump actions/setup-node from 4 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6285](https://github.com/gethomepage/homepage/pull/6285)
- Feature: add Tracearr widget for displaying active Plex streams by [@&#8203;Bothari](https://github.com/Bothari) in [#&#8203;6306](https://github.com/gethomepage/homepage/pull/6306)
- Improvement: better handle highlighting with units by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6318](https://github.com/gethomepage/homepage/pull/6318)
- Chore: rename Jellyseerr widget to Seerr and update references by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6322](https://github.com/gethomepage/homepage/pull/6322)
- Enhancement: jellyseer completed by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6329](https://github.com/gethomepage/homepage/pull/6329)
- Chore: merge Overseerr into Seerr, add aliases by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6330](https://github.com/gethomepage/homepage/pull/6330)
- Enhancement: add "Temperature" label to list of possible CPU sensors by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6331](https://github.com/gethomepage/homepage/pull/6331)
- Enhancement: cover more basic statuses in containers list by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6334](https://github.com/gethomepage/homepage/pull/6334)
- Feature: sparkyfitness service widget by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6346](https://github.com/gethomepage/homepage/pull/6346)
- Enhancement: fallback for missing si network stats by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6367](https://github.com/gethomepage/homepage/pull/6367)
- Fix: Await async proxy handlers by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6371](https://github.com/gethomepage/homepage/pull/6371)
- Fix: small fixes for Omada proxy by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6372](https://github.com/gethomepage/homepage/pull/6372)
- Chore: add security context, liveness probe and config mount to k8s deployment example by [@&#8203;hugosxm](https://github.com/hugosxm) in [#&#8203;6375](https://github.com/gethomepage/homepage/pull/6375)
- Enhancement: use lighter endpoints for qbittorrent by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6388](https://github.com/gethomepage/homepage/pull/6388)
- Chore(deps-dev): Bump prettier from 3.7.3 to 3.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6379](https://github.com/gethomepage/homepage/pull/6379)
- Chore(deps-dev): Bump jsdom from 26.1.0 to 28.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6378](https://github.com/gethomepage/homepage/pull/6378)
- Chore(deps): Bump ical.js from 2.1.0 to 2.2.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6377](https://github.com/gethomepage/homepage/pull/6377)
- Chore(deps): Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6385](https://github.com/gethomepage/homepage/pull/6385)
- Chore(deps): Bump next-i18next from 12.1.0 to 15.4.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6376](https://github.com/gethomepage/homepage/pull/6376)
- Chore(deps): Bump react and react-dom by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6380](https://github.com/gethomepage/homepage/pull/6380)
- Chore(deps): Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6386](https://github.com/gethomepage/homepage/pull/6386)
- Chore(deps): Bump docker/metadata-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6399](https://github.com/gethomepage/homepage/pull/6399)
- Chore(deps): Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6398](https://github.com/gethomepage/homepage/pull/6398)
- Chore(deps): Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6397](https://github.com/gethomepage/homepage/pull/6397)
- Change: use byterate for beszel network field by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6402](https://github.com/gethomepage/homepage/pull/6402)
- Enhancement: better Crowdsec auth parsing, caching, and retries by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6419](https://github.com/gethomepage/homepage/pull/6419)

##### New Contributors

- [@&#8203;Bothari](https://github.com/Bothari) made their first contribution in [#&#8203;6306](https://github.com/gethomepage/homepage/pull/6306)
- [@&#8203;hugosxm](https://github.com/hugosxm) made their first contribution in [#&#8203;6375](https://github.com/gethomepage/homepage/pull/6375)

**Full Changelog**: <https://github.com/gethomepage/homepage/compare/v1.10.1...v1.11.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4728
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 20:49:28 +00:00
cb3c1689a3 chore(deps): update gethomepage/homepage to v1.11.0 (#4727)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
renovate / renovate (push) Successful in 3m19s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [gethomepage/homepage](https://github.com/gethomepage/homepage) | minor | `v1.10.1` → `v1.11.0` |
| [ghcr.io/gethomepage/homepage](https://github.com/gethomepage/homepage) | minor | `v1.10.1` → `v1.11.0` |

---

### Release Notes

<details>
<summary>gethomepage/homepage (gethomepage/homepage)</summary>

### [`v1.11.0`](https://github.com/gethomepage/homepage/releases/tag/v1.11.0)

[Compare Source](https://github.com/gethomepage/homepage/compare/v1.10.1...v1.11.0)

##### What's Changed

- Chore(deps): Bump actions/checkout from 4 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6284](https://github.com/gethomepage/homepage/pull/6284)
- Chore(deps): Bump actions/setup-node from 4 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6285](https://github.com/gethomepage/homepage/pull/6285)
- Feature: add Tracearr widget for displaying active Plex streams by [@&#8203;Bothari](https://github.com/Bothari) in [#&#8203;6306](https://github.com/gethomepage/homepage/pull/6306)
- Improvement: better handle highlighting with units by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6318](https://github.com/gethomepage/homepage/pull/6318)
- Chore: rename Jellyseerr widget to Seerr and update references by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6322](https://github.com/gethomepage/homepage/pull/6322)
- Enhancement: jellyseer completed by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6329](https://github.com/gethomepage/homepage/pull/6329)
- Chore: merge Overseerr into Seerr, add aliases by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6330](https://github.com/gethomepage/homepage/pull/6330)
- Enhancement: add "Temperature" label to list of possible CPU sensors by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6331](https://github.com/gethomepage/homepage/pull/6331)
- Enhancement: cover more basic statuses in containers list by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6334](https://github.com/gethomepage/homepage/pull/6334)
- Feature: sparkyfitness service widget by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6346](https://github.com/gethomepage/homepage/pull/6346)
- Enhancement: fallback for missing si network stats by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6367](https://github.com/gethomepage/homepage/pull/6367)
- Fix: Await async proxy handlers by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6371](https://github.com/gethomepage/homepage/pull/6371)
- Fix: small fixes for Omada proxy by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6372](https://github.com/gethomepage/homepage/pull/6372)
- Chore: add security context, liveness probe and config mount to k8s deployment example by [@&#8203;hugosxm](https://github.com/hugosxm) in [#&#8203;6375](https://github.com/gethomepage/homepage/pull/6375)
- Enhancement: use lighter endpoints for qbittorrent by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6388](https://github.com/gethomepage/homepage/pull/6388)
- Chore(deps-dev): Bump prettier from 3.7.3 to 3.8.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6379](https://github.com/gethomepage/homepage/pull/6379)
- Chore(deps-dev): Bump jsdom from 26.1.0 to 28.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6378](https://github.com/gethomepage/homepage/pull/6378)
- Chore(deps): Bump ical.js from 2.1.0 to 2.2.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6377](https://github.com/gethomepage/homepage/pull/6377)
- Chore(deps): Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6385](https://github.com/gethomepage/homepage/pull/6385)
- Chore(deps): Bump next-i18next from 12.1.0 to 15.4.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6376](https://github.com/gethomepage/homepage/pull/6376)
- Chore(deps): Bump react and react-dom by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6380](https://github.com/gethomepage/homepage/pull/6380)
- Chore(deps): Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6386](https://github.com/gethomepage/homepage/pull/6386)
- Chore(deps): Bump docker/metadata-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6399](https://github.com/gethomepage/homepage/pull/6399)
- Chore(deps): Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6398](https://github.com/gethomepage/homepage/pull/6398)
- Chore(deps): Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6397](https://github.com/gethomepage/homepage/pull/6397)
- Change: use byterate for beszel network field by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6402](https://github.com/gethomepage/homepage/pull/6402)
- Enhancement: better Crowdsec auth parsing, caching, and retries by [@&#8203;shamoon](https://github.com/shamoon) in [#&#8203;6419](https://github.com/gethomepage/homepage/pull/6419)

##### New Contributors

- [@&#8203;Bothari](https://github.com/Bothari) made their first contribution in [#&#8203;6306](https://github.com/gethomepage/homepage/pull/6306)
- [@&#8203;hugosxm](https://github.com/hugosxm) made their first contribution in [#&#8203;6375](https://github.com/gethomepage/homepage/pull/6375)

**Full Changelog**: <https://github.com/gethomepage/homepage/compare/v1.10.1...v1.11.0>

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4727
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 20:11:51 +00:00
fee98e7ed8 chore(deps): update ollama/ollama to v0.18.0 (#4720)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Successful in 3m48s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ollama/ollama](https://github.com/ollama/ollama) | minor | `0.17.7` → `0.18.0` |
| ollama/ollama | minor | `0.17.7` → `0.18.0` |

---

### Release Notes

<details>
<summary>ollama/ollama (ollama/ollama)</summary>

### [`v0.18.0`](https://github.com/ollama/ollama/releases/tag/v0.18.0)

[Compare Source](https://github.com/ollama/ollama/compare/v0.17.7...v0.18.0)

#### What's Changed

- Improved ordering models when running `ollama`
- Ollama's cloud models no longer require downloading via `ollama pull`. Setting `:cloud` as a tag will now automatically connect to cloud models.
- `ollama launch claude` now supports setting the compaction window for Claude Code

#### New Contributors

- [@&#8203;flipbit03](https://github.com/flipbit03) made their first contribution in [#&#8203;14821](https://github.com/ollama/ollama/pull/14821)

**Full Changelog**: <https://github.com/ollama/ollama/compare/v0.17.8-rc4...v0.18.0>

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4720
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 20:04:00 +00:00
460b5c55d8 chore(deps): update helm release mariadb-operator-crds to v26 (#4707)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 14s
renovate / renovate (push) Successful in 5m9s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [mariadb-operator-crds](https://github.com/mariadb-operator/mariadb-operator) | major | `25.10.4` → `26.3.0` |

---

### Release Notes

<details>
<summary>mariadb-operator/mariadb-operator (mariadb-operator-crds)</summary>

### [`v26.3.0`](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0)

[Compare Source](https://github.com/mariadb-operator/mariadb-operator/compare/mariadb-operator-crds-25.10.4...mariadb-operator-crds-26.3.0)

**`mariadb-operator` [26.03](https://github.com/mariadb-operator/mariadb-operator/releases/tag/26.3.0) is here!** 🦭

Welcome to another release of `mariadb-operator`! In this version, we have significantly enhanced our disaster recovery capabilities by adding support for **on-demand physical backups**, **Azure Blob Storage** and... (🥁)... **Point-In-Time-Recovery** .

Additionally, we've received a bunch of contributions by our amazing community during this release, including bug fixes and new features. We feel very grateful for your efforts and support, thank you! 🙇‍♂️ Refer to the PRs in the changelog below for further details.

If you're upgrading from previous versions, **do not miss the [UPGRADE GUIDE](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/releases/UPGRADE_26.3.0.md)** for a smooth transition.

#### Point-In-Time-Recovery

Point-in-time recovery (PITR) is a feature that allows you to restore a `MariaDB` instance to a specific point in time. For achieving this, it combines a full base backup and the binary logs that record all changes made to the database after the backup. This is something fully automated by operator, covering archival and restoration up to a specific time, ensuring business continuity and reduced RTO and RPO.

In order to configure PITR, you need to create a `PhysicalBackup` object to be used as full base backup. For example, you can configure a nightly backup:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  mariaDbRef:
    name: mariadb-repl
  schedule:
    cron: "0 0 * * *"
    suspend: false
    immediate: true
  compression: bzip2
  maxRetention: 720h
  storage:
    s3:
      bucket: physicalbackups
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
```

Next step is configuring common aspects of both binary log archiving and point-in-time restoration by defining a `PointInTimeRecovery` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  physicalBackupRef:
    name: physicalbackup-daily
  storage:
    s3:
      bucket: binlogs
      prefix: mariadb
      endpoint: minio.minio.svc.cluster.local:9000
      region: us-east-1
      accessKeyIdSecretKeyRef:
        name: minio
        key: access-key-id
      secretAccessKeySecretKeyRef:
        name: minio
        key: secret-access-key
      tls:
        enabled: true
        caSecretKeyRef:
          name: minio-ca
          key: ca.crt
  compression: gzip
  archiveTimeout: 1h
  strictMode: false
```

The new `PointInTimeRecovery` CR is just a configuration object that contains shared settings for both binary log archiving and point-in-time recovery. It has also a reference to a `PhysicalBackup` CR, used as full base backup.

In order to configure binary log archiving, you need to set a reference to the `PointInTimeRecovery` CR in the `MariaDB` object:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  pointInTimeRecoveryRef:
    name: pitr
```

This will enable the binary log archival in the sidecar agent, which will eventually report the last recoverable time via the `PointInTimeRecovery` status:

```bash
kubectl get pitr
NAME   PHYSICAL BACKUP        LAST RECOVERABLE TIME   STRICT MODE   AGE
pitr   physicalbackup-daily   2026-02-27T20:10:42Z    false         43h
```

In order to perform a point-in-time restoration, you can create a new `MariaDB` instance with a reference to the `PointInTimeRecovery` object in the `bootstrapFrom` field, along with the `targetRecoveryTime`, which should be before or at the last recoverable time:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB
metadata:
  name: mariadb-repl
spec:
  bootstrapFrom:
    pointInTimeRecoveryRef:
      name: pitr
    targetRecoveryTime: 2026-02-27T20:10:42Z
```

The restoration process will match the closest physical backup before or at the `targetRecoveryTime`, and then it will replay the archived binary logs from the backup GTID position up until the `targetRecoveryTime`.

Refer to the [PITR docs](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/pitr.md) for additional details.

#### Azure Blob Storage

So far, we have only supported S3-compatible storage as object storage for keeping the backups. We are now introducing native support for Azure Blob Storage in the `PhysicalBackup` and `PointInTimeRecovery` CRs. You can configure it under the `storage` field, similarly to S3:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PointInTimeRecovery
metadata:
  name: pitr
spec:
  storage:
    azureBlob:
      containerName: binlogs
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup-daily
spec:
  storage:
    azureBlob:
      containerName: physicalbackup
      serviceURL: https://azurite.default.svc.cluster.local:10000/devstoreaccount1
      prefix: mariadb
      storageAccountName: devstoreaccount1
      storageAccountKey:
        name: azurite-key
        key: storageAccountKey
      tls:
        enabled: true
        caSecretKeyRef:
          name: azurite-certs
          key: cert.pem
```

Refer to the [physical backup storage](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#azure-blob-storage-credentials) docs for additional details.

It is important to note that we couldn't find the bandwidth to support it for `Backup` resource (logical backup) in this release, [contributions are welcomed](https://github.com/mariadb-operator/mariadb-operator/issues/1653)!

Kudos to our co-maintainer [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) for smoothly driving this feature end-to-end!

#### On-demand `PhysicalBackup`

We have introduced the ability to trigger on-demand physical backup manually. For doing so, you need to provide an identifier in the `schedule.onDemand` field of the `PhysicalBackup` resource:

```yaml
apiVersion: k8s.mariadb.com/v1alpha1
kind: PhysicalBackup
metadata:
  name: physicalbackup
spec:
  schedule:
    onDemand: "1"
```

Once scheduled, the operator tracks the identifier under the status subresource. If the identifier in the status differs from `schedule.onDemand`, the operator will trigger a new physical backup.

Refer to the [physical backup scheduling](https://github.com/mariadb-operator/mariadb-operator/blob/main/docs/physical_backup.md#scheduling) docs for additional details.

##### Behaviour change in `targetRecoveryTime`

To satisfy requirements of point-in-time recovery, we have unified the behaviour of the `bootstrapFrom.targetRecoveryTime` field in the `MariaDB` object: Logical and physical backup files whose timestamp is closest to `targetRecoveryTime`, **but not after**, will be matched.

Please take this into account when upgrading to this version.

##### Change in Helm `values.yaml`

`config` has been split into `repository` and `tag` to facilitate overriding the image registry (see [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)). Please update your `values.yaml` from:

```yaml
config:
  mariadbImageName: docker-registry1.mariadb.com/library/mariadb
  maxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale:23.08.5
  exporterImage: prom/mysqld-exporter:v0.15.1
  exporterMaxscaleImage: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi:v0.0.1
```

to the following format:

```yaml
config:
  mariadbImage:
    repository: docker-registry1.mariadb.com/library/mariadb
    tag: 11.8.5
  maxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale
    tag: 23.08.5
  exporterImage:
    repository: prom/mysqld-exporter
    tag: v0.15.1
  exporterMaxscaleImage:
    repository: docker-registry2.mariadb.com/mariadb/maxscale-prometheus-exporter-ubi
    tag: v0.0.1
```

##### Updated dependencies

| Platform/Component | Version |
| ------------------ | ------- |
| Kubernetes         | 1.35    |
| Go                 | 1.26.1  |
| controller-runtime | 0.23.3  |

#### Updated roadmap

The next feature to be supported is the new multi-cluster topology. Stay tuned!

- [x] ~~[Point In Time Recovery (PITR)](https://github.com/mariadb-operator/mariadb-operator/issues/507)~~
- [ ] [Multi-cluster topology](https://github.com/mariadb-operator/mariadb-operator/issues/1543)

***

#### Community

Contributions of any kind are always welcome: adding yourself to the [list of adopters](https://github.com/mariadb-operator/mariadb-operator/blob/main/ADOPTERS.md), reporting issues, submitting pull requests, or simply starring the project! 🌟

#### Enterprise

For enterprise users, see the **[MariaDB Enterprise Operator](https://mariadb.com/products/enterprise/kubernetes-operator/)**, a commercially supported Kubernetes operator from MariaDB with additional enterprise-grade features.

#### What's Changed

- feat: Use primary Service by default for HA mariaDB connections by [@&#8203;softho0n](https://github.com/softho0n) in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- feat: add loadBalancerClass field to ServiceTemplate by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- fix: use standard compression extensions and add magic bytes validation by [@&#8203;yangminglintw](https://github.com/yangminglintw) in [#&#8203;1588](https://github.com/mariadb-operator/mariadb-operator/pull/1588)
- Make volumes and volumeMounts mutable by [@&#8203;hedgieinsocks](https://github.com/hedgieinsocks) in [#&#8203;1601](https://github.com/mariadb-operator/mariadb-operator/pull/1601)
- chore: Bump to latest go by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1630](https://github.com/mariadb-operator/mariadb-operator/pull/1630)
- make imagePullSecrets mutable by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- split config images in repository and tag by [@&#8203;dmaes](https://github.com/dmaes) in [#&#8203;1632](https://github.com/mariadb-operator/mariadb-operator/pull/1632)
- Galera recovery: disable bootstrap on other pods before bootstrapping by [@&#8203;infocusmodereal](https://github.com/infocusmodereal) in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- Bump github.com/minio/minio-go/v7 from 7.0.97 to 7.0.98 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1585](https://github.com/mariadb-operator/mariadb-operator/pull/1585)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.13.0 to 2.16.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1624](https://github.com/mariadb-operator/mariadb-operator/pull/1624)
- Bump ghcr.io/devcontainers/features/kubectl-helm-minikube from 1.2.2 to 1.3.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1623](https://github.com/mariadb-operator/mariadb-operator/pull/1623)
- Bump goreleaser/goreleaser-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1620](https://github.com/mariadb-operator/mariadb-operator/pull/1620)
- Bump github.com/onsi/gomega from 1.38.3 to 1.39.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1581](https://github.com/mariadb-operator/mariadb-operator/pull/1581)
- Bump crate-ci/typos from 1.41.0 to 1.44.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1625](https://github.com/mariadb-operator/mariadb-operator/pull/1625)
- Bump github.com/onsi/ginkgo/v2 from 2.27.3 to 2.27.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1586](https://github.com/mariadb-operator/mariadb-operator/pull/1586)
- Bump github.com/cert-manager/cert-manager from 1.18.2 to 1.19.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1580](https://github.com/mariadb-operator/mariadb-operator/pull/1580)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.87.1 to 0.88.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1579](https://github.com/mariadb-operator/mariadb-operator/pull/1579)
- Disable service links in MariaDB and MaxScale pod specs by [@&#8203;usiegj00](https://github.com/usiegj00) in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- Fix finalizer for ExternalMariDB by [@&#8203;snaax](https://github.com/snaax) in [#&#8203;1606](https://github.com/mariadb-operator/mariadb-operator/pull/1606)
- test: Added int tests for sql resources with external mariadb deletion by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1649](https://github.com/mariadb-operator/mariadb-operator/pull/1649)
- Bump github.com/minio/minio-go/v7 from 7.0.98 to 7.0.99 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1648](https://github.com/mariadb-operator/mariadb-operator/pull/1648)
- Bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1645](https://github.com/mariadb-operator/mariadb-operator/pull/1645)
- Bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1644](https://github.com/mariadb-operator/mariadb-operator/pull/1644)
- Bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1642](https://github.com/mariadb-operator/mariadb-operator/pull/1642)
- Bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1641](https://github.com/mariadb-operator/mariadb-operator/pull/1641)
- Bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1646](https://github.com/mariadb-operator/mariadb-operator/pull/1646)
- Bump ghcr.io/devcontainers/features/docker-in-docker from 2.16.0 to 2.16.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1640](https://github.com/mariadb-operator/mariadb-operator/pull/1640)
- Bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1638](https://github.com/mariadb-operator/mariadb-operator/pull/1638)
- Bump github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring from 0.88.0 to 0.89.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1643](https://github.com/mariadb-operator/mariadb-operator/pull/1643)
- Bump golang from 1.25.7-alpine3.23 to 1.26.1-alpine3.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1639](https://github.com/mariadb-operator/mariadb-operator/pull/1639)
- feat: Latest controller-runtime. Webhook changes, New Events API by [@&#8203;Michaelpalacce](https://github.com/Michaelpalacce) in [#&#8203;1651](https://github.com/mariadb-operator/mariadb-operator/pull/1651)
- Support for ephemeral volumes in `MariaDB` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1650](https://github.com/mariadb-operator/mariadb-operator/pull/1650)
- fix: accept compressed backup files in logical restore by [@&#8203;voron](https://github.com/voron) in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- Fix typo: syncrhonous -> synchronous by [@&#8203;sjmudd](https://github.com/sjmudd) in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)
- Release 26.03: `PointInTimeRecovery`, Azure Blob Storage & on-demand `PhysicalBackups` by [@&#8203;mmontes11](https://github.com/mmontes11) in [#&#8203;1517](https://github.com/mariadb-operator/mariadb-operator/pull/1517)

#### New Contributors

- [@&#8203;softho0n](https://github.com/softho0n) made their first contribution in [#&#8203;1575](https://github.com/mariadb-operator/mariadb-operator/pull/1575)
- [@&#8203;yangminglintw](https://github.com/yangminglintw) made their first contribution in [#&#8203;1589](https://github.com/mariadb-operator/mariadb-operator/pull/1589)
- [@&#8203;dmaes](https://github.com/dmaes) made their first contribution in [#&#8203;1614](https://github.com/mariadb-operator/mariadb-operator/pull/1614)
- [@&#8203;infocusmodereal](https://github.com/infocusmodereal) made their first contribution in [#&#8203;1631](https://github.com/mariadb-operator/mariadb-operator/pull/1631)
- [@&#8203;usiegj00](https://github.com/usiegj00) made their first contribution in [#&#8203;1635](https://github.com/mariadb-operator/mariadb-operator/pull/1635)
- [@&#8203;voron](https://github.com/voron) made their first contribution in [#&#8203;1655](https://github.com/mariadb-operator/mariadb-operator/pull/1655)
- [@&#8203;sjmudd](https://github.com/sjmudd) made their first contribution in [#&#8203;1657](https://github.com/mariadb-operator/mariadb-operator/pull/1657)

**Full Changelog**: <https://github.com/mariadb-operator/mariadb-operator/compare/25.10.4...26.3.0>

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4707
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 19:56:37 +00:00
35a38636f8 chore(deps): update dependency clidey/whodb to v0.99.0 (#4708)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 23s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [clidey/whodb](https://github.com/clidey/whodb) | minor | `0.98.0` → `0.99.0` |

---

### Release Notes

<details>
<summary>clidey/whodb (clidey/whodb)</summary>

### [`v0.99.0`](https://github.com/clidey/whodb/releases/tag/0.99.0)

[Compare Source](https://github.com/clidey/whodb/compare/0.98.0...0.99.0)

- Migrate OpenAI to the Responses API with a probe check to fallback to the Completions if it's not supported. This applies to OpenAI-compatible providers as well.
- Reduce the amount of SQL queries made on initial load.
- Query table information on-demand.
- Ideally fix the Apple DMG build.
- Add a small notification on the bottom left whenever a new update is available - this shows up only in the Docker and executable versions. Store versions automatically get updated.
- Add a small message in the CLI for when there is an update.
- MySQL and Postgres now respect user's permissions/grants and show only the databases they have access to.
- Backend updates and small optimisations.

#### Installation

##### Mac App Store

[Download from the Apple Store](https://apps.apple.com/app/whodb/id6754566536)

##### Microsoft Store

[Download from the Microsoft Store](https://apps.microsoft.com/detail/9pftx5bv4ds6)

##### Snap Store

```bash
sudo snap install whodb
```

[View on Snapcraft](https://snapcraft.io/whodb)

##### Docker

```bash
docker pull clidey/whodb:0.99.0
docker pull clidey/whodb:latest
```

##### Direct Downloads

See assets below for platform-specific packages (DMG, MSIX, etc.).

#### Documentation

- [Documentation](https://docs.whodb.com)
- [Report Issues](https://github.com/clidey/whodb/issues)

#### Upgrade Notes

To upgrade from a previous version:

- **Docker**: Pull the latest image and restart your container
- **Snap**: Run `sudo snap refresh whodb`
- **Desktop Apps**: Download and install the new version

***

**Full Changelog**: <https://github.com/clidey/whodb/compare/0.98.0...0.99.0>

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4708
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 19:55:12 +00:00
70c6f22182 chore(deps): update advplyr/audiobookshelf to v2.33.0 (#4688)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 46s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [advplyr/audiobookshelf](https://github.com/advplyr/audiobookshelf) | minor | `2.32.1` → `2.33.0` |
| [ghcr.io/advplyr/audiobookshelf](https://github.com/advplyr/audiobookshelf) | minor | `2.32.1` → `2.33.0` |

---

### Release Notes

<details>
<summary>advplyr/audiobookshelf (advplyr/audiobookshelf)</summary>

### [`v2.33.0`](https://github.com/advplyr/audiobookshelf/releases/tag/v2.33.0)

[Compare Source](https://github.com/advplyr/audiobookshelf/compare/v2.32.1...v2.33.0)

##### Important: New authentication system was added in [v2.26.0](https://github.com/advplyr/audiobookshelf/releases/tag/v2.26.0). See <https://github.com/advplyr/audiobookshelf/discussions/4460> for details.

##### Added

- Slovak language option by [@&#8203;belpe](https://github.com/belpe) in [#&#8203;5077](https://github.com/advplyr/audiobookshelf/issues/5077)
- Belarusian language option by [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) in [#&#8203;5071](https://github.com/advplyr/audiobookshelf/issues/5071)
- Database indexes for discover query performance by [@&#8203;kevingatera](https://github.com/kevingatera) in [#&#8203;5073](https://github.com/advplyr/audiobookshelf/issues/5073)

##### Fixed

- IDOR vulnerabilities in listening sessions, media progress, and bookmark endpoints [#&#8203;5062](https://github.com/advplyr/audiobookshelf/issues/5062) by [@&#8203;mandreko](https://github.com/mandreko) in [#&#8203;5063](https://github.com/advplyr/audiobookshelf/issues/5063)
- Server crash filtering by decade with collapsed series
- Server crash on `/me/progress/:libraryItemId/:episodeId?` when episodeId is not passed in for a podcast library item [#&#8203;5058](https://github.com/advplyr/audiobookshelf/issues/5058)
- Updating author name merging with same name authors in a different library [#&#8203;4628](https://github.com/advplyr/audiobookshelf/issues/4628)
- Home page check current user from socket event when updating hide from continue listening
- UI/UX: Match tab "click to use current value" incorrect title attribute
- UI/UX: Aria-label for jump backward button by [@&#8203;KiwiHour](https://github.com/KiwiHour) in [#&#8203;4973](https://github.com/advplyr/audiobookshelf/issues/4973)

##### Changed

- Improved personalized shelves performance by parallelizing shelf queries and reducing search payload size by [@&#8203;kevingatera](https://github.com/kevingatera) in [#&#8203;5073](https://github.com/advplyr/audiobookshelf/issues/5073)
- Improved API cache invalidation for high-churn models (sessions, media progress) by [@&#8203;kevingatera](https://github.com/kevingatera) in [#&#8203;5073](https://github.com/advplyr/audiobookshelf/issues/5073)
- Improved subtitle parsing to account for bare colon in title by [@&#8203;kctdfh](https://github.com/kctdfh) in [#&#8203;5036](https://github.com/advplyr/audiobookshelf/issues/5036)
- Sanitize session DeviceInfo `clientDeviceInfo` fields
- Sanitize server settings `authLoginCustomMessage` on save and load
- Fix OpenAPI spec description by [@&#8203;openam](https://github.com/openam) in [#&#8203;5042](https://github.com/advplyr/audiobookshelf/issues/5042)
- UI/UX: Display localized/styled text for selected filter by [@&#8203;sir-wilhelm](https://github.com/sir-wilhelm) in [#&#8203;4952](https://github.com/advplyr/audiobookshelf/issues/4952)
- More strings translated
  - Belarusian by [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka)
  - Catalan by [@&#8203;enboig](https://github.com/enboig)
  - Chinese (Simplified Han script) by [@&#8203;FiendFEARing](https://github.com/FiendFEARing)
  - Czech by [@&#8203;Plazec](https://github.com/Plazec)
  - Danish by [@&#8203;xxzp3](https://github.com/xxzp3)
  - French by [@&#8203;dapitch666](https://github.com/dapitch666)
  - German by [@&#8203;ShaikaJar](https://github.com/ShaikaJar) [@&#8203;Maxklos](https://github.com/Maxklos) [@&#8203;B0rax](https://github.com/B0rax)
  - Greek by [@&#8203;lambolighting](https://github.com/lambolighting)
  - Hebrew by [@&#8203;enosh](https://github.com/enosh)
  - Hungarian by [@&#8203;Kabika82](https://github.com/Kabika82) [@&#8203;ugyes](https://github.com/ugyes)
  - Japanese by [@&#8203;litoma](https://github.com/litoma)
  - Lithuanian by [@&#8203;mantas3](https://github.com/mantas3)
  - Norwegian Bokmål by [@&#8203;Torstein-Eide](https://github.com/Torstein-Eide) [@&#8203;soteland](https://github.com/soteland)
  - Polish by [@&#8203;Jarsey45](https://github.com/Jarsey45)
  - Portuguese (Brazil) by [@&#8203;lribeiro](https://github.com/lribeiro)
  - Romanian by [@&#8203;hac3ru](https://github.com/hac3ru)
  - Slovak by [@&#8203;goozi12345](https://github.com/goozi12345) [@&#8203;pecer](https://github.com/pecer)
  - Slovenian by [@&#8203;thehijacker](https://github.com/thehijacker)
  - Swedish by [@&#8203;Cotignac](https://github.com/Cotignac) [@&#8203;karlbe](https://github.com/karlbe)

##### New Contributors

- [@&#8203;KiwiHour](https://github.com/KiwiHour) made their first contribution in [#&#8203;4973](https://github.com/advplyr/audiobookshelf/pull/4973)
- [@&#8203;openam](https://github.com/openam) made their first contribution in [#&#8203;5042](https://github.com/advplyr/audiobookshelf/pull/5042)
- [@&#8203;belpe](https://github.com/belpe) made their first contribution in [#&#8203;5077](https://github.com/advplyr/audiobookshelf/pull/5077)
- [@&#8203;pavel-miniutka](https://github.com/pavel-miniutka) made their first contribution in [#&#8203;5071](https://github.com/advplyr/audiobookshelf/pull/5071)
- [@&#8203;kctdfh](https://github.com/kctdfh) made their first contribution in [#&#8203;5036](https://github.com/advplyr/audiobookshelf/pull/5036)
- [@&#8203;mandreko](https://github.com/mandreko) made their first contribution in [#&#8203;5063](https://github.com/advplyr/audiobookshelf/pull/5063)
- [@&#8203;kevingatera](https://github.com/kevingatera) made their first contribution in [#&#8203;5073](https://github.com/advplyr/audiobookshelf/pull/5073)

**Full Changelog**: <https://github.com/advplyr/audiobookshelf/compare/v2.32.1...v2.33.0>

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4688
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 19:52:47 +00:00
c2341618be chore(deps): update helm release grafana-operator to v5.22.1 (#4732)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 47s
renovate / renovate (push) Has been cancelled
2026-03-14 19:51:17 +00:00
48d8d45d32 chore(deps): update dependency grafana/grafana-operator to v5.22.1 (#4731)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Has been cancelled
2026-03-14 19:48:18 +00:00
4a1b87c88d chore(deps): update g33kphr33k/musicgrabber docker tag to v2.4.3 (#4683)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| g33kphr33k/musicgrabber | minor | `2.3.5` → `2.4.3` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4683
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 19:46:02 +00:00
299824856e chore(deps): update rmcrackan/libation to v13.3.0 (#4677)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 9s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rmcrackan/Libation](https://github.com/rmcrackan/Libation) | minor | `13.2.1` → `13.3.0` |
| [rmcrackan/libation](https://github.com/rmcrackan/Libation) | minor | `13.2.1` → `13.3.0` |

---

### Release Notes

<details>
<summary>rmcrackan/Libation (rmcrackan/Libation)</summary>

### [`v13.3.0`](https://github.com/rmcrackan/Libation/releases/tag/v13.3.0): Libation 13.3

[Compare Source](https://github.com/rmcrackan/Libation/compare/v13.2.1...v13.3.0)

<!-- BEGIN NO-APP -->

> <a href="https://getlibation.com"><img src=".github/download-icon.svg" width="20" height="20" alt="" /></a> **[Which version should I download?](https://getlibation.com)** — get a recommended download for your system on our site.

<!-- END NO-APP -->

- Bug fix [#&#8203;1664](https://github.com/rmcrackan/Libation/issues/1664) -- WebView breaks catastrophically under Linux Snap -- segfault with no logged errors
- Bug fix [#&#8203;1625](https://github.com/rmcrackan/Libation/issues/1625) -- fix macOS key bindings
- Bug fix [#&#8203;1673](https://github.com/rmcrackan/Libation/issues/1673) -- Fix naming template links
- Bug fix [#&#8203;1672](https://github.com/rmcrackan/Libation/issues/1672) -- disallow WebView for linux snap
- Bug fix [#&#8203;1668](https://github.com/rmcrackan/Libation/issues/1668) -- accessibility bugs
- Cleaner display of upgrade notes

Thanks to [@&#8203;cvigano](https://github.com/cvigano) , [@&#8203;rasmussehlin](https://github.com/rasmussehlin)

<!-- BEGIN NO-APP -->

[Libation](https://github.com/rmcrackan/Libation) is a free, open source audible library manager. Decrypt, backup, organize, and search your audible library

I intend to keep Libation free and open source, but if you want to [leave a tip](https://paypal.me/mcrackan?locale.x=en_us), who am I to argue?

<!-- END NO-APP -->

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4677
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 19:44:26 +00:00
d13eab410d chore(deps): update ghcr.io/linuxserver/code-server docker tag to v4.111.0 (#4655)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 45s
renovate / renovate (push) Successful in 1m39s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/linuxserver/code-server](https://github.com/linuxserver/docker-code-server/packages) ([source](https://github.com/linuxserver/docker-code-server)) | minor | `4.110.0` → `4.111.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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4655
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 18:34:40 +00:00
3f22ffaf20 chore(deps): update helm release loki to v6.55.0 (#4622)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 45s
renovate / renovate (push) Successful in 5m46s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [loki](https://grafana.github.io/helm-charts) ([source](https://github.com/grafana/helm-charts)) | minor | `6.53.0` → `6.55.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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: #4622
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-14 18:21:50 +00:00
2c45d442a0 fix: apply workaround for missing flag
All checks were successful
lint-test-helm / lint-helm (push) Successful in 54s
render-manifests-push / render-manifests-push (push) Successful in 49s
renovate / renovate (push) Successful in 7m19s
2026-03-14 13:12:41 -05:00
3f28fc34f1 chore(deps): update helm release headlamp to v0.40.1 (#4725)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 30s
renovate / renovate (push) Successful in 2m9s
2026-03-14 15:03:45 +00:00
b5411738b0 chore(deps): update gitea/gitea docker tag to v1.25.5 (#4723)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 19s
renovate / renovate (push) Successful in 3m43s
2026-03-14 04:02:57 +00:00
b61abdf681 chore(deps): update gitea/gitea docker tag to v1.25.5 (#4722)
Some checks failed
renovate / renovate (push) Has been cancelled
lint-test-docker / lint-docker-compose (push) Successful in 1m7s
2026-03-14 04:02:46 +00:00
2b817f6fcb chore(deps): update dependency go-gitea/gitea to v1.25.5 (#4719)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 15s
renovate / renovate (push) Successful in 2m54s
2026-03-14 03:04:13 +00:00
cbd4923e71 chore(deps): update php docker tag to v8.5.4 (#4717)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 15s
renovate / renovate (push) Successful in 4m53s
render-manifests-dispatch / render-manifests-dispatch (push) Successful in 40m11s
2026-03-14 02:02:40 +00:00
4eac595b8e chore(deps): update freikin/dawarich docker tag to v1.3.3 (#4714)
All checks were successful
renovate / renovate (push) Successful in 2m39s
2026-03-13 22:03:30 +00:00
a7ae2c9ad0 chore(deps): update freikin/dawarich docker tag to v1.3.3 (#4714)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 20s
renovate / renovate (push) Successful in 5m2s
2026-03-13 22:03:21 +00:00
fa7575d411 chore(deps): update dependency freika/dawarich to v1.3.3 (#4713)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 16s
renovate / renovate (push) Has been cancelled
2026-03-13 22:02:59 +00:00
1cf76fcf30 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.12.0 (#4711)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 56s
renovate / renovate (push) Successful in 3m25s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.11.0` → `3.12.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.12.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.12.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.11.0...3.12.0)

##### Features

- enable prerender pending resoltuion of server island fix ([7b8fb38](7b8fb380d4))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4711
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-13 18:13:25 +00:00
9278764dbc chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.11.0 (#4709)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Successful in 1m49s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.10.0` → `3.11.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.11.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.11.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.10.0...3.11.0)

##### Features

- adjustment to spacing ([629403f](629403fdde))
- improve category cards spacing, overflow, and add fade effect to edges ([d0f1098](d0f10986cd))
- move script handling to use swup instead of astro transitions, move animations to baselayout ([500d9e2](500d9e2ea0))
- remove astro features that are replaced by swup ([70a9499](70a94990e2))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4709
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-13 16:36:52 +00:00
0be6ad1431 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.10.0 (#4702)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 22s
renovate / renovate (push) Successful in 4m16s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.9.0` → `3.10.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.10.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.10.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.9.0...3.10.0)

##### Bug Fixes

- function needing paranthensis ([54c82a7](54c82a7f79))

##### Features

- add scripts to clear and run from scratch ([805cb28](805cb28185))
- disable prerender pending resoltuion of server island fix ([eab6e0c](eab6e0c31d))
- test placing weather section below posts ([43f0f7b](43f0f7b324))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4702
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-13 15:00:04 +00:00
ebc47e9e3b chore(deps): update searxng/searxng:latest docker digest to 174f6a8 (#4700)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 17s
renovate / renovate (push) Successful in 2m59s
2026-03-13 14:02:51 +00:00
f3d0665e21 chore(deps): update searxng/searxng:latest docker digest to 563b0a0 (#4698)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m39s
renovate / renovate (push) Successful in 2m41s
2026-03-13 13:02:31 +00:00
95a176105b chore(deps): update searxng/searxng:latest docker digest to fce67c4 (#4696)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 2m2s
renovate / renovate (push) Successful in 2m18s
2026-03-13 12:02:35 +00:00
2694919396 feat: remove volsync, rely on backrest
All checks were successful
render-manifests-push / render-manifests-push (push) Successful in 33s
lint-test-helm / lint-helm (push) Successful in 2m23s
renovate / renovate (push) Successful in 2m21s
2026-03-12 23:17:38 -05:00
c443d5726f fix: pvc target
All checks were successful
lint-test-helm / lint-helm (push) Successful in 13s
render-manifests-push / render-manifests-push (push) Successful in 4m39s
renovate / renovate (push) Successful in 7m1s
2026-03-12 23:06:50 -05:00
dea7df4e32 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.9.0 (#4692)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 3m2s
renovate / renovate (push) Successful in 3m9s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.8.0` → `3.9.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.9.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.9.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.8.0...3.9.0)

##### Features

- copy package.json ([0bef13c](0bef13c414))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4692
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-13 03:57:45 +00:00
614d68c3da feat: overhaul mount
Some checks failed
lint-test-helm / lint-helm (push) Has started running
render-manifests-push / render-manifests-push (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-12 22:56:53 -05:00
30b681a559 fix: incorrect key added
All checks were successful
lint-test-helm / lint-helm (push) Successful in 10s
render-manifests-push / render-manifests-push (push) Successful in 50s
renovate / renovate (push) Successful in 3m31s
2026-03-12 22:19:22 -05:00
b3b4d84dbb feat: add specific volumes for media
Some checks failed
lint-test-helm / lint-helm (push) Successful in 10s
render-manifests-push / render-manifests-push (push) Failing after 19s
renovate / renovate (push) Has been cancelled
2026-03-12 22:16:28 -05:00
ffae594719 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.8.0 (#4689)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Successful in 1m58s
render-manifests-dispatch / render-manifests-dispatch (push) Successful in 48m1s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.7.0` → `3.8.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.8.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.8.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.7.0...3.8.0)

##### Features

- disable security feature ([0dfcc25](0dfcc25984))
- use alpine-dev for bun builder ([4c8665e](4c8665ebe2))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4689
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 23:36:48 +00:00
0dc33b53e6 chore(deps): update harbor.alexlebens.net/images/site-documentation docker tag to v0.2.0 (#4686)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m3s
renovate / renovate (push) Successful in 2m28s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-documentation](https://gitea.alexlebens.dev/alexlebens/site-documentation) | minor | `0.1.7` → `0.2.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-documentation (harbor.alexlebens.net/images/site-documentation)</summary>

### [`v0.2.0`](https://gitea.alexlebens.dev/alexlebens/site-documentation/releases/tag/0.2.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-documentation/compare/0.1.7...0.2.0)

### [0.2.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.1.7...0.2.0) (2026-03-12)

##### Features

- add robots ([4ef4353](4ef43534a0))
- switch to bun ([7413830](74138302a4))
- trigger minor version update ([7a9b62d](7a9b62dc04))
- use alpine-dev for bun builder ([4575bfb](4575bfb913))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4686
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 22:12:31 +00:00
7d53608960 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.7.0 (#4684)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m3s
renovate / renovate (push) Successful in 3m20s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.5.0` → `3.7.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.7.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.7.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.5.0...3.7.0)

##### Bug Fixes

- incorrect name of step ([db79f91](db79f912ee))
- use semantic release outputs ([578e166](578e1661cd))

##### Features

- add automation to release using release-please in workflows ([99032f7](99032f7a62))
- add if to ignore harbor release result ([ce75e7c](ce75e7ca5e))
- add outputs of semantic release ([36eaa0c](36eaa0c132))
- add release branch, update and merge release workflow ([68f2080](68f2080bda))
- add semantic release ([620b496](620b496957))
- add token ([e0a3d39](e0a3d391b3))
- change release format ([24c837c](24c837cf84))
- ignore on docs updates ([4b58117](4b58117454))
- install deps ([f32b75e](f32b75e31d))
- remove old release workflows ([7882c3e](7882c3ecc7))
- remove release-please ([07fa86b](07fa86b17c))
- setup node for semantic release ([bf3a7ef](bf3a7ef261))
- use different workflow for gitea ([1577ee4](1577ee4c27))

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4684
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 21:13:38 +00:00
4a141dbc3f feat: increase timeout
All checks were successful
lint-test-helm / lint-helm (push) Successful in 15s
render-manifests-push / render-manifests-push (push) Successful in 39s
renovate / renovate (push) Successful in 2m38s
2026-03-12 15:18:02 -05:00
40ce4335a9 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.5.0 (#4664)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 11s
renovate / renovate (push) Successful in 2m7s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.4.0` → `3.5.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.5.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.4.0...3.5.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.4.0...3.5.0)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4664
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 17:23:36 +00:00
6428ac8217 chore(deps): update searxng/searxng:latest docker digest to 5cdcc74 (#4680)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 9s
renovate / renovate (push) Successful in 2m10s
2026-03-12 16:03:04 +00:00
7a7bd46984 chore(deps): update searxng/searxng:latest docker digest to 1450a5d (#4678)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Successful in 2m52s
2026-03-12 15:03:11 +00:00
c7641c67e8 chore(deps): update helm release argo-workflows to v0.47.5 (#4674)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 37s
renovate / renovate (push) Successful in 2m59s
2026-03-12 13:03:37 +00:00
97d15a26ca chore(deps): update dependency argoproj/argo-workflows to v4.0.2 (#4673)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 19s
renovate / renovate (push) Successful in 4m4s
2026-03-12 12:03:43 +00:00
91971a24ee chore(deps): update helm release matrix-synapse to v3.12.23 (#4671)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 18s
renovate / renovate (push) Successful in 3m34s
2026-03-12 11:04:14 +00:00
3d6de8fa72 chore(deps): update dependency element-hq/synapse to v1.149.1 (#4670)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 23s
renovate / renovate (push) Has been cancelled
2026-03-12 11:03:32 +00:00
33924a275d chore(deps): update nginx docker tag to v1.29.6 (#4667)
All checks were successful
renovate / renovate (push) Successful in 4m7s
2026-03-12 08:02:10 +00:00
5e48a9db8d chore(deps): update nginx docker tag to v1.29.6 (#4667)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 20s
renovate / renovate (push) Successful in 2m11s
2026-03-12 08:02:07 +00:00
227ccd50b9 chore(deps): update dependency garethgeorge/backrest to v1.12.1 (#4665)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 32s
renovate / renovate (push) Successful in 1m46s
2026-03-12 07:03:05 +00:00
961bc81cef chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.4.0 (#4662)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 17s
render-manifests-dispatch / render-manifests-dispatch (push) Successful in 32m21s
renovate / renovate (push) Successful in 2m44s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.1.0` → `3.4.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.4.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.2.0...3.4.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.2.0...3.4.0)

### [`v3.2.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.1.0...3.2.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.1.0...3.2.0)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4662
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 01:15:01 +00:00
e7290b7e81 feat: downgrade to 3.1.0
All checks were successful
lint-test-helm / lint-helm (push) Successful in 16s
render-manifests-push / render-manifests-push (push) Successful in 50s
renovate / renovate (push) Successful in 2m37s
2026-03-11 19:39:06 -05:00
eefbd21304 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.2.0 (#4659)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Successful in 3m30s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.1.0` → `3.2.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.2.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.1.0...3.2.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.1.0...3.2.0)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4659
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-12 00:18:58 +00:00
085729cc95 chore(deps): update postgres-cluster docker tag to v7.9.1 (#4639)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 33s
renovate / renovate (push) Successful in 3m37s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [postgres-cluster](https://github.com/cloudnative-pg/cloudnative-pg) | minor | `7.8.0` → `7.9.1` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiLCJpbWFnZSJdfQ==-->

Reviewed-on: #4639
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-11 23:57:41 +00:00
29552f377f feat: add postgres backups
Some checks failed
lint-test-helm / lint-helm (push) Successful in 10s
render-manifests-push / render-manifests-push (push) Successful in 23s
renovate / renovate (push) Has been cancelled
2026-03-11 18:50:42 -05:00
5852fdfa63 fix: wrong schedule
Some checks failed
lint-test-helm / lint-helm (push) Successful in 28s
render-manifests-push / render-manifests-push (push) Successful in 32s
renovate / renovate (push) Has been cancelled
2026-03-11 18:36:40 -05:00
a9d450980a feat: add remaining buckets
Some checks failed
lint-test-helm / lint-helm (push) Successful in 29s
render-manifests-push / render-manifests-push (push) Successful in 46s
renovate / renovate (push) Has been cancelled
2026-03-11 18:32:07 -05:00
16152a51d8 feat: add rclone for bucket mirror
Some checks failed
lint-test-helm / lint-helm (push) Successful in 21s
render-manifests-push / render-manifests-push (push) Successful in 1m0s
renovate / renovate (push) Has been cancelled
2026-03-11 18:20:18 -05:00
50de25b491 feat: stagger postgres backup schedule
All checks were successful
lint-test-helm / lint-helm (push) Successful in 9s
render-manifests-push / render-manifests-push (push) Successful in 7m24s
renovate / renovate (push) Successful in 12m17s
2026-03-11 17:52:20 -05:00
1de8839122 feat: change volsync schedule 2026-03-11 17:43:59 -05:00
f56e5a8a43 feat: change volsync schedule
Some checks failed
lint-test-helm / lint-helm (push) Successful in 12s
render-manifests-push / render-manifests-push (push) Successful in 2m8s
renovate / renovate (push) Has been cancelled
2026-03-11 17:40:39 -05:00
1c470ee434 feat: change volsync schedule
Some checks failed
lint-test-helm / lint-helm (push) Successful in 1m15s
render-manifests-push / render-manifests-push (push) Successful in 1m35s
renovate / renovate (push) Has been cancelled
2026-03-11 17:37:17 -05:00
d964a690c5 feat: change volsync schedule
Some checks failed
lint-test-helm / lint-helm (push) Successful in 33s
render-manifests-push / render-manifests-push (push) Successful in 1m2s
renovate / renovate (push) Has been cancelled
2026-03-11 17:30:43 -05:00
9342c73600 chore(deps): update directus/directus to v11.16.1 (#4648)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 29s
renovate / renovate (push) Has been cancelled
2026-03-11 22:28:31 +00:00
7d9a4ecfd2 feat: remove monitor
Some checks failed
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 1m1s
renovate / renovate (push) Has been cancelled
2026-03-11 17:25:53 -05:00
0ac8d5a3d5 feat: set object store to null
All checks were successful
lint-test-helm / lint-helm (push) Successful in 12s
render-manifests-push / render-manifests-push (push) Successful in 56s
renovate / renovate (push) Successful in 11m37s
2026-03-11 16:57:17 -05:00
4e81f19249 feat: remove object gateway
Some checks failed
lint-test-helm / lint-helm (push) Successful in 19s
render-manifests-push / render-manifests-push (push) Successful in 1m8s
renovate / renovate (push) Has been cancelled
2026-03-11 16:52:03 -05:00
3d35bdf2df feat: change security context
Some checks failed
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 54s
renovate / renovate (push) Has been cancelled
2026-03-11 16:47:42 -05:00
10ca9c3d8e feat: move to local storage
Some checks failed
lint-test-helm / lint-helm (push) Successful in 15s
render-manifests-push / render-manifests-push (push) Successful in 33s
renovate / renovate (push) Has been cancelled
2026-03-11 16:37:47 -05:00
3ff086685f feat: migrated to garage
All checks were successful
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 53s
renovate / renovate (push) Successful in 10m57s
2026-03-11 16:15:14 -05:00
695a71095f fix: wrong port
All checks were successful
lint-test-helm / lint-helm (push) Successful in 19s
render-manifests-push / render-manifests-push (push) Successful in 35s
renovate / renovate (push) Successful in 2m45s
2026-03-11 15:42:28 -05:00
904f21d7ef feat: vault path
All checks were successful
lint-test-helm / lint-helm (push) Successful in 10s
render-manifests-push / render-manifests-push (push) Successful in 56s
renovate / renovate (push) Successful in 12m4s
2026-03-11 15:24:48 -05:00
f269912cec feat: change backing storage to garage
Some checks failed
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 36s
renovate / renovate (push) Has been cancelled
2026-03-11 15:21:47 -05:00
a41495ac5b feat: change service
All checks were successful
lint-test-helm / lint-helm (push) Successful in 21s
render-manifests-push / render-manifests-push (push) Successful in 47s
renovate / renovate (push) Successful in 1m28s
2026-03-11 14:40:53 -05:00
0d4cd74d1e feat: change index
All checks were successful
lint-test-helm / lint-helm (push) Successful in 22s
render-manifests-push / render-manifests-push (push) Successful in 1m11s
renovate / renovate (push) Successful in 2m45s
2026-03-11 14:05:10 -05:00
d9d30f9c29 fix: missing key
All checks were successful
lint-test-helm / lint-helm (push) Successful in 20s
render-manifests-push / render-manifests-push (push) Successful in 52s
renovate / renovate (push) Successful in 3m27s
2026-03-11 13:56:46 -05:00
1eeefb8a1c feat: change main service
Some checks failed
lint-test-helm / lint-helm (push) Failing after 5s
render-manifests-push / render-manifests-push (push) Failing after 34s
renovate / renovate (push) Has been cancelled
2026-03-11 13:53:48 -05:00
537e2f0f8d feat: enable backups and index
All checks were successful
lint-test-helm / lint-helm (push) Successful in 24s
render-manifests-push / render-manifests-push (push) Successful in 1m22s
renovate / renovate (push) Successful in 3m18s
2026-03-11 13:45:37 -05:00
9d201656b6 chore(deps): update booklore-app/booklore to v2.2.0 (#4633)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 20s
renovate / renovate (push) Successful in 1m40s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [booklore-app/BookLore](https://github.com/booklore-app/BookLore) | minor | `v2.1.0` → `v2.2.0` |
| [ghcr.io/booklore-app/booklore](https://github.com/booklore-app/booklore) | minor | `v2.1.0` → `v2.2.0` |

---

### Release Notes

<details>
<summary>booklore-app/BookLore (booklore-app/BookLore)</summary>

### [`v2.2.0`](https://github.com/booklore-app/booklore/releases/tag/v2.2.0)

[Compare Source](https://github.com/booklore-app/BookLore/compare/v2.1.0...v2.2.0)

#### 🌟 What's New in v2.2.0

This release introduces (or brings back) two new library organization modes: **Book per File** and **Book per Folder**, giving you explicit control over how Booklore groups files into books during scanning.

When Booklore first started, the philosophy was simple: don't worry about how files are organized on disk, just scan everything and figure it out. This worked well when libraries only contained single-file formats like EPUB and PDF. But as support grew for multi-format books and multi-file audiobooks, that approach started to break down. The existing Auto-detect mode uses fuzzy filename matching and heuristics to guess how files should be grouped, and while it works in many cases, it has some real problems: files can get missed during scans, multi-file audiobooks sometimes show up as separate books (one per file), and the grouping behavior is unpredictable since it depends on how your files happen to be named.

Rather than continuing to patch Auto-detect, I'm introducing two new modes that are simple, predictable, and thoroughly-tested:

- **Book per File**: Every file becomes its own book. One file, one book, no guessing. This is now the default for new libraries.

- **Book per Folder**: Files in the same folder are grouped into a single book. Great for organized libraries with an `Author/Title/` structure, and it handles multi-format books and folder-based audiobooks naturally. If you have a folder with an EPUB, a MOBI, and an `audiobook/` subfolder, they all become one book.

**Auto-detect is not going away.** Existing libraries using it will continue to work as before. But it's now marked as legacy, and I strongly recommend switching to one of the new modes. They're simpler, more reliable, and will be the focus of ongoing development and support going forward.

You can set the organization mode when creating a new library, but cannot change it on an existing library. For a detailed breakdown of each mode with examples, check out the [documentation](https://booklore.org/docs/library/organization-modes).

#### 🚀 New Features

- Scanner organization modes and monitoring rework ([#&#8203;3279](https://github.com/booklore-app/BookLore/issues/3279)) by [@&#8203;acx10](https://github.com/acx10)

####  Enhancements

- Add configurable magnifier zoom and lens size for CBX reader ([#&#8203;3260](https://github.com/booklore-app/BookLore/issues/3260)) ([#&#8203;3268](https://github.com/booklore-app/BookLore/issues/3268)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes

- Make OIDC scopes configurable ([#&#8203;3261](https://github.com/booklore-app/BookLore/issues/3261)) ([#&#8203;3265](https://github.com/booklore-app/BookLore/issues/3265)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- Lock organization mode dropdown for AUTO\_DETECT libraries ([#&#8203;3284](https://github.com/booklore-app/BookLore/issues/3284)) by [@&#8203;acx10](https://github.com/acx10)
- Lock organization mode for AUTO\_DETECT libraries ([#&#8203;3283](https://github.com/booklore-app/BookLore/issues/3283)) by [@&#8203;acx10](https://github.com/acx10)
- Translations update from Hosted Weblate ([#&#8203;3248](https://github.com/booklore-app/BookLore/issues/3248)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.2.0`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.2.0`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v2.1.0...v2.2.0>

<img width="728" height="942" alt="Screenshot 2026-03-11 at 8 51 59 AM" src="https://github.com/user-attachments/assets/a8decbd8-e80f-4865-b6ee-bbb612fd20b7" />
<img width="728" height="942" alt="Screenshot 2026-03-11 at 8 51 20 AM" src="https://github.com/user-attachments/assets/51a11cb8-d4ec-47b8-ac09-61cc222a8ab4" />

</details>

<details>
<summary>booklore-app/booklore (ghcr.io/booklore-app/booklore)</summary>

### [`v2.2.0`](https://github.com/booklore-app/booklore/releases/tag/v2.2.0)

[Compare Source](https://github.com/booklore-app/booklore/compare/v2.1.0...v2.2.0)

#### 🌟 What's New in v2.2.0

This release introduces (or brings back) two new library organization modes: **Book per File** and **Book per Folder**, giving you explicit control over how Booklore groups files into books during scanning.

When Booklore first started, the philosophy was simple: don't worry about how files are organized on disk, just scan everything and figure it out. This worked well when libraries only contained single-file formats like EPUB and PDF. But as support grew for multi-format books and multi-file audiobooks, that approach started to break down. The existing Auto-detect mode uses fuzzy filename matching and heuristics to guess how files should be grouped, and while it works in many cases, it has some real problems: files can get missed during scans, multi-file audiobooks sometimes show up as separate books (one per file), and the grouping behavior is unpredictable since it depends on how your files happen to be named.

Rather than continuing to patch Auto-detect, I'm introducing two new modes that are simple, predictable, and thoroughly-tested:

- **Book per File**: Every file becomes its own book. One file, one book, no guessing. This is now the default for new libraries.

- **Book per Folder**: Files in the same folder are grouped into a single book. Great for organized libraries with an `Author/Title/` structure, and it handles multi-format books and folder-based audiobooks naturally. If you have a folder with an EPUB, a MOBI, and an `audiobook/` subfolder, they all become one book.

**Auto-detect is not going away.** Existing libraries using it will continue to work as before. But it's now marked as legacy, and I strongly recommend switching to one of the new modes. They're simpler, more reliable, and will be the focus of ongoing development and support going forward.

You can set the organization mode when creating a new library, but cannot change it on an existing library. For a detailed breakdown of each mode with examples, check out the [documentation](https://booklore.org/docs/library/organization-modes).

#### 🚀 New Features

- Scanner organization modes and monitoring rework ([#&#8203;3279](https://github.com/booklore-app/booklore/issues/3279)) by [@&#8203;acx10](https://github.com/acx10)

####  Enhancements

- Add configurable magnifier zoom and lens size for CBX reader ([#&#8203;3260](https://github.com/booklore-app/booklore/issues/3260)) ([#&#8203;3268](https://github.com/booklore-app/booklore/issues/3268)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐛 Bug Fixes

- Make OIDC scopes configurable ([#&#8203;3261](https://github.com/booklore-app/booklore/issues/3261)) ([#&#8203;3265](https://github.com/booklore-app/booklore/issues/3265)) by [@&#8203;acx10](https://github.com/acx10)

#### 🛠️ Refactoring & Maintenance

- Lock organization mode dropdown for AUTO\_DETECT libraries ([#&#8203;3284](https://github.com/booklore-app/booklore/issues/3284)) by [@&#8203;acx10](https://github.com/acx10)
- Lock organization mode for AUTO\_DETECT libraries ([#&#8203;3283](https://github.com/booklore-app/booklore/issues/3283)) by [@&#8203;acx10](https://github.com/acx10)
- Translations update from Hosted Weblate ([#&#8203;3248](https://github.com/booklore-app/booklore/issues/3248)) by [@&#8203;acx10](https://github.com/acx10)

#### 🐳 Docker Images

- **Docker Hub:** `booklore/booklore:v2.2.0`
- **GitHub Container Registry:** `ghcr.io/booklore-app/booklore:v2.2.0`

**Full Changelog**: <https://github.com/booklore-app/booklore/compare/v2.1.0...v2.2.0>

<img width="728" height="942" alt="Screenshot 2026-03-11 at 8 51 59 AM" src="https://github.com/user-attachments/assets/a8decbd8-e80f-4865-b6ee-bbb612fd20b7" />
<img width="728" height="942" alt="Screenshot 2026-03-11 at 8 51 20 AM" src="https://github.com/user-attachments/assets/51a11cb8-d4ec-47b8-ac09-61cc222a8ab4" />

</details>

---

### 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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4633
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-11 16:06:56 +00:00
95601d3090 chore(deps): update helm release element-web to v1.4.32 (#4634)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Has been cancelled
2026-03-11 16:04:46 +00:00
1a7eaf2d0c chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.1.0 (#4631)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Successful in 4m29s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.0.0` → `3.1.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.1.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.0.0...3.1.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.0.0...3.1.0)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4631
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-11 06:56:19 +00:00
5876d9ab79 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3 (#4628)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Successful in 3m0s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | major | `2.25.0` → `3.0.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.0.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/2.25.0...3.0.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/2.25.0...3.0.0)

</details>

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4628
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-11 06:25:20 +00:00
1c03121d81 chore(deps): update ghcr.io/linuxserver/prowlarr:2.3.0 docker digest to 9ef5d8b (#4627)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Successful in 3m26s
2026-03-11 06:02:48 +00:00
8a828db5a6 chore(deps): update d3fk/s3cmd:latest docker digest to a41234c (#4623)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 10s
renovate / renovate (push) Successful in 2m35s
2026-03-11 04:03:28 +00:00
fe1332a37f chore(deps): update ghcr.io/linuxserver/lidarr:3.1.2-nightly docker digest to 2b1b64f (#4624)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-11 04:03:18 +00:00
0c807bfdf8 chore(deps): update ghcr.io/linuxserver/bazarr:1.5.6 docker digest to 05f9d5b (#4620)
Some checks are pending
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 29s
render-manifests-dispatch / render-manifests-dispatch (push) Has started running
renovate / renovate (push) Successful in 2m50s
2026-03-10 22:04:30 +00:00
66ea9f6e9d feat: fix service
All checks were successful
lint-test-helm / lint-helm (push) Successful in 26s
render-manifests-push / render-manifests-push (push) Successful in 39s
renovate / renovate (push) Successful in 4m1s
2026-03-10 16:21:08 -05:00
bb2eb87f04 feat: add movie-routelette
All checks were successful
lint-test-docker / lint-docker-compose (push) Successful in 18s
lint-test-helm / lint-helm (push) Successful in 29s
render-manifests-push / render-manifests-push (push) Successful in 51s
renovate / renovate (push) Successful in 2m46s
2026-03-10 16:05:21 -05:00
fc4489c280 chore(deps): update goharbor/harbor-exporter docker tag to v2.14.3 (#4605)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 22s
renovate / renovate (push) Successful in 2m5s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| goharbor/harbor-exporter | patch | `v2.14.2` → `v2.14.3` |

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4605
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-10 20:15:39 +00:00
bba5b244a4 chore(deps): update goharbor/registry-photon docker tag to v2.14.3 (#4610)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 28s
renovate / renovate (push) Successful in 2m12s
2026-03-10 20:12:04 +00:00
a9222afe69 chore(deps): update goharbor/harbor-registryctl docker tag to v2.14.3 (#4609)
Some checks failed
lint-test-helm / lint-helm (push) Has been cancelled
render-manifests-push / render-manifests-push (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-10 20:12:00 +00:00
b5984a21c3 chore(deps): update goharbor/harbor-portal docker tag to v2.14.3 (#4608)
Some checks failed
lint-test-helm / lint-helm (push) Has been cancelled
render-manifests-push / render-manifests-push (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-10 20:11:36 +00:00
4083a71d11 chore(deps): update goharbor/harbor-jobservice docker tag to v2.14.3 (#4607)
Some checks failed
renovate / renovate (push) Has been cancelled
2026-03-10 20:11:28 +00:00
d909ba3edd chore(deps): update goharbor/harbor-jobservice docker tag to v2.14.3 (#4607)
Some checks failed
lint-test-helm / lint-helm (push) Has been cancelled
render-manifests-push / render-manifests-push (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-10 20:11:21 +00:00
f95e1987cf chore(deps): update goharbor/harbor-core docker tag to v2.14.3 (#4604)
Some checks failed
lint-test-helm / lint-helm (push) Has been cancelled
render-manifests-push / render-manifests-push (push) Has been skipped
renovate / renovate (push) Has been cancelled
2026-03-10 20:10:59 +00:00
9a9198fa40 chore(deps): update ghcr.io/siderolabs/talosctl docker tag to v1.12.5 (#4603)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-03-10 20:10:45 +00:00
fd4e5349f8 chore(deps): update dependency goharbor/harbor to v2.14.3 (#4602)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 15s
renovate / renovate (push) Has been cancelled
2026-03-10 20:10:18 +00:00
b5ecdf7cc9 chore(deps): update gitroomhq/postiz-app to v2.20.2 (#4600)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 26s
renovate / renovate (push) Successful in 2m23s
2026-03-10 19:27:38 +00:00
def594a753 chore(deps): update vectorim/element-web docker tag to v1.12.12 (#4596)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 14s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [vectorim/element-web](https://github.com/element-hq/element-web) | patch | `v1.12.11` → `v1.12.12` |

---

### Release Notes

<details>
<summary>element-hq/element-web (vectorim/element-web)</summary>

### [`v1.12.12`](https://github.com/element-hq/element-web/releases/tag/v1.12.12)

[Compare Source](https://github.com/element-hq/element-web/compare/v1.12.11...v1.12.12)

####  Features

- Add stable support for MSC4380 invite blocking ([#&#8203;31966](https://github.com/element-hq/element-web/pull/31966)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).
- Hide the names of banned users behind a spoiler tag ([#&#8203;32424](https://github.com/element-hq/element-web/pull/32424)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Room list: remove bold effect on selected room ([#&#8203;32593](https://github.com/element-hq/element-web/pull/32593)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Use Compound buttons in auth screens ([#&#8203;32562](https://github.com/element-hq/element-web/pull/32562)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Track room list sorting algorithm changes ([#&#8203;32556](https://github.com/element-hq/element-web/pull/32556)). Contributed by [@&#8203;MidhunSureshR](https://github.com/MidhunSureshR).
- Update `sso_redirect_options` to work for Native OIDC ([#&#8203;32537](https://github.com/element-hq/element-web/pull/32537)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).

#### 🐛 Bug Fixes

- Room list: avoid excessive re-renders on room list store update or filter change ([#&#8203;32663](https://github.com/element-hq/element-web/pull/32663)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Room list: listen to call event to check number of participants ([#&#8203;32677](https://github.com/element-hq/element-web/pull/32677)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Fix invite-specific join errors not being shown ([#&#8203;32621](https://github.com/element-hq/element-web/pull/32621)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Prevent logging lots of "Browser unsupported" lines ([#&#8203;32647](https://github.com/element-hq/element-web/pull/32647)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Update critical gradient for room status bar ([#&#8203;32575](https://github.com/element-hq/element-web/pull/32575)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Room list: avoid header overflowing when too long ([#&#8203;32645](https://github.com/element-hq/element-web/pull/32645)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Room list: center focus outline of room list item ([#&#8203;32637](https://github.com/element-hq/element-web/pull/32637)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Fix misaligned cross in complete security dialog ([#&#8203;32614](https://github.com/element-hq/element-web/pull/32614)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Room list: fix keyboard navigation ([#&#8203;32585](https://github.com/element-hq/element-web/pull/32585)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Don't show empty privacy section ([#&#8203;32582](https://github.com/element-hq/element-web/pull/32582)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Disable room list image dragging ([#&#8203;32590](https://github.com/element-hq/element-web/pull/32590)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Update UserMenu theme toggle to use IconButton ([#&#8203;32591](https://github.com/element-hq/element-web/pull/32591)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Room list: make room list item scales with large font size ([#&#8203;32523](https://github.com/element-hq/element-web/pull/32523)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4596
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-10 19:24:51 +00:00
3ed423c486 chore(deps): update dependency rancher/local-path-provisioner to v0.0.35 (#4585)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 13s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rancher/local-path-provisioner](https://github.com/rancher/local-path-provisioner) | patch | `v0.0.34` → `v0.0.35` |

---

### Release Notes

<details>
<summary>rancher/local-path-provisioner (rancher/local-path-provisioner)</summary>

### [`v0.0.35`](https://github.com/rancher/local-path-provisioner/releases/tag/v0.0.35): Local Path Provisioner v0.0.35

[Compare Source](https://github.com/rancher/local-path-provisioner/compare/v0.0.34...v0.0.35)

#### What's Changed

- Add FOSSA scanning workflow by [@&#8203;macedogm](https://github.com/macedogm) in [#&#8203;551](https://github.com/rancher/local-path-provisioner/pull/551)
- Build linux/ppc64le images through build on GitHub Actions by [@&#8203;kishen-v](https://github.com/kishen-v) in [#&#8203;554](https://github.com/rancher/local-path-provisioner/pull/554)
- updated golang to 1.26.0 by [@&#8203;jgoodall](https://github.com/jgoodall) in [#&#8203;557](https://github.com/rancher/local-path-provisioner/pull/557)
- feat: Allow custom node affinity keys by [@&#8203;ipantchev](https://github.com/ipantchev) in [#&#8203;559](https://github.com/rancher/local-path-provisioner/pull/559)
- chore: update golang to 1.26.1 by [@&#8203;derekbit](https://github.com/derekbit) in [#&#8203;561](https://github.com/rancher/local-path-provisioner/pull/561)
- chore(release): bump to v0.0.35 by [@&#8203;derekbit](https://github.com/derekbit) in [#&#8203;562](https://github.com/rancher/local-path-provisioner/pull/562)

#### New Contributors

- [@&#8203;macedogm](https://github.com/macedogm) made their first contribution in [#&#8203;551](https://github.com/rancher/local-path-provisioner/pull/551)
- [@&#8203;jgoodall](https://github.com/jgoodall) made their first contribution in [#&#8203;557](https://github.com/rancher/local-path-provisioner/pull/557)
- [@&#8203;ipantchev](https://github.com/ipantchev) made their first contribution in [#&#8203;559](https://github.com/rancher/local-path-provisioner/pull/559)

**Full Changelog**: <https://github.com/rancher/local-path-provisioner/compare/v0.0.34...v0.0.35>

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: #4585
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-10 19:24:26 +00:00
4f5ee67cad chore(deps): update kube-prometheus-stack docker tag to v82.10.3 (#4595)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 39s
renovate / renovate (push) Successful in 2m16s
2026-03-10 19:03:26 +00:00
192 changed files with 2836 additions and 2500 deletions

View File

@@ -14,7 +14,7 @@ on:
- 'hosts/**' - 'hosts/**'
env: env:
BASE_BRANCH: "origin/${{ gitea.base_ref }}" BASE_BRANCH: "origin/${{ github.base_ref }}"
jobs: jobs:
lint-docker-compose: lint-docker-compose:
@@ -36,19 +36,20 @@ jobs:
id: branch-exists id: branch-exists
if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request' if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request'
run: | run: |
if [ ${{ github.event_name == 'push' }} ]; then if [ "${{ github.event_name }}" == "push" ]; then
echo ">> Action is from a push event, will continue with linting" echo ">> Action is from a push event, will continue with linting"
else else
echo ">> Branch ${{ gitea.base_ref }} exists, will continue with linting" echo ">> Branch ${{ github.base_ref }} exists, will continue with linting"
fi fi
echo ""
echo "----" echo "----"
echo "exists=true" >> $GITEA_OUTPUT echo "exists=true" >> $GITHUB_OUTPUT
- name: Set up Node.js - name: Set Up Node.js
if: steps.branch-exists.outputs.exists == 'true' if: steps.branch-exists.outputs.exists == 'true'
uses: actions/setup-node@v6 uses: actions/setup-node@v6
with: with:
@@ -58,58 +59,48 @@ jobs:
id: check-dir-changes id: check-dir-changes
if: steps.branch-exists.outputs.exists == 'true' if: steps.branch-exists.outputs.exists == 'true'
run: | run: |
CHANGED_COMPOSE=()
echo ">> Target branch for diff is: ${BASE_BRANCH}" echo ">> Target branch for diff is: ${BASE_BRANCH}"
if [ "${{ github.event_name }}" == "pull_request" ]; then if [ "${{ github.event_name }}" == "pull_request" ]; then
DIFF_TARGET="${BASE_BRANCH}"
echo "" echo ""
echo ">> Checking for changes in a pull request ..." echo ">> Checking for changes in a pull request ..."
GIT_DIFF=$(git diff --name-only "${BASE_BRANCH}" | xargs -I {} dirname {} | sort -u)
else else
DIFF_TARGET="${{ github.event.before }}..HEAD"
echo "" echo ""
echo ">> Checking for changes from a push ..." echo ">> Checking for changes from a push ..."
GIT_DIFF=$(git diff --name-only ${{ gitea.event.before }}..HEAD | xargs -I {} dirname {} | sort -u)
fi
if [ -n "${GIT_DIFF}" ]; then
echo ""
echo ">> Changes detected:"
echo "$GIT_DIFF"
for path in $GIT_DIFF; do
if echo "$path" | grep -q -E "hosts/[^/]+/[^/]+"; then
echo ""
echo ">> Adding path: $path"
CHANGED_COMPOSE+=$(echo "$path")
CHANGED_COMPOSE+=$(echo " ")
fi
done
else
echo ""
echo ">> No changes detected"
fi fi
CHANGED_COMPOSE=$(git diff --name-only "${DIFF_TARGET}" | grep -E "^hosts/[^/]+/[^/]+/" | cut -d/ -f1,2,3 | sort -u || true)
if [ -n "${CHANGED_COMPOSE}" ]; then if [ -n "${CHANGED_COMPOSE}" ]; then
echo "" echo ""
echo ">> Compose to Lint:" echo ">> Compose to Lint:"
echo "$(echo "${CHANGED_COMPOSE}" | sort -u)" echo ""
echo "${CHANGED_COMPOSE}"
CHANGED_COMPOSE_CSV=$(echo "$CHANGED_COMPOSE" | paste -sd ',' -)
echo ""
echo "----" echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT echo "changes-detected=true" >> $GITHUB_OUTPUT
echo "compose-dir<<EOF" >> $GITEA_OUTPUT echo "compose-dir-csv=${CHANGED_COMPOSE_CSV}" >> $GITHUB_OUTPUT
echo "$(echo "${CHANGED_COMPOSE}" | sort -u)" >> $GITEA_OUTPUT echo "compose-dir<<EOF" >> $GITHUB_OUTPUT
echo "EOF" >> $GITEA_OUTPUT echo "${CHANGED_COMPOSE}" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
else else
echo "" echo ""
echo ">> Did not find any docker compose files to lint" echo ">> Did not find any docker compose files to lint"
echo ""
echo "----" echo "----"
echo "changes-detected=false" >> $GITEA_OUTPUT echo "changes-detected=false" >> $GITHUB_OUTPUT
fi fi
- name: Lint Docker Compose - name: Lint Docker Compose
@@ -117,25 +108,27 @@ jobs:
env: env:
CHANGED_COMPOSE: ${{ steps.check-dir-changes.outputs.compose-dir }} CHANGED_COMPOSE: ${{ steps.check-dir-changes.outputs.compose-dir }}
run: | run: |
echo ">> Running dclint on changed compose files:" echo ">> Running dclint on changed compose files ..."
echo "$CHANGED_COMPOSE"
for COMPOSE in $CHANGED_COMPOSE; do
echo ">> Linting ${COMPOSE} ..."
npx dclint ${COMPOSE}
for compose in $CHANGED_COMPOSE; do
echo ">> Linting $compose ..."
npx dclint $compose
done done
echo ""
echo "----"
- name: ntfy Failed - name: ntfy Failed
uses: niniyas/ntfy-action@master uses: niniyas/ntfy-action@master
if: failure() if: failure()
with: with:
url: '${{ secrets.NTFY_URL }}' url: '${{ secrets.NTFY_URL }}'
topic: '${{ secrets.NTFY_TOPIC }}' topic: '${{ secrets.NTFY_TOPIC }}'
title: 'Test Failure - Infrastructure' title: 'Docker Compose Test Failure'
priority: 3 priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed tags: action,failed
details: 'Docker linting on Pull Request for Infrastructure has failed!' details: "Docker linting for compose dirs: ${{ steps.check-dir-changes.outputs.compose-dir-csv }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png' 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=lint-test-docker-pull.yaml", "clear": true}]' actions: '[{"action": "view", "label": "View Logs", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
image: true

View File

@@ -15,11 +15,17 @@ on:
env: env:
CLUSTER: cl01tl CLUSTER: cl01tl
BASE_BRANCH: "origin/${{ gitea.base_ref }}" BASE_BRANCH: "origin/${{ github.base_ref }}"
# renovate: datasource=github-releases depName=yannh/kubeconform
KUBECONFORM_VERSION: "v0.6.7"
jobs: jobs:
lint-helm: lint-helm:
runs-on: ubuntu-js runs-on: ubuntu-js
outputs:
chart-dir: ${{ steps.check-dir-changes.outputs.chart-dir }}
chart-dir-csv: ${{ steps.check-dir-changes.outputs.chart-dir-csv }}
changes-detected: ${{ steps.check-dir-changes.outputs.changes-detected }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v6
@@ -31,88 +37,91 @@ jobs:
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
uses: GuillaumeFalourd/branch-exists@v1.1 uses: GuillaumeFalourd/branch-exists@v1.1
with: with:
branch: ${{ gitea.base_ref }} branch: ${{ github.base_ref }}
- name: Report Branch Exists - name: Report Branch Exists
id: branch-exists id: branch-exists
if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request' if: github.event_name == 'push' || steps.check-branch-exists.outputs.exists == 'true' && github.event_name == 'pull_request'
run: | run: |
if [ ${{ github.event_name == 'push' }} ]; then if [ "${{ github.event_name }}" == "push" ]; then
echo ">> Action is from a push event, will continue with linting" echo ">> Action is from a push event, will continue with linting"
else else
echo ">> Branch ${{ gitea.base_ref }} exists, will continue with linting" echo ">> Branch ${{ github.base_ref }} exists, will continue with linting"
fi fi
echo ""
echo "----" echo "----"
echo "exists=true" >> $GITEA_OUTPUT echo "exists=true" >> $GITHUB_OUTPUT
- name: Set up Helm - name: Set Up Helm
if: steps.branch-exists.outputs.exists == 'true' if: steps.branch-exists.outputs.exists == 'true'
uses: azure/setup-helm@v4 uses: azure/setup-helm@v4
with: with:
token: ${{ secrets.GITEA_TOKEN }} token: ${{ secrets.GITEA_TOKEN }}
version: v3.19.2 # renovate: datasource=github-releases depName=helm/helm
version: v4.1.3
cache: true cache: true
- name: Cache Helm Dependencies
if: steps.branch-exists.outputs.exists == 'true'
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Check Directories for Changes - name: Check Directories for Changes
id: check-dir-changes id: check-dir-changes
if: steps.branch-exists.outputs.exists == 'true' if: steps.branch-exists.outputs.exists == 'true'
run: | run: |
CHANGED_CHARTS=()
echo ">> Target branch for diff is: ${BASE_BRANCH}" echo ">> Target branch for diff is: ${BASE_BRANCH}"
if [ "${{ github.event_name }}" == "pull_request" ]; then if [ "${{ github.event_name }}" == "pull_request" ]; then
DIFF_TARGET="${BASE_BRANCH}"
echo "" echo ""
echo ">> Checking for changes in a pull request ..." echo ">> Checking for changes in a pull request ..."
GIT_DIFF=$(git diff --name-only "${BASE_BRANCH}" | xargs -I {} dirname {} | sort -u)
else else
DIFF_TARGET="${{ github.event.before }}..HEAD"
echo "" echo ""
echo ">> Checking for changes from a push ..." echo ">> Checking for changes from a push ..."
GIT_DIFF=$(git diff --name-only ${{ gitea.event.before }}..HEAD | xargs -I {} dirname {} | sort -u)
fi
if [ -n "${GIT_DIFF}" ]; then
echo ""
echo ">> Changes detected:"
echo "$GIT_DIFF"
for path in $GIT_DIFF; do
if echo "$path" | grep -q -E "clusters/[^/]+/helm/[^/]+"; then
echo ""
echo ">> Adding path: $path"
CHANGED_CHARTS+=$(echo "$path" | awk -F '/' '{print $4}')
CHANGED_CHARTS+=$(echo "\n")
fi
done
else
echo ""
echo ">> No changes detected"
fi fi
CHANGED_CHARTS=$(git diff --name-only "${DIFF_TARGET}" | grep -E "^clusters/${CLUSTER}/helm/" | awk -F '/' '{print $4}' | sort -u || true)
if [ -n "${CHANGED_CHARTS}" ]; then if [ -n "${CHANGED_CHARTS}" ]; then
echo "" echo ""
echo ">> Chart to Lint:" echo ">> Chart to Lint:"
echo "$(echo "${CHANGED_CHARTS}" | sort -u)" echo ""
echo "${CHANGED_CHARTS}"
CHANGED_CHARTS_CSV=$(echo "$CHANGED_CHARTS" | paste -sd ',' -)
echo ""
echo "----" echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT echo "changes-detected=true" >> $GITHUB_OUTPUT
echo "chart-dir<<EOF" >> $GITEA_OUTPUT echo "chart-dir-csv=${CHANGED_CHARTS_CSV}" >> $GITHUB_OUTPUT
echo "$(echo "${CHANGED_CHARTS}" | sort -u)" >> $GITEA_OUTPUT echo "chart-dir<<EOF" >> $GITHUB_OUTPUT
echo "EOF" >> $GITEA_OUTPUT echo "${CHANGED_CHARTS}" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
else else
echo "" echo ""
echo ">> Did not find any helm charts files to lint" echo ">> Did not find any helm charts files to lint"
echo ""
echo "----" echo "----"
echo "changes-detected=false" >> $GITEA_OUTPUT echo "changes-detected=false" >> $GITHUB_OUTPUT
fi fi
- name: Add Repositories - name: Add Repositories
@@ -121,68 +130,238 @@ jobs:
CHANGED_CHARTS: ${{ steps.check-dir-changes.outputs.chart-dir }} CHANGED_CHARTS: ${{ steps.check-dir-changes.outputs.chart-dir }}
run: | run: |
echo ">> Adding repositories for chart dependencies ..." echo ">> Adding repositories for chart dependencies ..."
for dir in ${CHANGED_CHARTS}; do echo ""
helm dependency list --max-col-width 120 clusters/${CLUSTER}/helm/$dir 2> /dev/null \
| tail +2 | head -n -1 \ for DIR in ${CHANGED_CHARTS}; do
| awk '{ print "helm repo add " $1 " " $3 }' \ helm dependency list --max-col-width 120 clusters/${CLUSTER}/helm/${DIR} 2> /dev/null \
| while read cmd; do | tail -n +2 \
if [[ "$cmd" == "*oci://*" ]]; then | awk 'NF > 0 { print $1, $3 }' \
echo ">> Ignoring OCI repo" | while read -r REPO_NAME REPO_URL; do
else if [[ "${REPO_URL}" == oci://* ]]; then
echo ">> Command: $cmd" echo ">> Ignoring OCI repo: ${REPO_URL}"
echo "$cmd" | sh;
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi fi
done || true done || true
done done
if helm repo list | tail +2 | read -r; then if helm repo list > /dev/null 2>&1; then
echo "" echo ""
echo ">> Update repository cache ..." echo ">> Update repository cache ..."
helm repo update helm repo update
fi fi
echo ""
echo "----" echo "----"
- name: Lint Helm Chart - name: Lint Helm Chart
id: lint
if: steps.check-dir-changes.outputs.changes-detected == 'true' if: steps.check-dir-changes.outputs.changes-detected == 'true'
env: env:
CHANGED_CHARTS: ${{ steps.check-dir-changes.outputs.chart-dir }} CHANGED_CHARTS: ${{ steps.check-dir-changes.outputs.chart-dir }}
run: | run: |
EXIT_CODE=0
FAILED_CHARTS=""
echo ">> Running linting on changed charts ..." echo ">> Running linting on changed charts ..."
for dir in ${CHANGED_CHARTS}; do for DIR in ${CHANGED_CHARTS}; do
chart_path=clusters/${CLUSTER}/helm/$dir CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
chart_name=$(basename "$chart_path") CHART_NAME=$(basename "${CHART_PATH}")
if [ -f "$chart_path/Chart.yaml" ]; then if [ -f "${CHART_PATH}/Chart.yaml" ]; then
cd $chart_path echo ""
echo ">> Building helm dependency for ${CHART_NAME} ..."
helm dependency build "${CHART_PATH}" --skip-refresh
echo "" echo ""
echo ">> Building helm dependency ..." echo ">> Linting helm chart ${CHART_NAME} ..."
helm dependency build --skip-refresh
echo "" if ! helm lint "${CHART_PATH}" --namespace "default"; then
echo ">> Linting helm ..." EXIT_CODE=1
helm lint --namespace "$chart_name"
if [ -z "${FAILED_CHARTS}" ]; then
FAILED_CHARTS="${DIR}"
else
FAILED_CHARTS="${FAILED_CHARTS}, ${DIR}"
fi
fi
else else
echo "" echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..." echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
echo ""
fi fi
done done
echo ""
echo "----"
echo "failed-charts=${FAILED_CHARTS}" >> "$GITHUB_OUTPUT"
exit $EXIT_CODE
- name: ntfy Failed - name: ntfy Failed
uses: niniyas/ntfy-action@master uses: niniyas/ntfy-action@master
if: failure() if: failure()
with: with:
url: '${{ secrets.NTFY_URL }}' url: '${{ secrets.NTFY_URL }}'
topic: '${{ secrets.NTFY_TOPIC }}' topic: '${{ secrets.NTFY_TOPIC }}'
title: 'Test Failure - Infrastructure' title: 'Helm Test Failure'
priority: 3 priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed tags: action,failed
details: 'Helm linting on Pull Request for Infrastructure has failed!' details: "Helm linting for cluster '${{ env.CLUSTER }}' failed on charts: ${{ steps.lint.outputs.failed-charts }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png' 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=lint-test-helm-pull.yaml", "clear": true}]' actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
image: true
validate-kubeconform:
needs: lint-helm
runs-on: ubuntu-js
if: |
needs.lint-helm.result == 'success' &&
needs.lint-helm.outputs.changes-detected == 'true' &&
github.event_name == 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install Kubeconform
run: |
echo ">> Downloading Kubeconform ${{ env.KUBECONFORM_VERSION }} ..."
wget -q https://github.com/yannh/kubeconform/releases/download/${{ env.KUBECONFORM_VERSION }}/kubeconform-linux-amd64.tar.gz
echo ""
echo ">> Extracting Kubeconform ..."
tar xf kubeconform-linux-amd64.tar.gz
echo ""
echo ">> Installing Kubeconform ..."
sudo mv kubeconform /usr/local/bin/
echo ""
echo ">> Verifying installation ..."
kubeconform -v
echo ""
echo "----"
- name: Set Up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
# renovate: datasource=github-releases depName=helm/helm
version: v4.1.3
cache: true
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Add Repositories
env:
CHANGED_CHARTS: ${{ needs.lint-helm.outputs.chart-dir }}
run: |
echo ">> Adding repositories for chart dependencies ..."
echo ""
for DIR in ${CHANGED_CHARTS}; do
helm dependency list --max-col-width 120 clusters/${CLUSTER}/helm/${DIR} 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo ""
echo "----"
- name: Validate Rendered Templates
id: validate
env:
CHANGED_CHARTS: ${{ needs.lint-helm.outputs.chart-dir }}
run: |
SCHEMA_LOCATIONS="-schema-location default -schema-location https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json"
EXIT_CODE=0
FAILED_CHARTS=""
for DIR in ${CHANGED_CHARTS}; do
CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
echo ""
echo ">> Validating: ${DIR}"
helm dependency build "${CHART_PATH}" --skip-refresh
if ! helm template "${DIR}" "${CHART_PATH}" --include-crds --namespace default --api-versions "gateway.networking.k8s.io/v1/HTTPRoute" | \
kubeconform \
${SCHEMA_LOCATIONS} \
-ignore-missing-schemas \
-strict \
-summary; then
EXIT_CODE=1
if [ -z "${FAILED_CHARTS}" ]; then
FAILED_CHARTS="${DIR}"
else
FAILED_CHARTS="${FAILED_CHARTS}, ${DIR}"
fi
fi
done
echo ""
echo "----"
echo "failed-charts=${FAILED_CHARTS}" >> "$GITHUB_OUTPUT"
exit $EXIT_CODE
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: '${{ secrets.NTFY_URL }}'
topic: '${{ secrets.NTFY_TOPIC }}'
title: 'Kubeconform Test Failure'
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Kubeconform for cluster '${{ env.CLUSTER }}' failed on charts: ${{ steps.validate.outputs.failed-charts }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
image: true image: true

View File

@@ -1,440 +0,0 @@
name: render-manifests-automerge
on:
pull_request:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
types:
- closed
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME_BASE: auto/update-manifests-automerge
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-automerge:
runs-on: ubuntu-js
if: ${{ (github.event.pull_request.merged == true) && (contains(github.event.pull_request.labels.*.name, 'automerge')) }}
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- 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
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Prepare Manifest Branch
id: prepare-manifest-branch
run: |
cd ${MANIFEST_DIR}
BRANCH_NAME="${BRANCH_NAME_BASE}-$(date +%Y%m%d%H%M%S)"
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ">> Creating branch ..."
git checkout -b $BRANCH_NAME
echo "----"
echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITEA_OUTPUT
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd ${MAIN_DIR}
RENDER_DIR=()
echo ">> Checking for changes from HEAD^..HEAD ..."
GIT_DIFF=$(git diff --name-only HEAD^..HEAD | xargs -I {} dirname {} | sort -u | grep -E "clusters/[^/]+/helm/[^/]+")
if [ -n "${GIT_DIFF}" ]; then
echo ">> Changes detected:"
echo "$GIT_DIFF"
for path in $GIT_DIFF; do
RENDER_DIR+=$(echo "$path" | awk -F '/' '{print $4}')
RENDER_DIR+=$(echo " ")
done
else
echo ">> No changes detected"
fi
if [ -n "${RENDER_DIR}" ]; then
echo ">> Directories to Render:"
echo "$(echo "${RENDER_DIR}" | sort -u)"
echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT
echo "render-dir<<EOF" >> $GITEA_OUTPUT
echo "$(echo "${RENDER_DIR}" | sort -u)" >> $GITEA_OUTPUT
echo "EOF" >> $GITEA_OUTPUT
else
echo "changes-detected=false" >> $GITEA_OUTPUT
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Adding repositories for chart dependencies ..."
for dir in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 ${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do
if [[ "$cmd" == "*oci://*" ]]; then
echo ">> Ignoring OCI repo"
else
echo "$cmd" | sh;
fi
done || true
done
if helm repo list | tail +2 | read -r; then
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MANIFEST_DIR}
echo ">> Remove manfiest files and rebuild from source ..."
for dir in ${RENDER_DIR}; do
chart_path=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$dir
echo "$chart_path"
rm -rf $chart_path/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Rendering Manifests ..."
for dir in ${RENDER_DIR}; do
chart_path=${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir
chart_name=$(basename "$chart_path")
echo ""
echo ""
echo ">> Rendering chart: $chart_name"
echo ">> Chart path $chart_path"
if [ -f "$chart_path/Chart.yaml" ]; then
OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name/"
TEMPLATE=""
mkdir -p ${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name
cd $chart_path
echo ""
echo ">> Updating helm dependency ..."
helm dependency update --skip-refresh
echo ""
echo ">> Building helm dependency ..."
helm dependency build --skip-refresh
echo ""
echo ">> Linting helm ..."
helm lint --namespace "$chart_name"
echo ""
echo ">> Rendering templates ..."
case "$chart_name" in
"stack")
echo ""
echo ">> Special Rendering for stack into argocd namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace argocd --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
"cilium" | "coredns" | "metrics-server" |"prometheus-operator-crds")
echo ""
echo ">> Special Rendering for $chart_name into kube-system namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace kube-system --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
*)
echo ""
echo ">> Standard Rendering for $chart_name ..."
TEMPLATE=$(helm template "$chart_name" ./ --namespace "$chart_name" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
esac
echo ""
echo ">> Formating rendered template ..."
echo "$TEMPLATE" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"$OUTPUT_FOLDER"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for $chart_name rendered to $OUTPUT_FOLDER"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
echo ""
fi
done
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
GIT_CHANGES=$(git status --porcelain)
if [ -n "$GIT_CHANGES" ]; then
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd ${MANIFEST_DIR}
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after automerge"
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 "----"
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 }}
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${BRANCH_NAME}" \
--arg base "${BASE_BRANCH}" \
--arg title "Automated Manifest Update - Automerge" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow. This is expected to be automerged." \
'{head: $head, base: $base, title: $title, body: $body}' )
echo ">> Creating PR from branch ${BRANCH_NAME} 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"
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
PR_NUMBER=$(cat response_body.json | jq -r .number)
echo ">> Pull Request Number: $PR_NUMBER"
echo "pull-request-number=${PR_NUMBER}" >> $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"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- name: Merge Changes
id: merge-changes
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${PR_NUMBER}/merge"
PAYLOAD=$( jq -n \
--arg Do "merge" \
'{Do: $Do}' )
echo ">> Merging PR with ID: ${PR_NUMBER}"
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" == "200" ]; then
echo ">> Pull Request merged successfully!"
echo "pull-request-operation=merged" >> $GITEA_OUTPUT
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
echo "pull-request-operation=failed" >> $GITEA_OUTPUT
exit 1
fi
echo "----"
- name: Cleanup Branch
if: failure()
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd ${MANIFEST_DIR}
echo ">> Removing branch: ${BRANCH_NAME}"
git push origin --delete ${BRANCH_NAME}
echo "----"
- name: ntfy Merged
uses: niniyas/ntfy-action@master
if: steps.merge-changes.outputs.pull-request-operation == 'merged'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Merged - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Automerge Manifest rendering for Infrastructure!"
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: "Automerge 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-automerge.yaml", "clear": true}]'
image: true

View File

@@ -1,390 +0,0 @@
name: render-manifests-dispatch
on:
schedule:
- cron: '0 3 * * *'
workflow_dispatch:
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-dispatch:
runs-on: ubuntu-js
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- 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
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Prepare Manifest Branch
run: |
cd ${MANIFEST_DIR}
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ">> Checking if PR branch exists ..."
if [[ $(git ls-remote --heads origin "${BRANCH_NAME}" | wc -l) -gt 0 ]]; then
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b $BRANCH_NAME
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd ${MAIN_DIR}
RENDER_DIR=()
echo ">> Triggered on dispatch, will check all paths ..."
RENDER_DIR+=$(ls clusters/cl01tl/helm/)
if [ -n "${RENDER_DIR}" ]; then
echo ">> Directories to Render:"
echo "$(echo "${RENDER_DIR}" | sort -u)"
echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT
echo "render-dir<<EOF" >> $GITEA_OUTPUT
echo "$(echo "${RENDER_DIR}" | sort -u)" >> $GITEA_OUTPUT
echo "EOF" >> $GITEA_OUTPUT
else
echo "changes-detected=false" >> $GITEA_OUTPUT
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Adding repositories for chart dependencies ..."
for dir in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 ${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do
if [[ "$cmd" == "*oci://*" ]]; then
echo ">> Ignoring OCI repo"
else
echo "$cmd" | sh;
fi
done || true
done
if helm repo list | tail +2 | read -r; then
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Rendering Manifests ..."
for dir in ${RENDER_DIR}; do
chart_path=${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir
chart_name=$(basename "$chart_path")
echo ""
echo ""
echo ">> Rendering chart: $chart_name"
echo ">> Chart path $chart_path"
if [ -f "$chart_path/Chart.yaml" ]; then
OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name/"
TEMPLATE=""
mkdir -p ${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name
cd $chart_path
echo ""
echo ">> Updating helm dependency ..."
helm dependency update --skip-refresh
echo ""
echo ">> Building helm dependency ..."
helm dependency build --skip-refresh
echo ""
echo ">> Linting helm ..."
helm lint --namespace "$chart_name"
echo ""
echo ">> Rendering templates ..."
case "$chart_name" in
"stack")
echo ""
echo ">> Special Rendering for stack into argocd namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace argocd --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
"cilium" | "coredns" | "metrics-server" |"prometheus-operator-crds")
echo ""
echo ">> Special Rendering for $chart_name into kube-system namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace kube-system --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
*)
echo ""
echo ">> Standard Rendering for $chart_name ..."
TEMPLATE=$(helm template "$chart_name" ./ --namespace "$chart_name" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
esac
echo ""
echo ">> Formating rendered template ..."
echo "$TEMPLATE" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"$OUTPUT_FOLDER"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for $chart_name rendered to $OUTPUT_FOLDER"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
echo ""
fi
done
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
GIT_CHANGES=$(git status --porcelain)
if [ -n "$GIT_CHANGES" ]; then
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
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 "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> $GITEA_OUTPUT
echo "push=true" >> $GITEA_OUTPUT
- name: Check for Pull Request
id: check-for-pull-requst
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?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-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" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
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 assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, 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
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $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"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- 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 with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
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

View File

@@ -1,425 +0,0 @@
name: render-manifests-merge
on:
pull_request:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
types:
- closed
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-merge:
runs-on: ubuntu-js
if: ${{ (github.event.pull_request.merged == true) && !(contains(github.event.pull_request.labels.*.name, 'automerge')) }}
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- 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
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Prepare Manifest Branch
run: |
cd ${MANIFEST_DIR}
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ">> Checking if PR branch exists ..."
if [[ $(git ls-remote --heads origin "${BRANCH_NAME}" | wc -l) -gt 0 ]]; then
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b $BRANCH_NAME
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd ${MAIN_DIR}
RENDER_DIR=()
echo ">> Checking for changes from HEAD^..HEAD ..."
GIT_DIFF=$(git diff --name-only HEAD^..HEAD | xargs -I {} dirname {} | sort -u | grep -E "clusters/[^/]+/helm/[^/]+")
if [ -n "${GIT_DIFF}" ]; then
echo ">> Changes detected:"
echo "$GIT_DIFF"
for path in $GIT_DIFF; do
RENDER_DIR+=$(echo "$path" | awk -F '/' '{print $4}')
RENDER_DIR+=$(echo " ")
done
else
echo ">> No changes detected"
fi
if [ -n "${RENDER_DIR}" ]; then
echo ">> Directories to Render:"
echo "$(echo "${RENDER_DIR}" | sort -u)"
echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT
echo "render-dir<<EOF" >> $GITEA_OUTPUT
echo "$(echo "${RENDER_DIR}" | sort -u)" >> $GITEA_OUTPUT
echo "EOF" >> $GITEA_OUTPUT
else
echo "changes-detected=false" >> $GITEA_OUTPUT
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Adding repositories for chart dependencies ..."
for dir in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 ${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do
if [[ "$cmd" == "*oci://*" ]]; then
echo ">> Ignoring OCI repo"
else
echo "$cmd" | sh;
fi
done || true
done
if helm repo list | tail +2 | read -r; then
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MANIFEST_DIR}
echo ">> Remove manfiest files and rebuild from source ..."
for dir in ${RENDER_DIR}; do
chart_path=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$dir
echo "$chart_path"
rm -rf $chart_path/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Rendering Manifests ..."
for dir in ${RENDER_DIR}; do
chart_path=${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir
chart_name=$(basename "$chart_path")
echo ""
echo ""
echo ">> Rendering chart: $chart_name"
echo ">> Chart path $chart_path"
if [ -f "$chart_path/Chart.yaml" ]; then
OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name/"
TEMPLATE=""
mkdir -p ${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name
cd $chart_path
echo ""
echo ">> Updating helm dependency ..."
helm dependency update --skip-refresh
echo ""
echo ">> Building helm dependency ..."
helm dependency build --skip-refresh
echo ""
echo ">> Linting helm ..."
helm lint --namespace "$chart_name"
echo ""
echo ">> Rendering templates ..."
case "$chart_name" in
"stack")
echo ""
echo ">> Special Rendering for stack into argocd namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace argocd --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
"cilium" | "coredns" | "metrics-server" |"prometheus-operator-crds")
echo ""
echo ">> Special Rendering for $chart_name into kube-system namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace kube-system --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
*)
echo ""
echo ">> Standard Rendering for $chart_name ..."
TEMPLATE=$(helm template "$chart_name" ./ --namespace "$chart_name" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
esac
echo ""
echo ">> Formating rendered template ..."
echo "$TEMPLATE" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"$OUTPUT_FOLDER"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for $chart_name rendered to $OUTPUT_FOLDER"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
echo ""
fi
done
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
GIT_CHANGES=$(git status --porcelain)
if [ -n "$GIT_CHANGES" ]; then
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
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 "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> $GITEA_OUTPUT
echo "push=true" >> $GITEA_OUTPUT
- name: Check for Pull Request
id: check-for-pull-requst
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?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-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" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
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 assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, 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
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $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"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- 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 with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
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

View File

@@ -1,423 +0,0 @@
name: render-manifests-push
on:
push:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-push:
runs-on: ubuntu-js
if: gitea.event.commits[0].author.username != 'renovate-bot'
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- 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
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Prepare Manifest Branch
run: |
cd ${MANIFEST_DIR}
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ">> Checking if PR branch exists ..."
if [[ $(git ls-remote --heads origin "${BRANCH_NAME}" | wc -l) -gt 0 ]]; then
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b $BRANCH_NAME
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd ${MAIN_DIR}
RENDER_DIR=()
echo ">> Checking for changes ..."
GIT_DIFF=$(git diff --name-only ${{ gitea.event.before }}..HEAD | xargs -I {} dirname {} | sort -u | grep -E "clusters/[^/]+/helm/[^/]+")
if [ -n "${GIT_DIFF}" ]; then
echo ">> Changes detected:"
echo "$GIT_DIFF"
for path in $GIT_DIFF; do
RENDER_DIR+=$(echo "$path" | awk -F '/' '{print $4}')
RENDER_DIR+=$(echo " ")
done
else
echo ">> No changes detected"
fi
if [ -n "${RENDER_DIR}" ]; then
echo ">> Directories to Render:"
echo "$(echo "${RENDER_DIR}" | sort -u)"
echo "----"
echo "changes-detected=true" >> $GITEA_OUTPUT
echo "render-dir<<EOF" >> $GITEA_OUTPUT
echo "$(echo "${RENDER_DIR}" | sort -u)" >> $GITEA_OUTPUT
echo "EOF" >> $GITEA_OUTPUT
else
echo "changes-detected=false" >> $GITEA_OUTPUT
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Adding repositories for chart dependencies ..."
for dir in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 ${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do
if [[ "$cmd" == "*oci://*" ]]; then
echo ">> Ignoring OCI repo"
else
echo "$cmd" | sh;
fi
done || true
done
if helm repo list | tail +2 | read -r; then
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MANIFEST_DIR}
echo ">> Remove manfiest files and rebuild from source ..."
for dir in ${RENDER_DIR}; do
chart_path=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$dir
echo "$chart_path"
rm -rf $chart_path/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ">> Rendering Manifests ..."
for dir in ${RENDER_DIR}; do
chart_path=${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir
chart_name=$(basename "$chart_path")
echo ""
echo ""
echo ">> Rendering chart: $chart_name"
echo ">> Chart path $chart_path"
if [ -f "$chart_path/Chart.yaml" ]; then
OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name/"
TEMPLATE=""
mkdir -p ${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name
cd $chart_path
echo ""
echo ">> Updating helm dependency ..."
helm dependency update --skip-refresh
echo ""
echo ">> Building helm dependency ..."
helm dependency build --skip-refresh
echo ""
echo ">> Linting helm ..."
helm lint --namespace "$chart_name"
echo ""
echo ">> Rendering templates ..."
case "$chart_name" in
"stack")
echo ""
echo ">> Special Rendering for stack into argocd namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace argocd --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
"cilium" | "coredns" | "metrics-server" |"prometheus-operator-crds")
echo ""
echo ">> Special Rendering for $chart_name into kube-system namespace ..."
TEMPLATE=$(helm template $chart_name ./ --namespace kube-system --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
*)
echo ""
echo ">> Standard Rendering for $chart_name ..."
TEMPLATE=$(helm template "$chart_name" ./ --namespace "$chart_name" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
;;
esac
echo ""
echo ">> Formating rendered template ..."
echo "$TEMPLATE" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"$OUTPUT_FOLDER"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for $chart_name rendered to $OUTPUT_FOLDER"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
echo ""
fi
done
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
GIT_CHANGES=$(git status --porcelain)
if [ -n "$GIT_CHANGES" ]; then
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd ${MANIFEST_DIR}
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
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 "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> $GITEA_OUTPUT
echo "push=true" >> $GITEA_OUTPUT
- name: Check for Pull Request
id: check-for-pull-requst
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?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-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" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
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 assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, 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
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $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"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- 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 with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
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

View File

@@ -0,0 +1,624 @@
name: render-manifests
on:
schedule:
- cron: '0 15 * * *'
workflow_dispatch:
pull_request:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
types:
- closed
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME_BASE: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests:
runs-on: ubuntu-js
if: >-
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.event.pull_request.merged == true)
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- 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
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Determine Workflow Mode
id: mode
run: |
IS_AUTOMERGE="false"
RENDER_ALL="false"
DIFF_TARGET=""
if [[ "${{ github.event_name }}" == "schedule" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo ">> Mode: Dispatch/Schedule (Render All)"
RENDER_ALL="true"
elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
if [[ "${{ contains(github.event.pull_request.labels.*.name, 'automerge') }}" == "true" ]]; then
echo ">> Mode: PR Merged (Automerge)"
IS_AUTOMERGE="true"
else
echo ">> Mode: PR Merged (Standard)"
fi
DIFF_TARGET="HEAD^..HEAD"
fi
echo ""
echo "----"
echo "is-automerge=${IS_AUTOMERGE}" >> "$GITHUB_OUTPUT"
echo "render-all=${RENDER_ALL}" >> "$GITHUB_OUTPUT"
echo "diff-target=${DIFF_TARGET}" >> "$GITHUB_OUTPUT"
- name: Prepare Manifest Branch
id: prepare-manifest-branch
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
IS_AUTOMERGE: ${{ steps.mode.outputs.is-automerge }}
run: |
cd "${MANIFEST_DIR}"
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
if [[ "$IS_AUTOMERGE" == "true" ]]; then
BRANCH_NAME="${BRANCH_NAME_BASE}-automerge-${PR_NUMBER}"
echo ""
echo ">> Creating branch ${BRANCH_NAME} ..."
git checkout -B "$BRANCH_NAME"
else
echo ""
echo ">> Checking if PR branch exists ..."
BRANCH_NAME="${BRANCH_NAME_BASE}"
if git ls-remote --exit-code --heads origin "${BRANCH_NAME}" > /dev/null 2>&1; then
echo ""
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ""
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b "${BRANCH_NAME}"
fi
fi
echo ""
echo "----"
echo "branch-name=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
- name: Check Which Directories Have Changes
id: check-dir-changes
env:
RENDER_ALL: ${{ steps.mode.outputs.render-all }}
DIFF_TARGET: ${{ steps.mode.outputs.diff-target }}
run: |
cd "${MAIN_DIR}"
if [[ "$RENDER_ALL" == "true" ]]; then
echo ">> Triggered on dispatch, will check all paths ..."
RENDER_DIR=$(find "clusters/${CLUSTER}/helm" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort -u)
else
echo ">> Checking for changes from ${DIFF_TARGET} ..."
RENDER_DIR=$(git diff --name-only "${DIFF_TARGET}" | grep -E "^clusters/${CLUSTER}/helm/" | awk -F '/' '{print $4}' | sort -u || true)
fi
if [ -n "${RENDER_DIR}" ]; then
echo ""
echo ">> Directories to Render:"
echo ""
echo "${RENDER_DIR}"
echo ""
echo "----"
echo "changes-detected=true" >> "$GITHUB_OUTPUT"
echo "render-dir<<EOF" >> "$GITHUB_OUTPUT"
echo "${RENDER_DIR}" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
else
echo ""
echo ">> No chart changes detected"
echo ""
echo "----"
echo "changes-detected=false" >> "$GITHUB_OUTPUT"
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ">> Adding repositories for chart dependencies ..."
echo ""
for DIR in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 "${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}" 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo ""
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MANIFEST_DIR}"
echo ">> Remove manifest files and rebuild from source ..."
echo ""
for DIR in ${RENDER_DIR}; do
CHART_PATH="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${DIR}"
echo "${CHART_PATH}"
rm -rf "${CHART_PATH}"/*
done
echo ""
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ">> Rendering Manifests ..."
render_chart() {
local DIR="$1"
local CHART_PATH="${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}"
local CHART_NAME=$(basename "${CHART_PATH}")
echo ""
echo ">> Rendering chart: ${CHART_NAME}"
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
local OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${CHART_NAME}/"
mkdir -p "${OUTPUT_FOLDER}"
cd "${CHART_PATH}"
helm dependency update --skip-refresh > /dev/null
helm lint --namespace "${CHART_NAME}" --quiet
local NAMESPACE="${CHART_NAME}"
case "${CHART_NAME}" in
"stack")
NAMESPACE="argocd"
echo ">> Special Rendering into 'argocd' namespace ..."
;;
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
NAMESPACE="kube-system"
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
;;
*)
echo ">> Standard Rendering ..."
esac
echo ">> Formating rendered template ..."
local TEMPLATE
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
# Format and split rendered template
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ">> Manifests for ${CHART_NAME} rendered successfully to $OUTPUT_FOLDER:"
echo ""
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
fi
}
export -f render_chart
export MAIN_DIR CLUSTER MANIFEST_DIR
# Run rendering in parallel
for DIR in ${RENDER_DIR}; do
echo "${DIR}"
done | xargs -P 4 -I {} bash -c 'OUT=$(render_chart "$@" 2>&1); printf "%s\n" "$OUT"' _ {}
echo ""
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
GIT_CHANGES=$(git status --porcelain)
if [ -n "${GIT_CHANGES}" ]; then
echo ">> Changes detected"
git status --porcelain
CHANGED_CHARTS=$(echo "$GIT_CHANGES" | grep -oE "clusters/${CLUSTER}/manifests/[^/]+" | awk -F '/' '{print $4}' | sort -u | paste -sd ',' -)
echo ""
echo "----"
echo "changes-detected=true" >> "$GITHUB_OUTPUT"
echo "changed-charts-csv=${CHANGED_CHARTS}" >> "$GITHUB_OUTPUT"
else
echo ">> No changes detected, skipping PR creation"
echo ""
echo "----"
fi
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.branch-name }}
IS_AUTOMERGE: ${{ steps.mode.outputs.is-automerge }}
run: |
cd "${MANIFEST_DIR}"
MSG="chore: Update manifests after change"
if [[ "$IS_AUTOMERGE" == "true" ]]; then
MSG="chore: Update manifests after automerge"
fi
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "${MSG}"
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ""
echo ">> Pushing changes to ${REPO_URL} ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@${REPO_URL#*://}" "${BRANCH_NAME}"
echo ""
echo "----"
echo "push=true" >> "$GITHUB_OUTPUT"
echo "head-branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
- name: Check for Pull Request
id: check-for-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.mode.outputs.is-automerge == 'false'
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?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(curl -X GET -s -w '%{http_code}' -o response_body.json -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" "$API_ENDPOINT")
if [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ""
echo ">> Pull Request has been found open, will update"
echo ""
echo "----"
echo "pull-request-exists=$(cat response_body.json | jq -r .[0].number)" >> "$GITHUB_OUTPUT"
else
echo ""
echo ">> Pull Request not found"
echo ""
echo "----"
echo "pull-request-exists=false" >> "$GITHUB_OUTPUT"
fi
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && (steps.mode.outputs.is-automerge == 'true' || steps.check-for-pull-request.outputs.pull-request-exists == 'false')
env:
IS_AUTOMERGE: ${{ steps.mode.outputs.is-automerge }}
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.head-branch }}
CHARTS: ${{ steps.check-changes.outputs.changed-charts-csv }}
EVENT_NAME: ${{ github.event_name }}
ACTOR: ${{ github.actor }}
SHA: ${{ github.sha }}
REF: ${{ github.ref_name }}
run: |
cd "${MANIFEST_DIR}"
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
BODY=$(printf "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow.\n\n### Details\n- **Trigger**: \`%s\` by \`@%s\`\n- **Commit**: \`%s\` (on \`%s\`)\n- **Charts Updated**: \`%s\`" "${EVENT_NAME}" "${ACTOR}" "${SHA:0:7}" "${REF}" "${CHARTS}")
if [[ "$IS_AUTOMERGE" == "true" ]]; then
TITLE="Automated Manifest Update - Automerge"
BODY=$(printf "%s\n\n_This PR is expected to be automerged._" "${BODY}")
else
TITLE="Automated Manifest Update"
fi
PAYLOAD=$(jq -n --arg head "${HEAD_BRANCH}" --arg base "${BASE_BRANCH}" --arg assignee "${ASSIGNEE}" --arg title "${TITLE}" --arg body "${BODY}" '{head: $head, base: $base, assignee: $assignee, title: $title, body: $body}')
HTTP_STATUS=$(curl -X POST -s -w '%{http_code}' -o response_body.json --data "$PAYLOAD" -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" "$API_ENDPOINT")
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
echo ""
echo "----"
echo "pull-request-id=$(jq -r .id response_body.json)" >> "$GITHUB_OUTPUT"
echo "pull-request-number=$(jq -r .number response_body.json)" >> "$GITHUB_OUTPUT"
echo "pull-request-operation=created" >> "$GITHUB_OUTPUT"
elif [[ "$HTTP_STATUS" == "422" || "$HTTP_STATUS" == "409" ]]; then
echo ""
echo ">> Failed to create PR (Already exists)"
echo ""
echo "----"
else
echo ""
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
echo ""
echo "----"
exit 1
fi
- name: Update Pull Request
id: update-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-request.outputs.pull-request-exists != 'false' && steps.mode.outputs.is-automerge == 'false'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
PR_NUMBER: ${{ steps.check-for-pull-request.outputs.pull-request-exists }}
CHARTS: ${{ steps.check-changes.outputs.changed-charts-csv }}
EVENT_NAME: ${{ github.event_name }}
ACTOR: ${{ github.actor }}
SHA: ${{ github.sha }}
REF: ${{ github.ref_name }}
run: |
cd "${MANIFEST_DIR}"
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${PR_NUMBER}"
EXISTING_BODY=$(jq -r '.[0].body' response_body.json)
NEW_DETAILS=$(printf "### Update Details (%s)\n- **Trigger**: \`%s\` by \`@%s\`\n- **Commit**: \`%s\` (on \`%s\`)\n- **Charts Updated**: \`%s\`" "$(date -u +'%Y-%m-%d %H:%M UTC')" "${EVENT_NAME}" "${ACTOR}" "${SHA:0:7}" "${REF}" "${CHARTS}")
UPDATED_BODY=$(printf "%s\n\n%s" "${EXISTING_BODY}" "${NEW_DETAILS}")
PAYLOAD=$(jq -n --arg body "${UPDATED_BODY}" '{body: $body}')
HTTP_STATUS=$(curl -X PATCH -s -w '%{http_code}' -o update_response.json --data "$PAYLOAD" -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" "$API_ENDPOINT")
if [ "$HTTP_STATUS" == "201" ] || [ "$HTTP_STATUS" == "200" ]; then
echo ">> Pull Request updated successfully!"
echo ""
echo "----"
echo "pull-request-operation=updated" >> "$GITHUB_OUTPUT"
else
echo ">> Failed to update PR, HTTP status code: $HTTP_STATUS"; exit 1
echo ""
echo "----"
fi
- name: Merge Changes
id: merge-changes
if: steps.commit-push.outputs.push == 'true' && steps.mode.outputs.is-automerge == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }}
run: |
cd "${MANIFEST_DIR}"
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${PR_NUMBER}/merge"
PAYLOAD=$(jq -n --arg Do "merge" '{Do: $Do}')
HTTP_STATUS=$(curl -X POST -s -w '%{http_code}' -o response_body.json --data "$PAYLOAD" -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" "$API_ENDPOINT")
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Pull Request merged successfully!"
echo ""
echo "----"
echo "pull-request-operation=merged" >> "$GITHUB_OUTPUT"
else
echo ">> Failed to merge PR, HTTP status code: $HTTP_STATUS"; exit 1
echo ""
echo "----"
fi
- name: Cleanup Branch
if: failure() && steps.mode.outputs.is-automerge == 'true'
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.branch-name }}
run: |
cd "${MANIFEST_DIR}"
echo ">> Removing branch: ${BRANCH_NAME}"
git push origin --delete "${BRANCH_NAME}" || true
echo ""
echo "----"
- name: ntfy Created
uses: niniyas/ntfy-action@master
if: steps.create-pull-request.outputs.pull-request-operation == 'created' && steps.mode.outputs.is-automerge == 'false'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render - Open PR"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Created renderd manifests for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "clear": true}]'
- name: ntfy Updated
uses: niniyas/ntfy-action@master
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-request.outputs.pull-request-exists != 'false' && steps.mode.outputs.is-automerge == 'false'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render - PR Updated"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Updated rendered manifests PR for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "clear": true}]'
- name: ntfy Merged
uses: niniyas/ntfy-action@master
if: steps.merge-changes.outputs.pull-request-operation == 'merged'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render - Automerged"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Automerged manifest rendering for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "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"
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": "View Logs", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'

View File

@@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0 rev: v6.0.0
hooks: hooks:
- id: end-of-file-fixer - id: end-of-file-fixer
- id: trailing-whitespace - id: trailing-whitespace
@@ -9,7 +9,9 @@ repos:
exclude: '^.*\/templates\/.*$' exclude: '^.*\/templates\/.*$'
args: args:
- --multi - --multi
- id: check-merge-conflict
- id: check-json
- repo: https://github.com/IamTheFij/docker-pre-commit - repo: https://github.com/IamTheFij/docker-pre-commit
rev: v2.0.0 rev: v3.0.1
hooks: hooks:
- id: docker-compose-check - id: docker-compose-check

View File

@@ -81,7 +81,8 @@ volsync-target-data:
enabled: true enabled: true
schedule: 0 8 * * * schedule: 0 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 0 9 * * * schedule: 0 9 * * *
external:
enabled: true
schedule: 0 10 * * *

View File

@@ -1,12 +1,12 @@
dependencies: dependencies:
- name: argo-workflows - name: argo-workflows
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
version: 0.47.4 version: 1.0.2
- name: argo-events - name: argo-events
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
version: 2.4.20 version: 2.4.20
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
digest: sha256:772ba83a6e0fa6a7e3633ff1fff0f8221b45a1f36ec890489cfa383330d99f81 digest: sha256:8d1c2dd011a360d930ed5ff186462f163407077d36ae633898ec5d6ba30a4e8d
generated: "2026-02-27T18:14:32.22595048Z" generated: "2026-03-15T20:04:18.080966008Z"

View File

@@ -18,15 +18,15 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: argo-workflows - name: argo-workflows
version: 0.47.4 version: 1.0.2
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
- name: argo-events - name: argo-events
version: 2.4.20 version: 2.4.20
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
# renovate: datasource=github-releases depName=argoproj/argo-workflows # renovate: datasource=github-releases depName=argoproj/argo-workflows
appVersion: v4.0.1 appVersion: v4.0.2

View File

@@ -1,4 +1,14 @@
argo-workflows: argo-workflows:
crds:
install: true
keep: true
# -- Use full CRDs with complete OpenAPI schemas. When false, uses minified CRDs with x-kubernetes-preserve-unknown-fields.
# Full CRDs are very large and are installed via a pre-install/pre-upgrade hook Job that uses server-side apply.
full: true
upgradeJob:
image:
repository: registry.k8s.io/kubectl
tag: v1.35.2
controller: controller:
metricsConfig: metricsConfig:
enabled: true enabled: true
@@ -105,7 +115,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -29,4 +29,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/audiobookshelf.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/audiobookshelf.png
# renovate: datasource=github-releases depName=advplyr/audiobookshelf # renovate: datasource=github-releases depName=advplyr/audiobookshelf
appVersion: 2.32.1 appVersion: 2.33.0

View File

@@ -1,14 +1,52 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: audiobookshelf-nfs-storage name: audiobookshelf-books-nfs-storage
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: audiobookshelf-nfs-storage app.kubernetes.io/name: audiobookshelf-books-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
spec: spec:
volumeName: audiobookshelf-nfs-storage volumeName: audiobookshelf-books-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: audiobookshelf-audiobooks-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: audiobookshelf-audiobooks-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
volumeName: audiobookshelf-audiobooks-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: audiobookshelf-podcasts-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: audiobookshelf-podcasts-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
volumeName: audiobookshelf-podcasts-nfs-storage
storageClassName: nfs-client storageClassName: nfs-client
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany

View File

@@ -1,10 +1,10 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: audiobookshelf-nfs-storage name: audiobookshelf-books-nfs-storage
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: audiobookshelf-nfs-storage app.kubernetes.io/name: audiobookshelf-books-nfs-storage
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
spec: spec:
@@ -15,7 +15,57 @@ spec:
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany
nfs: nfs:
path: /volume2/Storage path: /volume2/Storage/Books
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: audiobookshelf-audiobooks-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: audiobookshelf-audiobooks-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/Audiobooks
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: audiobookshelf-podcasts-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: audiobookshelf-podcasts-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/Podcasts
server: synologybond.alexlebens.net server: synologybond.alexlebens.net
mountOptions: mountOptions:
- vers=4 - vers=4

View File

@@ -9,7 +9,7 @@ audiobookshelf:
main: main:
image: image:
repository: ghcr.io/advplyr/audiobookshelf repository: ghcr.io/advplyr/audiobookshelf
tag: 2.32.1 tag: 2.33.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -114,12 +114,26 @@ audiobookshelf:
main: main:
- path: /metadata - path: /metadata
readOnly: false readOnly: false
audiobooks: books:
existingClaim: audiobookshelf-nfs-storage existingClaim: audiobookshelf-books-nfs-storage
advancedMounts: advancedMounts:
main: main:
main: main:
- path: /mnt/store/ - path: /mnt/store/Books
readOnly: false
audiobooks:
existingClaim: audiobookshelf-audiobooks-nfs-storage
advancedMounts:
main:
main:
- path: /mnt/store/Audiobooks
readOnly: false
podcasts:
existingClaim: audiobookshelf-podcasts-nfs-storage
advancedMounts:
main:
main:
- path: /mnt/store/Podcasts
readOnly: false readOnly: false
volsync-target-config: volsync-target-config:
pvcTarget: audiobookshelf-config pvcTarget: audiobookshelf-config
@@ -127,17 +141,19 @@ volsync-target-config:
enabled: true enabled: true
schedule: 2 8 * * * schedule: 2 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 2 9 * * * schedule: 2 9 * * *
external:
enabled: true
schedule: 2 10 * * *
volsync-target-metadata: volsync-target-metadata:
pvcTarget: audiobookshelf-metadata pvcTarget: audiobookshelf-metadata
local: local:
enabled: true enabled: true
schedule: 4 8 * * * schedule: 4 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 4 9 * * * schedule: 4 9 * * *
external:
enabled: true
schedule: 4 10 * * *

View File

@@ -7,9 +7,9 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:fad7059feb4ac80e06cd571a56215d56e4894eba69fb54aaa1e53ced9ec1b2b1 digest: sha256:8c353c5dad4c3d04d518c1445497f0d1cb64261a4201ae17a2c0874454b807a7
generated: "2026-03-09T23:06:05.608952158Z" generated: "2026-03-15T20:04:35.99407071Z"

View File

@@ -28,7 +28,7 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey alias: valkey

View File

@@ -68,7 +68,7 @@ postgres-18-cluster:
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
index: 1 index: 2
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
@@ -91,9 +91,9 @@ postgres-18-cluster:
# isWALArchiver: false # isWALArchiver: false
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: true suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 5 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -27,4 +27,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png
# renovate: datasource=github-releases depName=garethgeorge/backrest # renovate: datasource=github-releases depName=garethgeorge/backrest
appVersion: v1.12.0 appVersion: v1.12.1

View File

@@ -8,7 +8,7 @@ backrest:
main: main:
image: image:
repository: garethgeorge/backrest repository: garethgeorge/backrest
tag: v1.12.0 tag: v1.12.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -111,17 +111,19 @@ volsync-target-data:
enabled: true enabled: true
schedule: 6 8 * * * schedule: 6 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 6 9 * * * schedule: 6 9 * * *
external:
enabled: true
schedule: 6 10 * * *
volsync-target-config: volsync-target-config:
pvcTarget: backrest-config pvcTarget: backrest-config
local: local:
enabled: true enabled: true
schedule: 8 8 * * * schedule: 8 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 8 9 * * * schedule: 8 9 * * *
external:
enabled: true
schedule: 8 10 * * *

View File

@@ -6,7 +6,7 @@ keywords:
- bazarr - bazarr
- servarr - servarr
- subtitles - subtitles
home: https://wiki.alexlebens.dev/s/92784d53-1d43-42fd-b509-f42c73454226 home: https://wiki.alexlebens.dev/s/
sources: sources:
- https://github.com/morpheus65535/bazarr - https://github.com/morpheus65535/bazarr
- https://github.com/linuxserver/docker-bazarr - https://github.com/linuxserver/docker-bazarr

View File

@@ -15,7 +15,7 @@ bazarr:
main: main:
image: image:
repository: ghcr.io/linuxserver/bazarr repository: ghcr.io/linuxserver/bazarr
tag: 1.5.6@sha256:94eee5e3e14430b7b144d4556be73963a7daf6f1bddc25586627f426465482ce tag: 1.5.6@sha256:05f9d5b24884f37120453dc1a008a47be244eebec32099ae1bd29032e75b67aa
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -87,7 +87,8 @@ volsync-target-config:
enabled: true enabled: true
schedule: 10 8 * * * schedule: 10 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 10 9 * * * schedule: 10 9 * * *
external:
enabled: true
schedule: 10 10 * * *

View File

@@ -135,6 +135,7 @@ blocky:
komodo IN CNAME traefik-cl01tl komodo IN CNAME traefik-cl01tl
lidarr IN CNAME traefik-cl01tl lidarr IN CNAME traefik-cl01tl
mail IN CNAME traefik-cl01tl mail IN CNAME traefik-cl01tl
movie-roulette IN CNAME traefik-cl01tl
music-grabber IN CNAME traefik-cl01tl music-grabber IN CNAME traefik-cl01tl
navidrome IN CNAME traefik-cl01tl navidrome IN CNAME traefik-cl01tl
ntfy IN CNAME traefik-cl01tl ntfy IN CNAME traefik-cl01tl

View File

@@ -4,12 +4,12 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: mariadb-cluster - name: mariadb-cluster
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
version: 25.10.4 version: 26.3.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:d4c7bf75f72f7eab4ad968bf9f55daac9392c9b2df08f8a27c5dc4f8fffb5f57 digest: sha256:e65fa008c652092da5431e9780eb2a87c944298a12e58e432efad61c9e826da5
generated: "2026-03-06T01:06:05.696573273Z" generated: "2026-03-14T23:57:22.721295098Z"

View File

@@ -18,7 +18,7 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
- name: mariadb-cluster - name: mariadb-cluster
version: 25.10.4 version: 26.3.0
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config
@@ -30,4 +30,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/booklore.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/booklore.png
# renovate: datasource=github-releases depName=booklore-app/BookLore # renovate: datasource=github-releases depName=booklore-app/BookLore
appVersion: v2.1.0 appVersion: v2.2.1

View File

@@ -1,15 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationDestination
metadata:
name: booklore-data-replication-destination
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: booklore-data-replication-destination
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
rsyncTLS:
copyMethod: Direct
accessModes: ["ReadWriteMany"]
destinationPVC: booklore-books-nfs-storage
keySecret: booklore-data-replication-secret

View File

@@ -1,17 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: booklore-data-replication-source
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: booklore-data-replication-source
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
sourcePVC: booklore-data
trigger:
schedule: "0 0 * * *"
rsyncTLS:
keySecret: booklore-data-replication-secret
address: volsync-rsync-tls-dst-booklore-data-replication-destination
copyMethod: Snapshot

View File

@@ -9,7 +9,7 @@ booklore:
main: main:
image: image:
repository: ghcr.io/booklore-app/booklore repository: ghcr.io/booklore-app/booklore
tag: v2.1.0 tag: v2.2.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -225,10 +225,11 @@ volsync-target-config:
enabled: true enabled: true
schedule: 12 8 * * * schedule: 12 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 12 9 * * * schedule: 12 9 * * *
external:
enabled: true
schedule: 12 10 * * *
volsync-target-data: volsync-target-data:
pvcTarget: booklore-data pvcTarget: booklore-data
local: local:
@@ -238,11 +239,11 @@ volsync-target-data:
cacheCapacity: 10Gi cacheCapacity: 10Gi
remote: remote:
enabled: true enabled: true
schedule: 14 10 * * * schedule: 14 9 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi
external: external:
enabled: true enabled: true
schedule: 14 9 * * * schedule: 14 10 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi

View File

@@ -9,7 +9,7 @@ code-server:
main: main:
image: image:
repository: ghcr.io/linuxserver/code-server repository: ghcr.io/linuxserver/code-server
tag: 4.110.0@sha256:8473aa16fba93fccc3ca772173d095bccd2e44d4d3104467fee923df10d57cd2 tag: 4.111.0@sha256:12c04b41f601604795562ece2ac64cade7cfca632415f4bfb1742477e3226272
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -79,7 +79,8 @@ volsync-target-config:
enabled: true enabled: true
schedule: 16 8 * * * schedule: 16 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 16 9 * * * schedule: 16 9 * * *
external:
enabled: true
schedule: 16 10 * * *

View File

@@ -7,7 +7,7 @@ keywords:
- dns - dns
- network - network
- kubernetes - kubernetes
home: https://wiki.alexlebens.dev/s/43947ec6-a034-449f-8c76-982ac493b072 home: https://wiki.alexlebens.dev/s/
sources: sources:
- https://github.com/coredns/coredns - https://github.com/coredns/coredns
- https://github.com/coredns/helm - https://github.com/coredns/helm

View File

@@ -1,7 +1,7 @@
coredns: coredns:
image: image:
repository: registry.k8s.io/coredns/coredns repository: registry.k8s.io/coredns/coredns
tag: v1.14.1 tag: v1.14.2
replicaCount: 3 replicaCount: 3
resources: resources:
requests: requests:

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:f21fb0c49396d888de95d0b4c59ed535437422c1b24e622bf074ed0fbb22e03a digest: sha256:7584c2a1613454bbd83b66df46170fd0157df5186842844d483e2dd131398574
generated: "2026-03-09T23:06:27.025881262Z" generated: "2026-03-15T20:04:49.68456485Z"

View File

@@ -18,7 +18,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey alias: valkey
@@ -26,4 +26,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/dawarich.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/dawarich.png
# renovate: datasource=github-releases depName=Freika/dawarich # renovate: datasource=github-releases depName=Freika/dawarich
appVersion: 1.3.2 appVersion: 1.3.4

View File

@@ -9,7 +9,7 @@ dawarich:
main: main:
image: image:
repository: freikin/dawarich repository: freikin/dawarich
tag: 1.3.2 tag: 1.3.4
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
command: ["web-entrypoint.sh"] command: ["web-entrypoint.sh"]
args: ["bin/rails", "server", "-p", "3000", "-b", "::"] args: ["bin/rails", "server", "-p", "3000", "-b", "::"]
@@ -106,7 +106,7 @@ dawarich:
sidekiq: sidekiq:
image: image:
repository: freikin/dawarich repository: freikin/dawarich
tag: 1.3.2 tag: 1.3.4
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
command: ["sidekiq-entrypoint.sh"] command: ["sidekiq-entrypoint.sh"]
args: ["sidekiq"] args: ["sidekiq"]
@@ -330,7 +330,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 10 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:2c38827f09e57aeff21409bf223edf3f889069db6d05c39f0404ed0c974cabb3 digest: sha256:dfcb5d35e03ecdc4206227d206d36509319f0dcdaed54363840d71337debb3f7
generated: "2026-03-09T23:06:37.271648311Z" generated: "2026-03-15T20:05:03.156596646Z"

View File

@@ -23,7 +23,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey alias: valkey
@@ -31,4 +31,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/directus.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/directus.png
# renovate: datasource=github-releases depName=directus/directus # renovate: datasource=github-releases depName=directus/directus
appVersion: 11.16.0 appVersion: 11.16.1

View File

@@ -94,6 +94,43 @@ spec:
metadataPolicy: None metadataPolicy: None
property: metric-token property: metric-token
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: directus-bucket-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: directus-bucket-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/directus-assets
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/directus-assets
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: ACCESS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/directus-assets
metadataPolicy: None
property: ACCESS_REGION
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret

View File

@@ -1,11 +0,0 @@
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: ceph-bucket-directus
labels:
app.kubernetes.io/name: ceph-bucket-directus
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
generateBucketName: bucket-directus
storageClassName: ceph-bucket

View File

@@ -9,7 +9,7 @@ directus:
main: main:
image: image:
repository: directus/directus repository: directus/directus
tag: 11.16.0 tag: 11.16.1
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: PUBLIC_URL - name: PUBLIC_URL
@@ -90,22 +90,22 @@ directus:
- name: STORAGE_S3_KEY - name: STORAGE_S3_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ceph-bucket-directus name: directus-bucket-garage
key: AWS_ACCESS_KEY_ID key: ACCESS_KEY_ID
- name: STORAGE_S3_SECRET - name: STORAGE_S3_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ceph-bucket-directus name: directus-bucket-garage
key: AWS_SECRET_ACCESS_KEY key: ACCESS_SECRET_KEY
- name: STORAGE_S3_BUCKET
valueFrom:
configMapKeyRef:
name: ceph-bucket-directus
key: BUCKET_NAME
- name: STORAGE_S3_REGION - name: STORAGE_S3_REGION
value: us-east-1 valueFrom:
secretKeyRef:
name: directus-bucket-garage
key: ACCESS_REGION
- name: STORAGE_S3_BUCKET
value: directus-assets
- name: STORAGE_S3_ENDPOINT - name: STORAGE_S3_ENDPOINT
value: http://rook-ceph-rgw-ceph-objectstore.rook-ceph.svc:80 value: http://garage-main.garage:3900
- name: STORAGE_S3_FORCE_PATH_STYLE - name: STORAGE_S3_FORCE_PATH_STYLE
value: true value: true
- name: AUTH_PROVIDERS - name: AUTH_PROVIDERS
@@ -219,7 +219,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 15 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -1,9 +1,9 @@
dependencies: dependencies:
- name: element-web - name: element-web
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
version: 1.4.31 version: 1.4.32
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0 version: 2.4.0
digest: sha256:5066932d870c4803fca9bc4d7b686793e801d96b14026c299e467d8c107fb7eb digest: sha256:49d9dd45eff7cbbc11644e4a8bd3c9d3bf84716ed034a76f097f0ba1fea4c934
generated: "2026-03-09T22:04:10.470135964Z" generated: "2026-03-11T16:04:17.556777286Z"

View File

@@ -17,7 +17,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: element-web - name: element-web
version: 1.4.31 version: 1.4.32
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts

View File

@@ -2,7 +2,7 @@ element-web:
replicaCount: 1 replicaCount: 1
image: image:
repository: vectorim/element-web repository: vectorim/element-web
tag: v1.12.11 tag: v1.12.12
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
defaultServer: defaultServer:
url: https://matrix.alexlebens.dev url: https://matrix.alexlebens.dev

View File

@@ -7,9 +7,9 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:99f1993c99c23ba5b3af6997d859cbb18f26343e424c1312f8b6169f285a3418 digest: sha256:a7bdbecd50433fedd65d3043102fe3c9e366dc98953c37eb0cfe762bce833e8e
generated: "2026-03-09T22:04:20.416597531Z" generated: "2026-03-15T20:05:14.085780861Z"

View File

@@ -26,7 +26,7 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-data alias: volsync-target-data

View File

@@ -197,7 +197,7 @@ postgres-18-cluster:
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
index: 1 index: 2
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
@@ -222,7 +222,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 20 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -250,7 +250,8 @@ volsync-target-data:
enabled: true enabled: true
schedule: 18 8 * * * schedule: 18 8 * * *
remote: remote:
enabled: false
external:
enabled: true enabled: true
schedule: 18 9 * * * schedule: 18 9 * * *
external:
enabled: true
schedule: 18 10 * * *

View File

@@ -0,0 +1,32 @@
apiVersion: v1
kind: Service
metadata:
name: garage-main
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: garage-main
app.kubernetes.io/service: garage-main
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
ports:
- name: admin
port: 3903
protocol: TCP
targetPort: 3903
- name: rpc
port: 3901
protocol: TCP
targetPort: 3901
- name: s3
port: 3900
protocol: TCP
targetPort: 3900
- name: web
port: 3902
protocol: TCP
targetPort: 3902
selector:
app.kubernetes.io/instance: garage
app.kubernetes.io/name: garage
garage-type: server

View File

@@ -118,9 +118,9 @@ garage:
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: API_BASE_URL - name: API_BASE_URL
value: http://garage-1.garage:3903 value: http://garage-main.garage:3903
- name: S3_ENDPOINT_URL - name: S3_ENDPOINT_URL
value: http://garage-1.garage:3900 value: http://garage-main.garage:3900
- name: API_ADMIN_KEY - name: API_ADMIN_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
@@ -225,26 +225,6 @@ garage:
api_bind_addr = "[::]:3903" api_bind_addr = "[::]:3903"
metrics_require_token = true metrics_require_token = true
service: service:
garage-main:
forceRename: garage-main
controller: server-2
ports:
s3:
port: 3900
targetPort: 3900
protocol: HTTP
rpc:
port: 3901
targetPort: 3901
protocol: HTTP
web:
port: 3902
targetPort: 3902
protocol : HTTP
admin:
port: 3903
targetPort: 3903
protocol: HTTP
server-1: server-1:
forceRename: garage-1 forceRename: garage-1
controller: server-1 controller: server-1
@@ -322,8 +302,8 @@ garage:
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints: endpoints:
- port: admin - port: admin
interval: 1m interval: 5m
scrapeTimeout: 30s scrapeTimeout: 2m
path: /metrics path: /metrics
bearerTokenSecret: bearerTokenSecret:
name: garage-token-secret name: garage-token-secret

View File

@@ -4,9 +4,9 @@ dependencies:
version: 1.5.0 version: 1.5.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:c0c46db33b89b7a53dd512d19d07623a1eaafcc93668f0afacbb8d8c56d71e47 digest: sha256:83ec84774e0cc708f1cb5d83d657180159bfb75c9928784ebf0280e224b1cbca
generated: "2026-03-06T01:07:17.642671539Z" generated: "2026-03-15T20:05:27.625292422Z"

View File

@@ -22,7 +22,7 @@ dependencies:
version: 1.5.0 version: 1.5.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-data alias: volsync-target-data

View File

@@ -137,6 +137,9 @@ gatus:
- name: yamtrack - name: yamtrack
url: https://yamtrack.alexlebens.net url: https://yamtrack.alexlebens.net
<<: *defaults <<: *defaults
- name: movie-roulette
url: https://movie-roulette.alexlebens.net
<<: *defaults
- name: jellyfin - name: jellyfin
url: https://jellyfin.alexlebens.net url: https://jellyfin.alexlebens.net
<<: *defaults <<: *defaults
@@ -427,7 +430,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 25 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -443,9 +446,10 @@ volsync-target-data:
pvcTarget: gatus pvcTarget: gatus
local: local:
enabled: true enabled: true
schedule: 22 8 * * * schedule: 20 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 20 9 * * *
external: external:
enabled: true enabled: true
schedule: 22 9 * * * schedule: 20 10 * * *

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: generic-device-plugin - name: generic-device-plugin
repository: https://gitea.alexlebens.dev/api/packages/alexlebens/helm repository: https://gitea.alexlebens.dev/api/packages/alexlebens/helm
version: 0.20.21 version: 0.20.22
digest: sha256:4f1359a01b8b85722ab1805426a86f3ea64d0134513ce14fe9c55f3f918a21fb digest: sha256:14e5aa3f02ce6a1271dadc3f76997c739fc9434e669b05655c079d0b873c56ca
generated: "2026-03-09T23:02:42.799515974Z" generated: "2026-03-15T20:35:40.676997293Z"

View File

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

View File

@@ -7,13 +7,13 @@ dependencies:
version: 0.0.3 version: 0.0.3
- name: meilisearch - name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0 version: 0.28.0
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
@@ -23,5 +23,5 @@ dependencies:
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:177a591c68e99a6f63f8acaf904cfc444774814db4ccd3ac410be511d67bbf9c digest: sha256:238b7653c9d12c4886a56350b6d66217dbe7ecbb76078a846c7cc2c8cb450eb3
generated: "2026-03-09T23:06:50.110952088Z" generated: "2026-03-16T15:56:55.197735783Z"

View File

@@ -33,14 +33,14 @@ dependencies:
repository: https://dl.gitea.com/charts/ repository: https://dl.gitea.com/charts/
version: 0.0.3 version: 0.0.3
- name: meilisearch - name: meilisearch
version: 0.27.0 version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey-gitea alias: valkey-gitea
@@ -56,4 +56,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/gitea.png icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/gitea.png
# renovate: datasource=github-releases depName=go-gitea/gitea # renovate: datasource=github-releases depName=go-gitea/gitea
appVersion: 1.25.4 appVersion: 1.25.5

View File

@@ -4,7 +4,7 @@ gitea:
replicaCount: 3 replicaCount: 3
image: image:
repository: gitea/gitea repository: gitea/gitea
tag: 1.25.4 tag: 1.25.5
service: service:
http: http:
type: ClusterIP type: ClusterIP
@@ -57,6 +57,7 @@ gitea:
ROOT_URL: https://gitea.alexlebens.dev ROOT_URL: https://gitea.alexlebens.dev
LOCAL_ROOT_URL: http://gitea-http.gitea.svc.cluster.local:3000 LOCAL_ROOT_URL: http://gitea-http.gitea.svc.cluster.local:3000
START_SSH_SERVER: true START_SSH_SERVER: true
HTTP_PORT: 3000
SSH_DOMAIN: gitea.alexlebens.net SSH_DOMAIN: gitea.alexlebens.net
SSH_PORT: 22 SSH_PORT: 22
SSH_LISTEN_PORT: 22 SSH_LISTEN_PORT: 22
@@ -222,7 +223,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 7 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -259,7 +260,7 @@ volsync-target-storage:
fsGroupChangePolicy: OnRootMismatch fsGroupChangePolicy: OnRootMismatch
local: local:
enabled: true enabled: true
schedule: 0 0 0 * * * schedule: 0 0 7 * * *
restic: restic:
pruneIntervalDays: 3 pruneIntervalDays: 3
retain: retain:

View File

@@ -1,15 +1,15 @@
dependencies: dependencies:
- name: grafana-operator - name: grafana-operator
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
version: 5.22.0 version: 5.22.1
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:6f4dc1456854cad04f387cef6e0a9c846e76eb811bf97f2b7b13877cb3f577bd digest: sha256:9cbba52d093e40b20917af87263e1fb0e478912440f660543f3527e70452edc7
generated: "2026-03-09T23:07:06.293890171Z" generated: "2026-03-15T20:05:59.855514102Z"

View File

@@ -17,11 +17,11 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: grafana-operator - name: grafana-operator
version: 5.22.0 version: 5.22.1
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey-unified-alerting alias: valkey-unified-alerting
@@ -33,4 +33,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/grafana.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/grafana.png
# renovate: datasource=github-releases depName=grafana/grafana-operator # renovate: datasource=github-releases depName=grafana/grafana-operator
appVersion: v5.22.0 appVersion: v5.22.1

View File

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

View File

@@ -42,7 +42,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 30 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -4,9 +4,9 @@ dependencies:
version: 1.18.2 version: 1.18.2
- name: postgres-cluster - name: postgres-cluster
repository: https://gitea.alexlebens.net/api/packages/alexlebens/helm repository: https://gitea.alexlebens.net/api/packages/alexlebens/helm
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:ee8ed34cd53d8fa36497df28cba9cf16ef656250b0bc3ff6690fb958b22caf6f digest: sha256:14c2b7d09631dbb573e9c9d4613ebe52e330146662da0da15f74c31ec519ed15
generated: "2026-03-09T23:07:20.650108569Z" generated: "2026-03-15T20:06:13.615175051Z"

View File

@@ -21,7 +21,7 @@ dependencies:
repository: https://helm.goharbor.io repository: https://helm.goharbor.io
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: https://gitea.alexlebens.net/api/packages/alexlebens/helm repository: https://gitea.alexlebens.net/api/packages/alexlebens/helm
- name: valkey - name: valkey
alias: valkey alias: valkey
@@ -29,4 +29,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/harbor.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/harbor.png
# renovate: datasource=github-releases depName=goharbor/harbor # renovate: datasource=github-releases depName=goharbor/harbor
appVersion: v2.14.2 appVersion: v2.14.3

View File

@@ -41,12 +41,12 @@ harbor:
portal: portal:
image: image:
repository: goharbor/harbor-portal repository: goharbor/harbor-portal
tag: v2.14.2 tag: v2.14.3
replicas: 2 replicas: 2
core: core:
image: image:
repository: goharbor/harbor-core repository: goharbor/harbor-core
tag: v2.14.2 tag: v2.14.3
replicas: 2 replicas: 2
existingSecret: harbor-secret existingSecret: harbor-secret
secretName: harbor-secret secretName: harbor-secret
@@ -54,7 +54,7 @@ harbor:
jobservice: jobservice:
image: image:
repository: goharbor/harbor-jobservice repository: goharbor/harbor-jobservice
tag: v2.14.2 tag: v2.14.3
replicas: 2 replicas: 2
jobLoggers: jobLoggers:
- stdout - stdout
@@ -63,11 +63,11 @@ harbor:
registry: registry:
image: image:
repository: goharbor/registry-photon repository: goharbor/registry-photon
tag: v2.14.2 tag: v2.14.3
controller: controller:
image: image:
repository: goharbor/harbor-registryctl repository: goharbor/harbor-registryctl
tag: v2.14.2 tag: v2.14.3
existingSecret: harbor-secret existingSecret: harbor-secret
relativeurls: true relativeurls: true
credentials: credentials:
@@ -94,14 +94,14 @@ harbor:
exporter: exporter:
image: image:
repository: goharbor/harbor-exporter repository: goharbor/harbor-exporter
tag: v2.14.2 tag: v2.14.3
replicas: 2 replicas: 2
postgres-18-cluster: postgres-18-cluster:
mode: recovery mode: recovery
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
index: 1 index: 2
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
@@ -126,7 +126,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 35 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: headlamp - name: headlamp
repository: https://kubernetes-sigs.github.io/headlamp/ repository: https://kubernetes-sigs.github.io/headlamp/
version: 0.40.0 version: 0.40.1
digest: sha256:b7f8f176f8c4902130e87660adb39211fd5ca454f89f5a7e9ed577cd4c3a2255 digest: sha256:723a57d6fe86a124b8bae7dfc1dde0c2abd60021837826b486054df00551dc03
generated: "2026-02-05T18:23:45.100522813Z" generated: "2026-03-14T15:02:53.184950913Z"

View File

@@ -14,7 +14,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: headlamp - name: headlamp
version: 0.40.0 version: 0.40.1
repository: https://kubernetes-sigs.github.io/headlamp/ repository: https://kubernetes-sigs.github.io/headlamp/
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/headlamp.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/headlamp.png
# renovate: datasource=github-releases depName=headlamp-k8s/headlamp # renovate: datasource=github-releases depName=headlamp-k8s/headlamp

View File

@@ -8,6 +8,8 @@ headlamp:
enabled: true enabled: true
name: headlamp-oidc-secret name: headlamp-oidc-secret
watchPlugins: true watchPlugins: true
# Bypasses: https://github.com/kubernetes-sigs/headlamp/issues/4883
sessionTTL: null
resources: resources:
requests: requests:
cpu: 10m cpu: 10m

View File

@@ -21,7 +21,7 @@ home-assistant:
code-server: code-server:
image: image:
repository: ghcr.io/linuxserver/code-server repository: ghcr.io/linuxserver/code-server
tag: 4.110.0@sha256:8473aa16fba93fccc3ca772173d095bccd2e44d4d3104467fee923df10d57cd2 tag: 4.111.0@sha256:12c04b41f601604795562ece2ac64cade7cfca632415f4bfb1742477e3226272
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -134,9 +134,10 @@ volsync-target-config:
fsGroupChangePolicy: OnRootMismatch fsGroupChangePolicy: OnRootMismatch
local: local:
enabled: true enabled: true
schedule: 24 8 * * * schedule: 22 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 22 9 * * *
external: external:
enabled: true enabled: true
schedule: 24 9 * * * schedule: 22 10 * * *

View File

@@ -19,4 +19,4 @@ dependencies:
version: 4.6.2 version: 4.6.2
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/homepage.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/homepage.png
# renovate: datasource=github-releases depName=gethomepage/homepage # renovate: datasource=github-releases depName=gethomepage/homepage
appVersion: v1.10.1 appVersion: v1.11.0

View File

@@ -16,7 +16,7 @@ homepage:
main: main:
image: image:
repository: ghcr.io/gethomepage/homepage repository: ghcr.io/gethomepage/homepage
tag: v1.10.1 tag: v1.11.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: HOMEPAGE_ALLOWED_HOSTS - name: HOMEPAGE_ALLOWED_HOSTS
@@ -160,6 +160,12 @@ homepage:
href: https://yamtrack.alexlebens.net href: https://yamtrack.alexlebens.net
siteMonitor: http://yamtrack.yamtrack:80 siteMonitor: http://yamtrack.yamtrack:80
statusStyle: dot statusStyle: dot
- Movie Roulette:
icon: https://raw.githubusercontent.com/sahara101/Movie-Roulette/refs/heads/main/static/icons/icon.png
description: Movie Roulette
href: https://movie-roulette.alexlebens.net
siteMonitor: http://movie-roulette.movie-roulette:80
statusStyle: dot
- Movies and TV: - Movies and TV:
icon: sh-jellyfin.webp icon: sh-jellyfin.webp
description: Jellyfin description: Jellyfin

View File

@@ -4,12 +4,12 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:360f79209535cd9132b7db774aabd6492c2c287e62f00795e5f4ae4cc6a038c0 digest: sha256:b79ea8c506f0172deed820247a33c79329f34426435c8b5eb27b206ac8831b13
generated: "2026-03-09T23:07:40.320287247Z" generated: "2026-03-15T20:06:27.091094433Z"

View File

@@ -20,7 +20,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey alias: valkey

View File

@@ -209,7 +209,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 40 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -225,16 +225,16 @@ volsync-target-data:
pvcTarget: immich pvcTarget: immich
local: local:
enabled: true enabled: true
schedule: 28 8 * * * schedule: 24 8 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi
remote: remote:
enabled: true enabled: true
schedule: 28 10 * * * schedule: 24 9 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi
external: external:
enabled: true enabled: true
schedule: 28 9 * * * schedule: 24 10 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: meilisearch - name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0 version: 0.28.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:ca384647a640ae717ac874a2627f00ac9a1e5c97ff5eeb8f326ebdd471ab1623 digest: sha256:57b007c6e19dda1300f5025332d9e8104bfb9a50cd7124260bfa68ce2432628b
generated: "2026-03-09T15:04:08.648165537Z" generated: "2026-03-16T15:57:13.466372254Z"

View File

@@ -25,7 +25,7 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
- name: meilisearch - name: meilisearch
version: 0.27.0 version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config

View File

@@ -143,14 +143,16 @@ volsync-target-config:
pvcTarget: jellyfin-config pvcTarget: jellyfin-config
local: local:
enabled: true enabled: true
schedule: 30 8 * * * schedule: 26 8 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi
remote: remote:
enabled: true
schedule: 26 9 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi
external: external:
enabled: true enabled: true
schedule: 30 9 * * * schedule: 26 10 * * *
restic: restic:
cacheCapacity: 10Gi cacheCapacity: 10Gi

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:0f8868c6e89c0f283650db5446e8f36f162cb2179f62eb58e67b5b08c03ac84d digest: sha256:f779185ce82045b47fc75bf95c4a8215acbd387f44a4bdb764486406d9b03748
generated: "2026-03-06T01:09:37.09922161Z" generated: "2026-03-15T20:06:38.720993367Z"

View File

@@ -21,7 +21,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-data alias: volsync-target-data

View File

@@ -129,7 +129,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 45 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -145,9 +145,10 @@ volsync-target-data:
pvcTarget: jellystat-data pvcTarget: jellystat-data
local: local:
enabled: true enabled: true
schedule: 32 8 * * * schedule: 28 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 28 9 * * *
external: external:
enabled: true enabled: true
schedule: 32 9 * * * schedule: 28 10 * * *

View File

@@ -4,12 +4,12 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: meilisearch - name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0 version: 0.28.0
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0 version: 2.4.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:75f92316d4b6229d00e3dfa39ed5026ad39a28f833321cd3887a2048cdac34c7 digest: sha256:49e37e17dc859927048c6474ce27cb063a020f291d6d2d24876d0427eddc3656
generated: "2026-03-09T22:04:48.630821646Z" generated: "2026-03-16T15:57:28.156797159Z"

View File

@@ -22,7 +22,7 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
- name: meilisearch - name: meilisearch
version: 0.27.0 version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: cloudflared - name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts

View File

@@ -57,6 +57,43 @@ spec:
metadataPolicy: None metadataPolicy: None
property: secret property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: karakeep-bucket-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: karakeep-bucket-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/karakeep-assets
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/karakeep-assets
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: ACCESS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/karakeep-assets
metadataPolicy: None
property: ACCESS_REGION
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret

View File

@@ -1,11 +0,0 @@
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: ceph-bucket-karakeep
labels:
app.kubernetes.io/name: ceph-bucket-karakeep
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
generateBucketName: bucket-karakeep
storageClassName: ceph-bucket

View File

@@ -29,24 +29,24 @@ karakeep:
name: karakeep-key-secret name: karakeep-key-secret
key: prometheus-token key: prometheus-token
- name: ASSET_STORE_S3_ENDPOINT - name: ASSET_STORE_S3_ENDPOINT
value: http://rook-ceph-rgw-ceph-objectstore.rook-ceph.svc:80 value: http://garage-main.garage:3900
- name: ASSET_STORE_S3_REGION - name: ASSET_STORE_S3_REGION
value: us-east-1
- name: ASSET_STORE_S3_BUCKET
valueFrom: valueFrom:
configMapKeyRef: secretKeyRef:
name: ceph-bucket-karakeep name: karakeep-bucket-garage
key: BUCKET_NAME key: ACCESS_REGION
- name: ASSET_STORE_S3_BUCKET
value: karakeep-assets
- name: ASSET_STORE_S3_ACCESS_KEY_ID - name: ASSET_STORE_S3_ACCESS_KEY_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ceph-bucket-karakeep name: karakeep-bucket-garage
key: AWS_ACCESS_KEY_ID key: ACCESS_KEY_ID
- name: ASSET_STORE_S3_SECRET_ACCESS_KEY - name: ASSET_STORE_S3_SECRET_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: ceph-bucket-karakeep name: karakeep-bucket-garage
key: AWS_SECRET_ACCESS_KEY key: ACCESS_SECRET_KEY
- name: ASSET_STORE_S3_FORCE_PATH_STYLE - name: ASSET_STORE_S3_FORCE_PATH_STYLE
value: true value: true
- name: MEILI_ADDR - name: MEILI_ADDR
@@ -172,9 +172,10 @@ volsync-target-data:
pvcTarget: karakeep pvcTarget: karakeep
local: local:
enabled: true enabled: true
schedule: 34 8 * * * schedule: 30 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 30 9 * * *
external: external:
enabled: true enabled: true
schedule: 34 9 * * * schedule: 30 10 * * *

View File

@@ -4,6 +4,6 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
digest: sha256:dd1ccfe8d0bfc7248141d2f72806c6437572f21d818941e9071f58d1a0a47259 digest: sha256:a6f33512d929c5a1b70bde6c3294902f5d707855aabbaa815f32e23aa54b266f
generated: "2026-02-27T18:17:12.586352018Z" generated: "2026-03-15T20:06:49.233053802Z"

View File

@@ -23,7 +23,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgresql-17-fdb-cluster alias: postgresql-17-fdb-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/komodo.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/komodo.png
# renovate: datasource=github-releases depName=moghtech/komodo # renovate: datasource=github-releases depName=moghtech/komodo

View File

@@ -205,7 +205,7 @@ postgresql-17-fdb-cluster:
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
index: 1 index: 2
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
@@ -230,7 +230,7 @@ postgresql-17-fdb-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 50 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true

View File

@@ -1,12 +1,12 @@
dependencies: dependencies:
- name: kube-prometheus-stack - name: kube-prometheus-stack
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
version: 82.10.2 version: 82.10.4
- name: app-template - name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
digest: sha256:9019f0e0bcbe5033457c9d402590b51a1b27e2e6141bfd5d84b9b30a5f666c98 digest: sha256:d6bbbfdd1a781b5eb82c2dc8571836a43d23bf8526eac1bcd40f38030be642db
generated: "2026-03-09T23:07:53.50141436Z" generated: "2026-03-15T20:38:11.961621853Z"

View File

@@ -20,7 +20,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: kube-prometheus-stack - name: kube-prometheus-stack
version: 82.10.2 version: 82.10.4
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
- name: app-template - name: app-template
alias: ntfy-alertmanager alias: ntfy-alertmanager

View File

@@ -24,4 +24,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/libation.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/libation.png
# renovate: datasource=github-releases depName=rmcrackan/Libation # renovate: datasource=github-releases depName=rmcrackan/Libation
appVersion: 13.2.1 appVersion: 13.3.0

View File

@@ -16,7 +16,7 @@ libation:
main: main:
image: image:
repository: rmcrackan/libation repository: rmcrackan/libation
tag: 13.2.1 tag: 13.3.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: SLEEP_TIME - name: SLEEP_TIME
@@ -75,9 +75,10 @@ volsync-target-config:
pvcTarget: libation pvcTarget: libation
local: local:
enabled: true enabled: true
schedule: 36 8 * * * schedule: 32 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 32 9 * * *
external: external:
enabled: true enabled: true
schedule: 36 9 * * * schedule: 32 10 * * *

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:4511a3475316ebf0bd5da452e69602b7d52746253c659a433e61851f51093285 digest: sha256:0f1a2923a7042b364a817edc64729d5e1c18b0552555c035d974de626f372692
generated: "2026-03-06T01:10:55.882802086Z" generated: "2026-03-15T20:07:00.750754951Z"

View File

@@ -24,7 +24,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config

View File

@@ -15,7 +15,7 @@ lidarr:
main: main:
image: image:
repository: ghcr.io/linuxserver/lidarr repository: ghcr.io/linuxserver/lidarr
tag: 3.1.2-nightly@sha256:f64fabd1737d9c7d519e1a37aba97b2e110d717e1c497a6f9788766f9633cf8f tag: 3.1.2-nightly@sha256:2b1b64f07214c6cf05bcfed999aa74ee23825e4bc2ef2c48aba1cd5d5bf968fe
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
@@ -167,7 +167,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 55 14 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -188,9 +188,10 @@ volsync-target-config:
fsGroupChangePolicy: OnRootMismatch fsGroupChangePolicy: OnRootMismatch
local: local:
enabled: true enabled: true
schedule: 38 8 * * * schedule: 34 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 34 9 * * *
external: external:
enabled: true enabled: true
schedule: 38 9 * * * schedule: 34 10 * * *

View File

@@ -1,9 +1,9 @@
dependencies: dependencies:
- name: loki - name: loki
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
version: 6.53.0 version: 6.55.0
- name: alloy - name: alloy
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
version: 1.6.2 version: 1.6.2
digest: sha256:88b8ace6bcbcbff4b04727499705fbe94de7fe4b8f0b8aa254a1e7d1d2c65fac digest: sha256:463184dc134143723f8567a1ebd228353cf0253a139f0a4e76637ec65aa4aaf1
generated: "2026-03-10T18:56:19.38475079Z" generated: "2026-03-14T18:16:47.779817047Z"

View File

@@ -16,7 +16,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: loki - name: loki
version: 6.53.0 version: 6.55.0
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
- name: alloy - name: alloy
version: 1.6.2 version: 1.6.2

View File

@@ -1,9 +1,9 @@
dependencies: dependencies:
- name: mariadb-operator - name: mariadb-operator
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
version: 25.10.4 version: 26.3.0
- name: mariadb-operator-crds - name: mariadb-operator-crds
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
version: 25.10.4 version: 26.3.0
digest: sha256:fcb4433060885746dd43a5fb4d8b32163d50d97dc4614fbf4c82f966a1723304 digest: sha256:95f9484c385d08f9b15f55cbb0f8d82c55b8c1a055a4c7697335d4ca51c35d7e
generated: "2026-01-08T21:21:13.446114122Z" generated: "2026-03-14T23:23:02.743862932Z"

View File

@@ -15,11 +15,11 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: mariadb-operator - name: mariadb-operator
version: 25.10.4 version: 26.3.0
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
- name: mariadb-operator-crds - name: mariadb-operator-crds
version: 25.10.4 version: 26.3.0
repository: https://helm.mariadb.com/mariadb-operator repository: https://helm.mariadb.com/mariadb-operator
icon: https://mariadb-operator.github.io/mariadb-operator/assets/mariadb_profile.svg icon: https://mariadb-operator.github.io/mariadb-operator/assets/mariadb_profile.svg
# renovate: datasource=github-releases depName=mariadb-operator/mariadb-operator # renovate: datasource=github-releases depName=mariadb-operator/mariadb-operator
appVersion: 25.10.4 appVersion: 26.3.0

View File

@@ -1,7 +1,7 @@
dependencies: dependencies:
- name: matrix-synapse - name: matrix-synapse
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
version: 3.12.22 version: 3.12.23
- name: app-template - name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
@@ -19,7 +19,7 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.8.0 version: 7.10.0
- name: valkey - name: valkey
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0 version: 0.4.0
@@ -38,5 +38,5 @@ dependencies:
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:fc6e3a04b828daf3a0861aec6a7a6d1c9a45fabaf29abd3fb3be2e8db4d0875b digest: sha256:1578e2c48447f217e72bffb3afcb6f1f15c427a4acce5dbca830cdd7045b1348
generated: "2026-03-09T23:08:07.610958823Z" generated: "2026-03-15T20:07:12.751000922Z"

View File

@@ -29,7 +29,7 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: matrix-synapse - name: matrix-synapse
version: 3.12.22 version: 3.12.23
repository: https://ananace.gitlab.io/charts repository: https://ananace.gitlab.io/charts
- name: app-template - name: app-template
alias: matrix-hookshot alias: matrix-hookshot
@@ -53,7 +53,7 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.8.0 version: 7.10.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: valkey - name: valkey
alias: valkey-matrix-synapse alias: valkey-matrix-synapse
@@ -81,4 +81,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/matrix.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/matrix.png
# renovate: datasource=github-releases depName=element-hq/synapse # renovate: datasource=github-releases depName=element-hq/synapse
appVersion: v1.149.0 appVersion: v1.149.1

View File

@@ -434,7 +434,7 @@ postgres-18-cluster:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 15 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
@@ -470,22 +470,24 @@ volsync-target-synapse:
pvcTarget: matrix-synapse pvcTarget: matrix-synapse
local: local:
enabled: true enabled: true
schedule: 44 8 * * * schedule: 36 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 36 9 * * *
external: external:
enabled: true enabled: true
schedule: 44 9 * * * schedule: 36 10 * * *
volsync-target-hookshot: volsync-target-hookshot:
pvcTarget: matrix-hookshot pvcTarget: matrix-hookshot
local: local:
enabled: true enabled: true
schedule: 46 8 * * * schedule: 38 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 38 9 * * *
external: external:
enabled: true enabled: true
schedule: 46 9 * * * schedule: 38 10 * * *
volsync-target-discord: volsync-target-discord:
pvcTarget: mautrix-discord pvcTarget: mautrix-discord
moverSecurityContext: moverSecurityContext:
@@ -493,12 +495,13 @@ volsync-target-discord:
runAsGroup: 1337 runAsGroup: 1337
local: local:
enabled: true enabled: true
schedule: 48 8 * * * schedule: 40 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 40 9 * * *
external: external:
enabled: true enabled: true
schedule: 48 9 * * * schedule: 40 10 * * *
volsync-target-whatsapp: volsync-target-whatsapp:
pvcTarget: mautrix-whatsapp pvcTarget: mautrix-whatsapp
moverSecurityContext: moverSecurityContext:
@@ -506,9 +509,10 @@ volsync-target-whatsapp:
runAsGroup: 1337 runAsGroup: 1337
local: local:
enabled: true enabled: true
schedule: 50 8 * * * schedule: 42 8 * * *
remote: remote:
enabled: false enabled: true
schedule: 42 9 * * *
external: external:
enabled: true enabled: true
schedule: 50 9 * * * schedule: 42 10 * * *

Some files were not shown because too many files have changed in this diff Show More