, ,

BookStack als Docker Container mit Upload Limit Erweiterung

BookStack nutze ich schon lange im Heimnetzwerk für die Dokumentation meines Servers, Anleitungen von Programmen oder auch Anleitungen meiner zentral Heizung.

Damals hatte ich BookStack nicht unter Docker am laufen, sondern in einer Linux VM. Die VM zickt ein bisschen herum. Nach einem Update läuft BookStack nicht mehr. Das war für mich der Anlass BookStack neu, in einem Docker Container umziehen zu lassen. Dabei entstanden allerdings weitere Probleme. Ein Problem war das Upload Limit.

In diesem Beitrag möchte ich dir meinen Weg beschreiben, wie ich BookStack installiert habe und welche Einstellungen ich vorgenommen habe.

Einfache Skript

Fangen wir einmal einfach an. Wenn dir ein Upload von 50MB reichen, dann funktioniert dieses Docker-Compose Skript.
Lege in deinem Wunschverzeichnis eine Datei docker-compose.yml an (z.B. mit `nano docker-compose.yml) und füge folgendes ein:

name: bookstack
services:
  app:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    restart: unless-stopped
    networks:
      - bookstack
    ports:
      - 8080:80
    volumes:
      - ./bookstack:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - APP_URL=http://192.168.2.35:8080
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=passwort
      - DB_DATABASE=bookstackapp
      - APP_KEY= #Befehl docker run appkey ausführen
     # - APP_DEBUG=true
    depends_on:
      - bookstack_db
    deploy:
      resources:
        limits:
          memory: 256m
  # ==========
  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    container_name: bookstack_mariadb
    restart: unless-stopped
    networks:
      - bookstack
    volumes:
      - ./bookstack:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - MYSQL_ROOT_PASSWORD=passwort_root
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=passwort
    deploy:
      resources:
        limits:
          memory: 512m
networks:
  bookstack:
    name: bookstack

Passwörter kannst du natürlich anpassen (in meinem Homelab lege ich nicht so einen Wert auf sichere Passwörter, nutz nur keine Umlaute oder ausgefallene Sonderzeichen).
Zudem musst du die Zieladresse anpassen – bei mir die http://192.168.2.35:8080. Ist der Port 8080 bereits belegt, kannst du diesen natürlich anpassen – einmal unter ports und einmal unter APP_URL.
Speichern und den Editor verlassen.

Nun brauchst du noch den APP_KEY. Diesen bekommst du mit:

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Diesen in der docker-compose.yml unter environment – APP_KEY eintragen. Speichern und den Editor verlassen.

Mit docker compose up -d das Skript ausführen.

Solltest du Probleme haben, kannst du die environment APP_DEBUG=true aktivieren (# entfernen und passend einrücken). BookStack zeigt dir den Fehler an. Eine weitere Möglichkeit sind die Logs. Entweder über das Terminal oder bequem alle Container Logs anzeigen lassen mit dem Container dozzle.

BookStack sollte nun erreichbar sein über http://IP:8080 in deinem Heimnetzwerk.

Upload Limit erhöhen

Und dabei half mit ChatGPT. Was ein Kampf.
BookStack lässt nur ein Upload von 50MB zu. In meiner VM hatte ich die php.ini angepasst. Wenn man weiß wo sie liegt, ist das einfach.
Aber auch dieser Weg über den Container ist nicht schwer, wenn man den Weg kennt.
Zuerst musst du die docker-compose.yml anpassen. Füge unter environment folgendes hinzu (Upload Limit hier 1Gb):

      - FILE_UPLOAD_MAX_SIZE=1000
      - PHP_UPLOAD_LIMIT=1000M
      - FILE_UPLOAD_SIZE_LIMIT=1000

Und unter volumes folgendes:

    volumes:
      - ./bookstack:/config
      - ./bookstack/php.ini:/config/php/php-local.ini 

Die php.ini müssen wir nun erstellen. Geh in den Ordner bookstack und erstelle mit nano php.ini die Datei (achte auf den Pfad, den du unter volumes eingegeben hast). Füge folgendes Skript ein:

upload_max_filesize = 1000M
post_max_size = 1100M
memory_limit = 1024M
max_execution_time = 300
max_input_time = 300

Nun einmal BookStack herunterfahren docker-compose down und neu starten docker-compose up -d --force-recreate.

Der Upload von bis zu 1Gb sollte nun funktionieren.

weitere Beiträge
auf Bitnike



Avatar von Sascha

Eine Antwort zu „BookStack als Docker Container mit Upload Limit Erweiterung“

  1. […] meinem letzten Beitrag habe ich darüber geschrieben, dass ich mit meiner BookStack-Instanz umgezogen bin – von […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert