All templates

BookStack

A wiki organised as shelves, books, chapters and pages. Ships with its own MariaDB.

Added by LeafdTK, 28 Sept 2026 v1.0.0 MIT docs #wiki#docs#knowledge base

Resources

BookStack

LeafdTK2 deployments1 domainv1.0.0

3
  • mysql

    mariadb:11

    Running

  • app

    lscr.io/linuxserver/bookstack:latest

    Running

  • ingress

    wiki.example.com

    Live

Parameters

YAML

bookstack.yaml v1.0.0
apiVersion: leaf/v1
kind: Template
metadata:
  name: bookstack
  displayName: 'BookStack'
  description: 'A wiki organised as shelves, books, chapters and pages. Ships with its own MariaDB.'
  icon: https://github.com/BookStackApp.png?size=256
  version: '1.0.0'
  category: docs
  tags: ['wiki', 'docs', 'knowledge base']
  keywords: ['confluence', 'documentation', 'manual', 'handbook']
  homepage: https://www.bookstackapp.com
  license: MIT

parameters:
  - name: appName
    displayName: 'App Name'
    type: string
    default: 'bookstack'
    required: true
    validation:
      pattern: '^[a-z][a-z0-9-]{1,58}[a-z0-9]$'
      message: 'Must be lowercase alphanumeric with hyphens, 3-60 chars'
  - name: domain
    displayName: 'Domain'
    type: string
    required: true
    placeholder: 'wiki.example.com'
  - name: appKey
    displayName: 'App key'
    description: 'Exactly 32 characters. Generated if left empty.'
    type: secret
    validation:
      min: 32
  - name: timezone
    displayName: 'Timezone'
    type: string
    default: 'UTC'
  - name: storage
    displayName: 'Storage'
    description: 'Volume for uploads and config'
    type: string
    default: '5Gi'
  - name: dbPassword
    displayName: 'Database password'
    description: 'Generated if left empty'
    type: secret
    validation:
      min: 24
  - name: dbRootPassword
    displayName: 'Database root password'
    description: 'Generated if left empty'
    type: secret
    validation:
      min: 24
  - name: enableTls
    displayName: 'Enable HTTPS'
    type: boolean
    default: true

resources:
  - name: mysql
    type: deployment
    config:
      name: '{{ params.appName }}-mysql'
      image: mariadb:11
      replicas: 1
      ports:
        - name: mysql
          containerPort: 3306
          servicePort: 3306
          protocol: TCP
      volumes:
        - name: mysql
          type: pvc
          mountPath: /var/lib/mysql
          storageSize: '5Gi'
      env:
        - key: MARIADB_DATABASE
          value: 'app'
        - key: MARIADB_USER
          value: 'app'
        - key: MARIADB_PASSWORD
          value: '{{ params.dbPassword }}'
          secret: true
        - key: MARIADB_ROOT_PASSWORD
          value: '{{ params.dbRootPassword }}'
          secret: true

  - name: app
    type: deployment
    config:
      name: '{{ params.appName }}'
      image: lscr.io/linuxserver/bookstack:latest
      replicas: 1
      ports:
        - name: http
          containerPort: 80
          servicePort: 80
          protocol: TCP
      volumes:
        - name: config
          type: pvc
          mountPath: /config
          storageSize: '{{ params.storage }}'
      env:
        - key: APP_URL
          value: 'https://{{ params.domain }}'
        - key: APP_KEY
          value: '{{ params.appKey }}'
          secret: true
        - key: DB_HOST
          value: '{{ resources.mysql.serviceName }}'
        - key: DB_PORT
          value: '3306'
        - key: DB_USERNAME
          value: app
        - key: DB_PASSWORD
          value: '{{ params.dbPassword }}'
          secret: true
        - key: DB_DATABASE
          value: app
        - key: PUID
          value: '1000'
        - key: PGID
          value: '1000'
        - key: TZ
          value: '{{ params.timezone }}'

  - name: ingress
    type: ingress
    config:
      host: '{{ params.domain }}'
      tlsEnabled: '{{ params.enableTls }}'
      routes:
        - path: /
          serviceName: '{{ resources.app.serviceName }}'
          servicePort: 80

your own cloud, in one click.

Free and open source. Runs on any Linux box.

Install Orchard