32 Commits

Author SHA1 Message Date
2c5df6cd11 feat: remove yubal playlist
All checks were successful
lint-test-helm / lint-helm (push) Successful in 18s
lint-test-docker / lint-docker-compose (push) Successful in 22s
render-manifests-push / render-manifests-push (push) Successful in 43s
renovate / renovate (push) Successful in 1m41s
2026-02-06 15:46:59 -06:00
6e4fabdfa3 feat: auto import playlists
All checks were successful
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 56s
renovate / renovate (push) Successful in 1m31s
2026-02-06 14:56:17 -06:00
732286fab2 feat: remove gluetun
All checks were successful
lint-test-helm / lint-helm (push) Successful in 19s
render-manifests-push / render-manifests-push (push) Successful in 53s
renovate / renovate (push) Successful in 1m53s
2026-02-06 14:21:52 -06:00
a5800aa1cb fix: set user
All checks were successful
lint-test-helm / lint-helm (push) Successful in 14s
render-manifests-push / render-manifests-push (push) Successful in 54s
renovate / renovate (push) Successful in 1m22s
2026-02-06 14:19:11 -06:00
7f00e1b235 fix: change path
All checks were successful
lint-test-helm / lint-helm (push) Successful in 15s
render-manifests-push / render-manifests-push (push) Successful in 37s
renovate / renovate (push) Successful in 2m2s
2026-02-06 14:11:28 -06:00
2a2c9b7a08 fix: change log level
All checks were successful
lint-test-helm / lint-helm (push) Successful in 14s
render-manifests-push / render-manifests-push (push) Successful in 59s
renovate / renovate (push) Successful in 1m28s
2026-02-06 14:07:06 -06:00
31deca61f1 fix: input port
All checks were successful
lint-test-helm / lint-helm (push) Successful in 14s
render-manifests-push / render-manifests-push (push) Successful in 1m0s
renovate / renovate (push) Successful in 1m51s
2026-02-06 14:02:34 -06:00
70b8b8e037 fix: context
All checks were successful
lint-test-helm / lint-helm (push) Successful in 19s
render-manifests-push / render-manifests-push (push) Successful in 44s
renovate / renovate (push) Successful in 1m42s
2026-02-06 14:00:31 -06:00
d1d7fa5f62 chore(deps): update guillevc/yubal to v4 (major) (#3794)
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 1m23s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/guillevc/yubal](https://github.com/guillevc/yubal) | major | `0.4.0` → `4.0.0` |
| [guillevc/yubal](https://github.com/guillevc/yubal) | major | `v0.4.0` → `v4.0.0` |

---

### Release Notes

<details>
<summary>guillevc/yubal (ghcr.io/guillevc/yubal)</summary>

### [`v4.0.0`](https://github.com/guillevc/yubal/releases/tag/v4.0.0): 🕐 v0.4.0 — Playlist sync

[Compare Source](https://github.com/guillevc/yubal/compare/v0.4.0...v4.0.0)

This release introduces **scheduled playlist sync** — subscribe to playlists and let yubal keep them updated automatically on a cron schedule.

#####  What's New

- **Playlist subscriptions** — Register playlists to sync periodically with configurable track limits ([#&#8203;33](https://github.com/guillevc/yubal/issues/33))
- **Cron-based scheduler** — Set your preferred sync schedule (e.g., `0 3 * * *` for daily at 3 AM)
- **Unicode filename support** — File and folder names now preserve special characters (e.g., `Björk` instead of `Bjork`) ([#&#8203;44](https://github.com/guillevc/yubal/issues/44))

##### 🔧 Improvements

- **Format selection optimization** — yt-dlp now prefers the configured codec when selecting source streams, avoiding unnecessary transcoding when the source is already in the desired format ([#&#8203;48](https://github.com/guillevc/yubal/issues/48) by [@&#8203;ergosteur](https://github.com/ergosteur) 🚀 )
- **Update yt-dlp to latest version** — Fixes YouTube extraction failures caused by recent player JS changes ([yt-dlp/yt-dlp#15818](https://github.com/yt-dlp/yt-dlp/pull/15818))

##### 🐛 Bug Fixes

- **Cookie authentication** — Fixed failures with large or space-containing `cookies.txt` files, and improved validation with clearer error logging ([#&#8203;30](https://github.com/guillevc/yubal/issues/30), [#&#8203;47](https://github.com/guillevc/yubal/issues/47))

##### ⚠️ Heads Up

File and folder names now preserve unicode characters instead of transliterating them to ASCII. For example:

```
Before: data/Bjork/1997 - Homogenic/01 - Hunter.opus
After:  data/Björk/1997 - Homogenic/01 - Hunter.opus
```

If you have existing downloads for artists with non-ASCII names, re-downloading or syncing will create new folders alongside the old ones. Check your library and merge any duplicates after upgrading.

***

**Full Changelog**: <https://github.com/guillevc/yubal/compare/v0.3.1...v4.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 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:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3794
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-06 19:58:06 +00:00
fbe4d7c72d feat: add yubal
All checks were successful
lint-test-helm / lint-helm (push) Successful in 24s
render-manifests-push / render-manifests-push (push) Successful in 1m3s
lint-test-docker / lint-docker-compose (push) Successful in 1m34s
renovate / renovate (push) Successful in 2m3s
2026-02-06 13:54:37 -06:00
ff1c5e557e chore(deps): update blastbeng/spotisub docker tag to v0.3.7 (#3791)
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 1m54s
2026-02-06 17:08:26 +00:00
618aecb676 feat: add spotisub
Some checks failed
lint-test-helm / lint-helm (push) Successful in 21s
render-manifests-push / render-manifests-push (push) Successful in 1m26s
lint-test-docker / lint-docker-compose (push) Successful in 29s
renovate / renovate (push) Has been cancelled
2026-02-06 11:06:15 -06:00
3bd5707b62 fix: change timezone 2026-02-06 11:06:15 -06:00
1c1fd7877b chore(deps): update helm release external-secrets to v2 (#3788)
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 2m2s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets](https://github.com/external-secrets/external-secrets) | major | `1.3.2` → `2.0.0` |

---

### Release Notes

<details>
<summary>external-secrets/external-secrets (external-secrets)</summary>

### [`v2.0.0`](https://github.com/external-secrets/external-secrets/releases/tag/v2.0.0)

[Compare Source](https://github.com/external-secrets/external-secrets/compare/v1.3.2...v2.0.0)

### BREAKING CHANGE

Please note that this release removed two of the unsupported and unmaintained providers Alibaba and Device42.

Image: `ghcr.io/external-secrets/external-secrets:v2.0.0`
Image: `ghcr.io/external-secrets/external-secrets:v2.0.0-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v2.0.0-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### General

- chore: bump charts to 1.3.2 by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5923](https://github.com/external-secrets/external-secrets/pull/5923)
- feat(charts): add hostAliases support by [@&#8203;janlauber](https://github.com/janlauber) in [#&#8203;5866](https://github.com/external-secrets/external-secrets/pull/5866)
- chore: remove unmaintained secret stores by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5918](https://github.com/external-secrets/external-secrets/pull/5918)
- docs(infisical): document al provider auth methods by [@&#8203;varonix0](https://github.com/varonix0) in [#&#8203;5929](https://github.com/external-secrets/external-secrets/pull/5929)
- chore: Get validating webhook failurePolicy for Secretstore dynamically by [@&#8203;LochanRn](https://github.com/LochanRn) in [#&#8203;5605](https://github.com/external-secrets/external-secrets/pull/5605)

#### New Contributors

- [@&#8203;LochanRn](https://github.com/LochanRn) made their first contribution in [#&#8203;5605](https://github.com/external-secrets/external-secrets/pull/5605)

**Full Changelog**: <https://github.com/external-secrets/external-secrets/compare/v1.3.2...v2.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:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImNoYXJ0Il19-->

Reviewed-on: #3788
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-06 15:41:50 +00:00
f5a1490c44 chore(deps): update calibrain/shelfmark to v1.0.4 (#3785)
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 2m29s
2026-02-06 15:38:26 +00:00
9986bbb958 chore(deps): update dependency external-secrets/external-secrets to v2 (#3782)
Some checks failed
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 17s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets/external-secrets](https://github.com/external-secrets/external-secrets) | major | `v1.3.2` → `v2.0.0` |

---

### Release Notes

<details>
<summary>external-secrets/external-secrets (external-secrets/external-secrets)</summary>

### [`v2.0.0`](https://github.com/external-secrets/external-secrets/releases/tag/v2.0.0)

[Compare Source](https://github.com/external-secrets/external-secrets/compare/v1.3.2...v2.0.0)

### BREAKING CHANGE

Please note that this release removed two of the unsupported and unmaintained providers Alibaba and Device42.

Image: `ghcr.io/external-secrets/external-secrets:v2.0.0`
Image: `ghcr.io/external-secrets/external-secrets:v2.0.0-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v2.0.0-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### General

- chore: bump charts to 1.3.2 by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5923](https://github.com/external-secrets/external-secrets/pull/5923)
- feat(charts): add hostAliases support by [@&#8203;janlauber](https://github.com/janlauber) in [#&#8203;5866](https://github.com/external-secrets/external-secrets/pull/5866)
- chore: remove unmaintained secret stores by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5918](https://github.com/external-secrets/external-secrets/pull/5918)
- docs(infisical): document al provider auth methods by [@&#8203;varonix0](https://github.com/varonix0) in [#&#8203;5929](https://github.com/external-secrets/external-secrets/pull/5929)
- chore: Get validating webhook failurePolicy for Secretstore dynamically by [@&#8203;LochanRn](https://github.com/LochanRn) in [#&#8203;5605](https://github.com/external-secrets/external-secrets/pull/5605)

#### New Contributors

- [@&#8203;LochanRn](https://github.com/LochanRn) made their first contribution in [#&#8203;5605](https://github.com/external-secrets/external-secrets/pull/5605)

**Full Changelog**: <https://github.com/external-secrets/external-secrets/compare/v1.3.2...v2.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:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: #3782
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-06 15:36:16 +00:00
e3eee74690 chore(deps): update dependency prometheus-operator/prometheus-operator to v0.89.0 (#3775)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 29s
renovate / renovate (push) Successful in 1m55s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) | minor | `v0.88.1` → `v0.89.0` |

---

### Release Notes

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

### [`v0.89.0`](https://github.com/prometheus-operator/prometheus-operator/releases/tag/v0.89.0): 0.89.0 / 2026-02-05

[Compare Source](https://github.com/prometheus-operator/prometheus-operator/compare/v0.88.1...v0.89.0)

- \[ENHANCEMENT] Add `hostNetwork` field to the `Alertmanager` CRD. [#&#8203;8281](https://github.com/prometheus-operator/prometheus-operator/issues/8281)
- \[ENHANCEMENT] Add the `crds` and `full-crds` commands to the operator's binary. [#&#8203;8251](https://github.com/prometheus-operator/prometheus-operator/issues/8251)
- \[ENHANCEMENT] Report deprecated field usage in the `Reconciled` condition type. [#&#8203;8236](https://github.com/prometheus-operator/prometheus-operator/issues/8236)
- \[ENHANCEMENT] Avoid unnecessary reconciliation upon creation of the `ThanosRuler` StatefulSet. [#&#8203;8347](https://github.com/prometheus-operator/prometheus-operator/issues/8347)
- \[ENHANCEMENT] Add `bodySizeLimit` to the ScrapeConfig CRD. [#&#8203;8348](https://github.com/prometheus-operator/prometheus-operator/issues/8348)
- \[ENHANCEMENT] Support `http_headers` field in the Alertmanager Secret. [#&#8203;8357](https://github.com/prometheus-operator/prometheus-operator/issues/8357)
- \[ENHANCEMENT] Add the `-kubelet-http-metrics` flag to enable/disable the HTTP metrics port in the Kubelet endpoint (default=enabled). [#&#8203;8350](https://github.com/prometheus-operator/prometheus-operator/issues/8350)
- \[ENHANCEMENT] Include `operator.prometheus.io/version` annotation in the full version of CRDs. [#&#8203;8279](https://github.com/prometheus-operator/prometheus-operator/issues/8279)
- \[BUGFIX] Validate VictorOps global configuration in the `Alertmanager` CRD. [#&#8203;8020](https://github.com/prometheus-operator/prometheus-operator/issues/8020)
- \[BUGFIX] Validate Jira global configuration in the `Alertmanager` CRD. [#&#8203;8265](https://github.com/prometheus-operator/prometheus-operator/issues/8265)
- \[BUGFIX] Validate VictorOps receiver's URL in the `AlertmanagerConfig` CRD. [#&#8203;8258](https://github.com/prometheus-operator/prometheus-operator/issues/8258)
- \[BUGFIX] Validate Webex receiver's URL in the `AlertmanagerConfig` CRD. [#&#8203;8255](https://github.com/prometheus-operator/prometheus-operator/issues/8255)
- \[BUGFIX] Validate Jira receiver's URL configuration in the `AlertmanagerConfig` CRD. [#&#8203;8230](https://github.com/prometheus-operator/prometheus-operator/issues/8230)
- \[BUGFIX] Validate OpsGenie receiver configuration in the `AlertmanagerConfig` CRD. [#&#8203;8267](https://github.com/prometheus-operator/prometheus-operator/issues/8267)
- \[BUGFIX] Validate WeChat receiver configuration in the `AlertmanagerConfig` CRD. [#&#8203;8271](https://github.com/prometheus-operator/prometheus-operator/issues/8271)
- \[BUGFIX] Validate SNS receiver configuration in the `AlertmanagerConfig` CRD. [#&#8203;8217](https://github.com/prometheus-operator/prometheus-operator/issues/8217)
- \[BUGFIX] Validate Webex global configuration in the `Alertmanager` CRD. [#&#8203;7979](https://github.com/prometheus-operator/prometheus-operator/issues/7979)
- \[BUGFIX] Validate Telegram global configuration in the `Alertmanager` CRD. [#&#8203;8268](https://github.com/prometheus-operator/prometheus-operator/issues/8268)
- \[BUGFIX] Restore statefulset's labels if the creation fails with AlreadyExists. [#&#8203;8343](https://github.com/prometheus-operator/prometheus-operator/issues/8343)
- \[BUGFIX] Fix potential panic due to informer cache races. [#&#8203;8310](https://github.com/prometheus-operator/prometheus-operator/issues/8310)
- \[BUGFIX] Support probers defined with IPv6 addresses in the `Probe` CRD. [#&#8203;8354](https://github.com/prometheus-operator/prometheus-operator/issues/8354)
- \[BUGFIX] Prevent group and repeat intervals with zero duration from breaking Alertmanager. [#&#8203;8126](https://github.com/prometheus-operator/prometheus-operator/issues/8126)
- \[BUGFIX] Propagate all supported RocketChat attributes for `AlertmanagerConfig` CRD. [#&#8203;8016](https://github.com/prometheus-operator/prometheus-operator/issues/8016)
- \[BUGFIX] Add URL validation for WeChat receiver. [#&#8203;8256](https://github.com/prometheus-operator/prometheus-operator/issues/8256)
- \[BUGFIX] Add URL validation for SNS receiver. [#&#8203;8259](https://github.com/prometheus-operator/prometheus-operator/issues/8259)
- \[BUGFIX] Fix GCE service discovery for the `ScrapeConfig` CRD. [#&#8203;8284](https://github.com/prometheus-operator/prometheus-operator/issues/8284)
- \[BUGFIX] Avoid stale conditions in `Alertmanager`, `ThanosRuler`, `Prometheus` and `PrometheusAgent` resources. [#&#8203;8304](https://github.com/prometheus-operator/prometheus-operator/issues/8304)
- \[BUGFIX] Fix race condition when updating rule ConfigMaps. [#&#8203;8290](https://github.com/prometheus-operator/prometheus-operator/issues/8290)
- \[BUGFIX] Fix race condition when patching finalizers. [#&#8203;8323](https://github.com/prometheus-operator/prometheus-operator/issues/8323)
- \[BUGFIX] Reconcile `ScrapeConfig` resources when namespace selection changes. [#&#8203;8334](https://github.com/prometheus-operator/prometheus-operator/issues/8334)

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3775
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-06 15:26:35 +00:00
dd460f87f3 chore(deps): update prometheus-operator-crds docker tag to v27 (#3776)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 16s
renovate / renovate (push) Successful in 1m42s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prometheus-operator-crds](https://github.com/prometheus-community/helm-charts) | major | `26.0.0` → `27.0.0` |

---

### Release Notes

<details>
<summary>prometheus-community/helm-charts (prometheus-operator-crds)</summary>

### [`v27.0.0`](https://github.com/prometheus-community/helm-charts/releases/tag/prometheus-operator-crds-27.0.0)

[Compare Source](https://github.com/prometheus-community/helm-charts/compare/prometheus-operator-crds-26.0.0...prometheus-operator-crds-27.0.0)

A Helm chart that collects custom resource definitions (CRDs) from the Prometheus Operator, allowing for seamless integration with GitOps tools

#### What's Changed

- \[prometheus-operator-crds] Update dependency prometheus-operator/prometheus-operator to v0.89.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;6594](https://github.com/prometheus-community/helm-charts/pull/6594)

**Full Changelog**: <https://github.com/prometheus-community/helm-charts/compare/prometheus-operator-admission-webhook-0.36.0...prometheus-operator-crds-27.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:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: #3776
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-02-06 15:09:05 +00:00
f71ca5b8c7 chore(deps): update searxng/searxng:latest docker digest to 670bd10 (#3781)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 16s
renovate / renovate (push) Successful in 2m6s
2026-02-06 14:02:17 +00:00
11fa03c933 chore(deps): update searxng/searxng:latest docker digest to 52521b6 (#3779)
All checks were successful
render-manifests-push / render-manifests-push (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 29s
renovate / renovate (push) Successful in 2m22s
2026-02-06 12:02:01 +00:00
5d86ac411e chore(deps): update searxng/searxng:latest docker digest to a98ec93 (#3777)
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 2m1s
2026-02-06 11:02:17 +00:00
60b73c4c75 feat: enable backup
All checks were successful
lint-test-helm / lint-helm (push) Successful in 14s
render-manifests-push / render-manifests-push (push) Successful in 33s
renovate / renovate (push) Successful in 2m16s
2026-02-05 22:57:19 -06:00
8933422e12 feat: store ferret secret, scale
All checks were successful
lint-test-helm / lint-helm (push) Successful in 58s
render-manifests-push / render-manifests-push (push) Successful in 1m47s
renovate / renovate (push) Successful in 2m23s
2026-02-05 22:55:30 -06:00
3eda30bae0 fix: add grant
All checks were successful
lint-test-helm / lint-helm (push) Successful in 17s
render-manifests-push / render-manifests-push (push) Successful in 1m20s
renovate / renovate (push) Successful in 2m35s
2026-02-05 22:42:12 -06:00
eae4f059ba fix: fix path
All checks were successful
lint-test-helm / lint-helm (push) Successful in 15s
renovate / renovate (push) Successful in 1m35s
render-manifests-push / render-manifests-push (push) Successful in 1m44s
2026-02-05 22:38:07 -06:00
008845d653 fix: ensure ferret user
Some checks failed
lint-test-helm / lint-helm (push) Successful in 23s
render-manifests-push / render-manifests-push (push) Successful in 1m4s
renovate / renovate (push) Has been cancelled
2026-02-05 22:35:53 -06:00
0a9643ec37 fix: user super user
All checks were successful
lint-test-helm / lint-helm (push) Successful in 20s
render-manifests-push / render-manifests-push (push) Successful in 54s
renovate / renovate (push) Successful in 2m20s
2026-02-05 22:25:45 -06:00
175e6cc9d8 chore(deps): update dependency ollama/ollama to v0.15.5 (#3768)
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 1m31s
2026-02-06 04:22:15 +00:00
bd5ace752c feat: scale ferret
Some checks failed
render-manifests-push / render-manifests-push (push) Successful in 39s
lint-test-helm / lint-helm (push) Successful in 43s
renovate / renovate (push) Has been cancelled
2026-02-05 22:19:08 -06:00
c4faf51bea fix: add additional init 2026-02-05 22:18:53 -06:00
377f21fb35 fix: recovery
All checks were successful
lint-test-helm / lint-helm (push) Successful in 25s
render-manifests-push / render-manifests-push (push) Successful in 34s
renovate / renovate (push) Successful in 2m22s
2026-02-05 22:07:24 -06:00
ccea0dc542 fix: enable super
Some checks failed
lint-test-helm / lint-helm (push) Successful in 48s
render-manifests-push / render-manifests-push (push) Successful in 55s
renovate / renovate (push) Has been cancelled
2026-02-05 22:05:35 -06:00
32 changed files with 471 additions and 167 deletions

View File

@@ -157,13 +157,14 @@ blocky:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
spotisub IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl
vault IN CNAME traefik-cl01tl vault IN CNAME traefik-cl01tl
whodb IN CNAME traefik-cl01tl whodb IN CNAME traefik-cl01tl
yamtrack IN CNAME traefik-cl01tl yamtrack IN CNAME traefik-cl01tl
yubal-playlist IN CNAME traefik-cl01tl yubal IN CNAME traefik-cl01tl
blocking: blocking:
denylists: denylists:

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: external-secrets - name: external-secrets
repository: https://charts.external-secrets.io repository: https://charts.external-secrets.io
version: 1.3.2 version: 2.0.0
digest: sha256:7b7c6dee59f2ea630f0e7a1124aeeda52cdff23769136300384b28210e03945a digest: sha256:3833a9f099d80f50e8a7c9874138b9eba42c18fe5f5f5dc605031f7c44bd3971
generated: "2026-02-03T21:41:32.061135319Z" generated: "2026-02-06T15:40:39.917039721Z"

View File

@@ -12,8 +12,8 @@ sources:
- https://github.com/external-secrets/external-secrets/tree/main/deploy/charts/external-secrets - https://github.com/external-secrets/external-secrets/tree/main/deploy/charts/external-secrets
dependencies: dependencies:
- name: external-secrets - name: external-secrets
version: 1.3.2 version: 2.0.0
repository: https://charts.external-secrets.io repository: https://charts.external-secrets.io
icon: https://avatars.githubusercontent.com/u/68335991?s=48&v=4 icon: https://avatars.githubusercontent.com/u/68335991?s=48&v=4
# renovate: datasource=github-releases depName=external-secrets/external-secrets # renovate: datasource=github-releases depName=external-secrets/external-secrets
appVersion: v1.3.2 appVersion: v2.0.0

View File

@@ -88,7 +88,7 @@ freshrss:
- name: PUID - name: PUID
value: "568" value: "568"
- name: TZ - name: TZ
value: US/Central value: America/Chicago
- name: FRESHRSS_ENV - name: FRESHRSS_ENV
value: production value: production
- name: CRON_MIN - name: CRON_MIN

View File

@@ -310,8 +310,11 @@ gatus:
- name: lidarr - name: lidarr
url: https://lidarr.alexlebens.net url: https://lidarr.alexlebens.net
<<: *defaults <<: *defaults
- name: yubal-playlist - name: spotisub
url: https://yubal-playlist.alexlebens.net url: https://spotisub.alexlebens.net
<<: *defaults
- name: yubal
url: https://yubal.alexlebens.net
<<: *defaults <<: *defaults
- name: slskd - name: slskd
url: https://slskd.alexlebens.net url: https://slskd.alexlebens.net

View File

@@ -655,11 +655,17 @@ homepage:
url: http://lidarr.lidarr:80 url: http://lidarr.lidarr:80
key: {{ "{{HOMEPAGE_VAR_LIDARR_KEY}}" }} key: {{ "{{HOMEPAGE_VAR_LIDARR_KEY}}" }}
fields: ["wanted", "queued", "artists"] fields: ["wanted", "queued", "artists"]
- Yubal Playlist: - Yubal:
icon: sh-yubal.webp icon: sh-yubal.webp
description: Replicate Youtube playlist description: Replicate Youtube playlist
href: https://yubal-playlist.alexlebens.net href: https://yubal.alexlebens.net
siteMonitor: http://yubal-playlist.yubal-playlist:80 siteMonitor: http://yubal.yubal:80
statusStyle: dot
- Spotisub:
icon: sh-spotify.webp
description: Replicate Spotify playlist
href: https://spotisub.alexlebens.net
siteMonitor: http://spotisub.spotisub:80
statusStyle: dot statusStyle: dot
- slskd: - slskd:
icon: sh-slskd.webp icon: sh-slskd.webp

View File

@@ -47,3 +47,33 @@ spec:
key: /authentik/oidc/komodo key: /authentik/oidc/komodo
metadataPolicy: None metadataPolicy: None
property: secret property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: komodo-postgresql-17-fdb-cluster-ferret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: komodo-postgresql-17-fdb-cluster-ferret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: uri
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/komodo/ferret
metadataPolicy: None
property: uri
- secretKey: password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/komodo/ferret
metadataPolicy: None
property: password

View File

@@ -2,7 +2,7 @@ komodo:
controllers: controllers:
main: main:
type: deployment type: deployment
replicas: 0 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3 revisionHistoryLimit: 3
containers: containers:
@@ -53,14 +53,11 @@ komodo:
- name: PERIPHERY_SSL_ENABLED - name: PERIPHERY_SSL_ENABLED
value: false value: false
- name: DB_USERNAME - name: DB_USERNAME
valueFrom: value: ferret
secretKeyRef:
name: komodo-postgresql-17-fdb-cluster-app
key: user
- name: DB_PASSWORD - name: DB_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: komodo-postgresql-17-fdb-cluster-app name: komodo-postgresql-17-fdb-cluster-ferret
key: password key: password
- name: KOMODO_DATABASE_URI - name: KOMODO_DATABASE_URI
value: mongodb://$(DB_USERNAME):$(DB_PASSWORD)@komodo-ferretdb-2.komodo:27017/komodo value: mongodb://$(DB_USERNAME):$(DB_PASSWORD)@komodo-ferretdb-2.komodo:27017/komodo
@@ -88,7 +85,7 @@ komodo:
memory: 128Mi memory: 128Mi
ferretdb-2: ferretdb-2:
type: deployment type: deployment
replicas: 0 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3 revisionHistoryLimit: 3
containers: containers:
@@ -98,11 +95,15 @@ komodo:
tag: 2.7.0 tag: 2.7.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: FERRETDB_POSTGRESQL_URL - name: DB_USERNAME
value: ferret
- name: DB_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: komodo-postgresql-17-fdb-cluster-app name: komodo-postgresql-17-fdb-cluster-ferret
key: uri key: password
- name: FERRETDB_POSTGRESQL_URL
value: postgresql://$(DB_USERNAME):$(DB_PASSWORD)@komodo-postgresql-17-fdb-cluster-rw.komodo.svc.cluster.local:5432/ferretDB
resources: resources:
requests: requests:
cpu: 10m cpu: 10m
@@ -166,7 +167,7 @@ komodo:
readOnly: false readOnly: false
postgresql-17-fdb-cluster: postgresql-17-fdb-cluster:
nameOverride: komodo-postgresql-17-fdb nameOverride: komodo-postgresql-17-fdb
mode: standalone mode: recovery
cluster: cluster:
image: image:
repository: ghcr.io/ferretdb/postgres-documentdb repository: ghcr.io/ferretdb/postgres-documentdb
@@ -175,7 +176,7 @@ postgresql-17-fdb-cluster:
postgresGID: 999 postgresGID: 999
postgresql: postgresql:
parameters: parameters:
cron.database_name: 'app' cron.database_name: 'ferretDB'
documentdb.enableCompact: "true" documentdb.enableCompact: "true"
documentdb.enableLetAndCollationForQueryMatch: "true" documentdb.enableLetAndCollationForQueryMatch: "true"
documentdb.enableNowSystemVariable: "true" documentdb.enableNowSystemVariable: "true"
@@ -188,19 +189,19 @@ postgresql-17-fdb-cluster:
max_slot_wal_keep_size: 2000MB max_slot_wal_keep_size: 2000MB
hot_standby_feedback: "on" hot_standby_feedback: "on"
pg_hba: pg_hba:
- host app postgres localhost trust - host ferretDB postgres localhost trust
- host app app localhost trust - host ferretDB ferret localhost trust
shared_preload_libraries: shared_preload_libraries:
- pg_cron - pg_cron
- pg_documentdb_core - pg_documentdb_core
- pg_documentdb - pg_documentdb
initdb: initdb:
database: app database: ferretDB
owner: app owner: ferret
postInitApplicationSQL: postInitApplicationSQL:
- create extension if not exists pg_cron; - CREATE EXTENSION IF NOT EXISTS pg_cron;
- create extension if not exists documentdb cascade; - CREATE EXTENSION IF NOT EXISTS documentdb CASCADE;
- grant documentdb_admin_role to app; - GRANT documentdb_admin_role TO ferret;
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
@@ -227,7 +228,7 @@ postgresql-17-fdb-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 0 0 * * *"
backupName: garage-local backupName: garage-local

View File

@@ -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/prometheus.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/prometheus.png
# renovate: datasource=github-releases depName=prometheus-operator/prometheus-operator # renovate: datasource=github-releases depName=prometheus-operator/prometheus-operator
appVersion: v0.88.1 appVersion: v0.89.0

View File

@@ -24,6 +24,8 @@ navidrome:
value: false value: false
- name: ND_PROMETHEUS_ENABLED - name: ND_PROMETHEUS_ENABLED
value: true value: true
- name: ND_AUTOIMPORTPLAYLISTS
value: true
resources: resources:
limits: limits:
gpu.intel.com/i915: 1 gpu.intel.com/i915: 1

View File

@@ -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/ollama.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ollama.png
# renovate: datasource=github-releases depName=ollama/ollama # renovate: datasource=github-releases depName=ollama/ollama
appVersion: 0.15.4 appVersion: 0.15.5

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: prometheus-operator-crds - name: prometheus-operator-crds
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
version: 26.0.0 version: 27.0.0
digest: sha256:fb73bc68bbf8ab128ff7fc641413ce3f004677d351038517ed68f5b39eeafb08 digest: sha256:ab76a45fb53268d4afdad507277c244af11c50344e50a24799182bbd9757258d
generated: "2026-01-09T20:11:58.398634666Z" generated: "2026-02-06T14:05:22.069162277Z"

View File

@@ -15,8 +15,8 @@ maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: prometheus-operator-crds - name: prometheus-operator-crds
version: 26.0.0 version: 27.0.0
repository: oci://ghcr.io/prometheus-community/charts repository: oci://ghcr.io/prometheus-community/charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/prometheus.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/prometheus.png
# renovate: datasource=github-releases depName=prometheus-operator/prometheus-operator # renovate: datasource=github-releases depName=prometheus-operator/prometheus-operator
appVersion: v0.88.1 appVersion: v0.89.0

View File

@@ -9,7 +9,7 @@ searxng:
main: main:
image: image:
repository: searxng/searxng repository: searxng/searxng
tag: latest@sha256:8d77102a0d2c615e88c5184868dc2c32cd361413dbc104abc301f54079fd40a2 tag: latest@sha256:670bd1076097640fc25221bf92a8af7d344503ce17ba3305abedf28e3634e807
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: SEARXNG_BASE_URL - name: SEARXNG_BASE_URL
@@ -39,7 +39,7 @@ searxng:
main: main:
image: image:
repository: searxng/searxng repository: searxng/searxng
tag: latest@sha256:8d77102a0d2c615e88c5184868dc2c32cd361413dbc104abc301f54079fd40a2 tag: latest@sha256:670bd1076097640fc25221bf92a8af7d344503ce17ba3305abedf28e3634e807
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: SEARXNG_BASE_URL - name: SEARXNG_BASE_URL

View File

@@ -23,4 +23,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/webp/shelfmark.webp icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shelfmark.webp
# renovate: datasource=github-releases depName=calibrain/shelfmark # renovate: datasource=github-releases depName=calibrain/shelfmark
appVersion: v1.0.3 appVersion: v1.0.4

View File

@@ -9,7 +9,7 @@ shelfmark:
main: main:
image: image:
repository: ghcr.io/calibrain/shelfmark repository: ghcr.io/calibrain/shelfmark
tag: v1.0.3 tag: v1.0.4
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: FLASK_PORT - name: FLASK_PORT

View File

@@ -0,0 +1,6 @@
dependencies:
- name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
digest: sha256:3b63381e4968f95ce2d99fae620f3d1ae6af295b1bacc4ed0fbe9f1ccb0e9405
generated: "2026-02-06T11:04:57.311195-06:00"

View File

@@ -0,0 +1,21 @@
apiVersion: v2
name: spotisub
version: 1.0.0
description: Spotisub
keywords:
- spotisub
- music
- spotify
home: https://wiki.alexlebens.dev/s/
sources:
- https://github.com/blastbeng/spotisub
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
maintainers:
- name: alexlebens
dependencies:
- name: app-template
alias: spotisub
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
# renovate: datasource=github-releases depName=blastbeng/spotisub
appVersion: v0.3.6

View File

@@ -1,10 +1,10 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: yubal-playlist-config-secret name: spotisub-config-secret
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: yubal-playlist-config-secret app.kubernetes.io/name: spotisub-config-secret
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:
@@ -12,6 +12,41 @@ spec:
kind: ClusterSecretStore kind: ClusterSecretStore
name: vault name: vault
data: data:
- secretKey: spotify-client-id
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /spotify/andrew
metadataPolicy: None
property: client-id
- secretKey: spotify-client-secret
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /spotify/andrew
metadataPolicy: None
property: client-secret
- secretKey: spotify-redirect-uri
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /spotify/andrew
metadataPolicy: None
property: redirect-uri
- secretKey: subsonic-user
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/navidrome/andrew
metadataPolicy: None
property: user
- secretKey: subsonic-password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/navidrome/andrew
metadataPolicy: None
property: password
- secretKey: lidarr-key - secretKey: lidarr-key
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
@@ -19,52 +54,15 @@ spec:
key: /cl01tl/lidarr2/key key: /cl01tl/lidarr2/key
metadataPolicy: None metadataPolicy: None
property: key property: key
- secretKey: subsonic-user
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/navidrome/admin
metadataPolicy: None
property: user
- secretKey: subsonic-password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/navidrome/admin
metadataPolicy: None
property: password
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: yubal-playlist-cookie name: spotisub-wireguard-conf
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: yubal-playlist-cookie app.kubernetes.io/name: spotisub-wireguard-conf
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: cookies.txt
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /youtube/cookie
metadataPolicy: None
property: cookies
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: yubal-playlist-wireguard-conf
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: yubal-playlist-wireguard-conf
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:

View File

@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
name: yubal-playlist name: spotisub
labels: labels:
app.kubernetes.io/name: yubal-playlist app.kubernetes.io/name: spotisub
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 }}
pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/audit: privileged

View File

@@ -1,14 +1,14 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: yubal-playlist-nfs-storage name: spotisub-nfs-storage
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: yubal-playlist-nfs-storage app.kubernetes.io/name: spotisub-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: yubal-playlist-nfs-storage volumeName: spotisub-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: yubal-playlist-nfs-storage name: spotisub-nfs-storage
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: yubal-playlist-nfs-storage app.kubernetes.io/name: spotisub-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:

View File

@@ -1,65 +1,84 @@
yubal-playlist: spotisub:
controllers: controllers:
main: main:
type: deployment type: deployment
replicas: 1 replicas: 0
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3 revisionHistoryLimit: 3
initContainers:
init-copy-cookie:
image:
repository: busybox
tag: 1.37.0
pullPolicy: IfNotPresent
command:
- /bin/sh
- -ec
- |
if [ ! -f "/app/ytdlp/cookies.txt" ]; then
echo ">> Coping files ..."
ls /app/ytdlp
cp -fv /app/ytdlp/cookies-ro.txt /app/ytdlp/cookies.txt
echo ">> Files in ytdlp:"
ls /app/ytdlp
fi
containers: containers:
main: main:
image: image:
repository: harbor.alexlebens.net/images/yubal-playlist repository: blastbeng/spotisub
tag: 0.1.10 tag: v0.3.7
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
env: env:
- name: YUBAL_TZ - name: SPOTIPY_CLIENT_ID
value: America/Chicago
- name: YUBAL_HOST
value: 0.0.0.0
- name: YUBAL_PORT
value: 8080
- name: YUBAL_DEBUG
value: true
- name: YUBAL_MB_USER_AGENT
value: alexanderlebens@gmail.com
- name: YUBAL_LIDARR_ENDPOINT
value: http://lidarr.lidarr:80
- name: YUBAL_LIDARR_API_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-config-secret name: spotisub-config-secret
key: lidarr-key key: spotify-client-id
- name: YUBAL_SUBSONIC_ENDPOINT - name: SPOTIPY_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: spotisub-config-secret
key: spotify-client-secret
- name: SPOTIPY_REDIRECT_URI
valueFrom:
secretKeyRef:
name: spotisub-config-secret
key: spotify-redirect-uri
- name: SUBSONIC_API_HOST
value: http://navidrome-main.navidrome value: http://navidrome-main.navidrome
- name: YUBAL_SUBSONIC_PORT - name: SUBSONIC_API_PORT
value: 80 value: 80
- name: YUBAL_SUBSONIC_USER - name: SUBSONIC_API_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-config-secret name: spotisub-config-secret
key: subsonic-user key: subsonic-user
- name: YUBAL_SUBSONIC_PASSWORD - name: SUBSONIC_API_PASS
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-config-secret name: spotisub-config-secret
key: subsonic-password key: subsonic-password
- name: PLAYLIST_PREFIX
value: "Spotify - "
- name: NUM_USER_PLAYLISTS
value: 0
- name: ARTIST_GEN_SCHED
value: 0
- name: RECOMEND_GEN_SCHED
value: 0
- name: SPOTDL_ENABLED
value: 1
- name: SPOTDL_OUT_FORMAT
value: "/mnt/store/Music Youtube/Andrew Lebens/{artist}/{album} ({year})/{artists} - {album} - {track-number} - {title}.{output-ext}"
- name: LIDARR_ENABLED
value: 1
- name: LIDARR_IP
value: http://lidarr.lidarr
- name: LIDARR_PORT
value: 80
- name: LIDARR_TOKEN
valueFrom:
secretKeyRef:
name: spotisub-config-secret
key: lidarr-key
probes:
liveness:
enabled: true
custom: true
spec:
exec:
command:
- /bin/sh
- -c
- "curl -s http://127.0.0.1:5183/api/v1/utils/healthcheck | grep -q 'Ok!'"
failureThreshold: 5
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 15
resources: resources:
requests: requests:
cpu: 10m cpu: 10m
@@ -81,22 +100,22 @@ yubal-playlist:
- name: WIREGUARD_PRIVATE_KEY - name: WIREGUARD_PRIVATE_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-wireguard-conf name: spotisub-wireguard-conf
key: private-key key: private-key
- name: UPDATER_PROTONVPN_EMAIL - name: UPDATER_PROTONVPN_EMAIL
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-wireguard-conf name: spotisub-wireguard-conf
key: proton-email key: proton-email
- name: UPDATER_PROTONVPN_PASSWORD - name: UPDATER_PROTONVPN_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: yubal-playlist-wireguard-conf name: spotisub-wireguard-conf
key: proton-password key: proton-password
- name: FIREWALL_OUTBOUND_SUBNETS - name: FIREWALL_OUTBOUND_SUBNETS
value: 10.0.0.0/8 value: 10.0.0.0/8
- name: FIREWALL_INPUT_PORTS - name: FIREWALL_INPUT_PORTS
value: 8080 value: 5183
- name: DNS_UPSTREAM_RESOLVER_TYPE - name: DNS_UPSTREAM_RESOLVER_TYPE
value: dot value: dot
securityContext: securityContext:
@@ -132,7 +151,7 @@ yubal-playlist:
ports: ports:
http: http:
port: 80 port: 80
targetPort: 8080 targetPort: 5183
protocol: HTTP protocol: HTTP
route: route:
main: main:
@@ -143,12 +162,12 @@ yubal-playlist:
name: traefik-gateway name: traefik-gateway
namespace: traefik namespace: traefik
hostnames: hostnames:
- yubal-playlist.alexlebens.net - spotisub.alexlebens.net
rules: rules:
- backendRefs: - backendRefs:
- group: '' - group: ''
kind: Service kind: Service
name: yubal-playlist name: spotisub
port: 80 port: 80
weight: 100 weight: 100
matches: matches:
@@ -156,34 +175,20 @@ yubal-playlist:
type: PathPrefix type: PathPrefix
value: / value: /
persistence: persistence:
cookie: cache:
enabled: true
type: secret
name: yubal-playlist-cookie
advancedMounts:
main:
init-copy-cookie:
- path: /app/ytdlp/cookies-ro.txt
readOnly: true
mountPropagation: None
subPath: cookies.txt
config:
storageClass: ceph-block storageClass: ceph-block
accessMode: ReadWriteOnce accessMode: ReadWriteOnce
size: 1Gi size: 1Gi
retain: true retain: true
advancedMounts: advancedMounts:
main: main:
init-copy-cookie:
- path: /app/ytdlp
readOnly: false
main: main:
- path: /app/ytdlp - path: /home/user/spotisub/cache
readOnly: false readOnly: false
music: music:
existingClaim: yubal-playlist-nfs-storage existingClaim: spotisub-nfs-storage
advancedMounts: advancedMounts:
main: main:
main: main:
- path: /app/data - path: /mnt/store/Music Youtube/
readOnly: false readOnly: false

View File

@@ -1,22 +1,21 @@
apiVersion: v2 apiVersion: v2
name: yubal-playlist name: yubal
version: 1.0.0 version: 1.0.0
description: yubal-playlist description: yubal
keywords: keywords:
- yubal-playlist - yubal
- music - music
- youtube - youtube
home: https://wiki.alexlebens.dev/s/ home: https://wiki.alexlebens.dev/s/
sources: sources:
- https://gitea.alexlebens.dev/alexlebens/yubal-playlist
- https://github.com/guillevc/yubal - https://github.com/guillevc/yubal
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template - https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
maintainers: maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
- name: app-template - name: app-template
alias: yubal-playlist alias: yubal
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
# renovate: datasource=github-releases depName=alexlebens/yubal-playlist # renovate: datasource=github-releases depName=guillevc/yubal
appVersion: 0.0.7 appVersion: v4.0.0

View File

@@ -0,0 +1,35 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: yubal-wireguard-conf
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: yubal-wireguard-conf
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: private-key
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: private-key
- secretKey: proton-email
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: email
- secretKey: proton-password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: password

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: Namespace
metadata:
name: yubal
labels:
app.kubernetes.io/name: yubal
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/warn: privileged

View File

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

View File

@@ -0,0 +1,23 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: yubal-nfs-storage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: yubal-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/Music Youtube/
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac

View File

@@ -0,0 +1,144 @@
yubal:
controllers:
main:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
pod:
securityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
containers:
main:
image:
repository: ghcr.io/guillevc/yubal
tag: 4.0.0
pullPolicy: IfNotPresent
env:
- name: YUBAL_TZ
value: America/Chicago
- name: YUBAL_HOST
value: 0.0.0.0
- name: YUBAL_PORT
value: 8000
- name: YUBAL_LOG_LEVEL
value: INFO
resources:
requests:
cpu: 10m
memory: 128Mi
# gluetun:
# image:
# repository: ghcr.io/qdm12/gluetun
# tag: v3.41.0@sha256:6b54856716d0de56e5bb00a77029b0adea57284cf5a466f23aad5979257d3045
# pullPolicy: IfNotPresent
# lifecycle:
# postStart:
# exec:
# command: ["/bin/sh", "-c", "(ip rule del table 51820; ip -6 rule del table 51820) || true"]
# env:
# - name: VPN_SERVICE_PROVIDER
# value: protonvpn
# - name: PUID
# value: "1000"
# - name: PGID
# value: "1000"
# - name: VPN_TYPE
# value: wireguard
# - name: WIREGUARD_PRIVATE_KEY
# valueFrom:
# secretKeyRef:
# name: yubal-wireguard-conf
# key: private-key
# - name: UPDATER_PROTONVPN_EMAIL
# valueFrom:
# secretKeyRef:
# name: yubal-wireguard-conf
# key: proton-email
# - name: UPDATER_PROTONVPN_PASSWORD
# valueFrom:
# secretKeyRef:
# name: yubal-wireguard-conf
# key: proton-password
# - name: FIREWALL_OUTBOUND_SUBNETS
# value: 10.0.0.0/8
# - name: FIREWALL_INPUT_PORTS
# value: 8000
# - name: DNS_UPSTREAM_RESOLVER_TYPE
# value: dot
# securityContext:
# privileged: True
# capabilities:
# add:
# - NET_ADMIN
# - SYS_MODULE
# probes:
# liveness:
# enabled: true
# custom: true
# spec:
# exec:
# command:
# - /gluetun-entrypoint
# - healthcheck
# failureThreshold: 5
# initialDelaySeconds: 30
# periodSeconds: 30
# successThreshold: 1
# timeoutSeconds: 15
# resources:
# limits:
# devic.es/tun: "1"
# requests:
# devic.es/tun: "1"
# cpu: 10m
# memory: 128Mi
service:
main:
controller: main
ports:
http:
port: 80
targetPort: 8000
protocol: HTTP
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- yubal.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: yubal
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence:
config:
storageClass: ceph-block
accessMode: ReadWriteOnce
size: 1Gi
retain: true
advancedMounts:
main:
main:
- path: /app/config
readOnly: false
music:
existingClaim: yubal-nfs-storage
advancedMounts:
main:
main:
- path: /app/data
readOnly: false

View File

@@ -132,13 +132,14 @@ customDNS:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
spotisub IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl
vault IN CNAME traefik-cl01tl vault IN CNAME traefik-cl01tl
whodb IN CNAME traefik-cl01tl whodb IN CNAME traefik-cl01tl
yamtrack IN CNAME traefik-cl01tl yamtrack IN CNAME traefik-cl01tl
yubal-playlist IN CNAME traefik-cl01tl yubal IN CNAME traefik-cl01tl
blocking: blocking:
denylists: denylists:

View File

@@ -153,13 +153,14 @@ customDNS:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
spotisub IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl
vault IN CNAME traefik-cl01tl vault IN CNAME traefik-cl01tl
whodb IN CNAME traefik-cl01tl whodb IN CNAME traefik-cl01tl
yamtrack IN CNAME traefik-cl01tl yamtrack IN CNAME traefik-cl01tl
yubal-playlist IN CNAME traefik-cl01tl yubal IN CNAME traefik-cl01tl
blocking: blocking:
denylists: denylists: