13 Commits

Author SHA1 Message Date
c99d9ec109 chore(deps): update helm release loki to v6.54.0
All checks were successful
lint-test-helm / lint-helm (pull_request) Successful in 20s
2026-03-11 20:27:31 +00: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
16 changed files with 99 additions and 50 deletions

View File

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

View File

@@ -30,4 +30,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/booklore.png
# renovate: datasource=github-releases depName=booklore-app/BookLore
appVersion: v2.1.0
appVersion: v2.2.0

View File

@@ -9,7 +9,7 @@ booklore:
main:
image:
repository: ghcr.io/booklore-app/booklore
tag: v2.1.0
tag: v2.2.0
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -94,6 +94,43 @@ spec:
metadataPolicy: None
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
kind: ExternalSecret

View File

@@ -90,22 +90,22 @@ directus:
- name: STORAGE_S3_KEY
valueFrom:
secretKeyRef:
name: ceph-bucket-directus
key: AWS_ACCESS_KEY_ID
name: directus-bucket-garage
key: ACCESS_KEY_ID
- name: STORAGE_S3_SECRET
valueFrom:
secretKeyRef:
name: ceph-bucket-directus
key: AWS_SECRET_ACCESS_KEY
- name: STORAGE_S3_BUCKET
valueFrom:
configMapKeyRef:
name: ceph-bucket-directus
key: BUCKET_NAME
name: directus-bucket-garage
key: ACCESS_SECRET_KEY
- 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
value: http://rook-ceph-rgw-ceph-objectstore.rook-ceph.svc:80
value: http://garage-main.garage:3000
- name: STORAGE_S3_FORCE_PATH_STYLE
value: true
- name: AUTH_PROVIDERS

View File

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

View File

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

View File

@@ -197,7 +197,7 @@ postgres-18-cluster:
recovery:
method: objectStore
objectStore:
index: 1
index: 2
backup:
objectStore:
- name: garage-local

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
env:
- name: API_BASE_URL
value: http://garage-1.garage:3903
value: http://garage-main.garage:3903
- name: S3_ENDPOINT_URL
value: http://garage-1.garage:3900
value: http://garage-main.garage:3900
- name: API_ADMIN_KEY
valueFrom:
secretKeyRef:
@@ -225,26 +225,6 @@ garage:
api_bind_addr = "[::]:3903"
metrics_require_token = true
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:
forceRename: garage-1
controller: server-1

View File

@@ -101,7 +101,7 @@ postgres-18-cluster:
recovery:
method: objectStore
objectStore:
index: 1
index: 2
backup:
objectStore:
- name: garage-local

View File

@@ -205,7 +205,7 @@ postgresql-17-fdb-cluster:
recovery:
method: objectStore
objectStore:
index: 1
index: 2
backup:
objectStore:
- name: garage-local

View File

@@ -1,9 +1,9 @@
dependencies:
- name: loki
repository: https://grafana.github.io/helm-charts
version: 6.53.0
version: 6.54.0
- name: alloy
repository: https://grafana.github.io/helm-charts
version: 1.6.2
digest: sha256:88b8ace6bcbcbff4b04727499705fbe94de7fe4b8f0b8aa254a1e7d1d2c65fac
generated: "2026-03-10T18:56:19.38475079Z"
digest: sha256:37c483c2ea1decd9ffae190f45c75952e92d447407351f228abb65c337be47fc
generated: "2026-03-11T20:27:20.644404202Z"

View File

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

View File

@@ -20,7 +20,7 @@ prowlarr:
main:
image:
repository: ghcr.io/linuxserver/prowlarr
tag: 2.3.0@sha256:a8fe7b9c502f979146b6d0f22438b825c38e068241bb8a708c473062dffdbb03
tag: 2.3.0@sha256:9ef5d8bf832edcacb6082f9262cb36087854e78eb7b1c3e1d4375056055b2d82
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -11,7 +11,7 @@ site-profile:
main:
image:
repository: harbor.alexlebens.net/images/site-profile
tag: 2.25.0
tag: 3.1.0
pullPolicy: IfNotPresent
resources:
requests: