From 78ac8d0cbbdd4b925ef85bc35ddb47e6c6f0c18e Mon Sep 17 00:00:00 2001 From: Paul Payne Date: Fri, 19 Jun 2026 21:29:35 +0000 Subject: [PATCH] Adds bookstack app. --- bookstack/app.yaml | 5 ++ bookstack/versions/26/README.md | 39 +++++++++ bookstack/versions/26/db-init-job.yaml | 64 ++++++++++++++ bookstack/versions/26/deployment.yaml | 106 +++++++++++++++++++++++ bookstack/versions/26/ingress.yaml | 26 ++++++ bookstack/versions/26/kustomization.yaml | 16 ++++ bookstack/versions/26/manifest.yaml | 26 ++++++ bookstack/versions/26/namespace.yaml | 4 + bookstack/versions/26/pvc.yaml | 11 +++ bookstack/versions/26/service.yaml | 13 +++ 10 files changed, 310 insertions(+) create mode 100644 bookstack/app.yaml create mode 100644 bookstack/versions/26/README.md create mode 100644 bookstack/versions/26/db-init-job.yaml create mode 100644 bookstack/versions/26/deployment.yaml create mode 100644 bookstack/versions/26/ingress.yaml create mode 100644 bookstack/versions/26/kustomization.yaml create mode 100644 bookstack/versions/26/manifest.yaml create mode 100644 bookstack/versions/26/namespace.yaml create mode 100644 bookstack/versions/26/pvc.yaml create mode 100644 bookstack/versions/26/service.yaml diff --git a/bookstack/app.yaml b/bookstack/app.yaml new file mode 100644 index 0000000..22532dc --- /dev/null +++ b/bookstack/app.yaml @@ -0,0 +1,5 @@ +name: bookstack +is: bookstack +description: BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. +icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/bookstack.svg +latest: "26" diff --git a/bookstack/versions/26/README.md b/bookstack/versions/26/README.md new file mode 100644 index 0000000..54c486b --- /dev/null +++ b/bookstack/versions/26/README.md @@ -0,0 +1,39 @@ +# BookStack + +BookStack is a simple, self-hosted platform for organising and storing information in a hierarchical structure of Books, Chapters, and Pages. + +## Dependencies + +- **MySQL** - Database for storing content and users +- **SMTP** - For email notifications and password resets + +## Configuration + +Key settings in `config.yaml`: + +- **domain** - Where BookStack will be accessible +- **storage** - Persistent volume size (default: `2Gi`) +- **db.name** - Database name (default: `bookstack`) +- **smtp** - Email settings inherited from your Wild Cloud SMTP service + +## First-Time Setup + +1. Add and deploy the app: + ```bash + wild app add bookstack + wild app deploy bookstack + ``` + +2. Log in with the default admin credentials: + - **Email**: `admin@admin.com` + - **Password**: `password` + +3. **Immediately change the admin email and password** via **Settings → Your Profile**. + +4. Start creating Books, Chapters, and Pages from the dashboard. + +## Notes + +- BookStack uses the linuxserver.io image which runs as root internally — this is expected and required for the image to function +- SMTP settings are configured via the `smtp` section in your config +- The `appKey` secret is auto-generated and used for encrypting data — do not change it after content has been created diff --git a/bookstack/versions/26/db-init-job.yaml b/bookstack/versions/26/db-init-job.yaml new file mode 100644 index 0000000..12080b0 --- /dev/null +++ b/bookstack/versions/26/db-init-job.yaml @@ -0,0 +1,64 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: bookstack-db-init + labels: + component: db-init +spec: + template: + metadata: + labels: + component: db-init + spec: + restartPolicy: OnFailure + securityContext: + runAsNonRoot: true + runAsUser: 999 + runAsGroup: 999 + seccompProfile: + type: RuntimeDefault + containers: + - name: mysql-init + image: mysql:9.1.0 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: bookstack-secrets + key: mysql.rootPassword + - name: DB_HOSTNAME + value: {{ .db.host }} + - name: DB_PORT + value: "{{ .db.port }}" + - name: DB_DATABASE_NAME + value: {{ .db.name }} + - name: DB_USERNAME + value: {{ .db.user }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: bookstack-secrets + key: dbPassword + command: + - /bin/bash + - -c + - | + set -e + until mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} -e "SELECT 1" 2>/dev/null; do + echo "Waiting for MySQL..." + sleep 2 + done + mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} <