[SOLVED] Bookstack with traefik as reverse proxy

Issue

This Content is from Stack Overflow. Question asked by Harald Töpfer

I’m trying to set up Bookstack with traefik as a reverse proxy. traefik is already set up and running fine with Nextcloud and other services.

I’m using the image provide by linuxserver and am modifying the docker-compose file as follows:

version: "2"
services:
  bookstack:
    image: lscr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=my-sub.domain.com
      - DB_HOST=bookstack_db
      - DB_USER=dbusernamesetbyme
      - DB_PASS=thedbpasswordichose
      - DB_DATABASE=bookstackapp
    volumes:
      - /path/to/data:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db
  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=modifiedpassword
      - TZ=Europe/Berlin
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=usernamesetbyme
      - MYSQL_PASSWORD=anotherpassword
    volumes:
      - /path/to/data:/config
    restart: unless-stopped
    labels:
      traefik.enable: "true" 
      traefik.http.routers.bookstack.entrypoints: "http" 
      traefik.http.routers.bookstack.rule: "Host(`my-sub.domain.de`)"
      traefik.http.middlewares.bookstack-https-redirect.redirectscheme.scheme: "https" 
      traefik.http.routers.bookstack.middlewares: "bookstack-https-redirect" 
      traefik.http.routers.bookstack-secure.entrypoints: "https" 
      traefik.http.routers.bookstack-secure.rule: "Host(`my-sub.domain.com`)"
      traefik.http.routers.bookstack-secure.tls: "true" 
      traefik.http.routers.bookstack-secure.tls.certresolver: "http" 
      traefik.http.routers.bookstack-secure.service: "bookstack" 
      traefik.http.services.bookstack.loadbalancer.server.port: "80" 
      traefik.docker.network: "nameofmyproxynetwork" 
   networks:
     - nameofmyproxynetwork

When I call my-sub.domain.com I get a Gateway Timeout. If I leave out the labels and the APP_URL, I can call bookstack via the host-ip and the port e. g. 101.101.101.101:6875 it works just fine.

Any ideas?

Best regards!



Solution

Try to move labels: from bookstack_db: to bookstack:. I set up Bookstack with Trefik locally and it worked.

You can use this docker-compose.yaml for reference:

version: "3.7"
services:
  bookstack:
    image: linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - APP_URL=my-sub.domain.com
      - TZ=Europe/Berlin
      - DB_HOST=bookstack_db:3306
      - DB_DATABASE=bookstackapp
      - DB_USERNAME=dbusernamesetbyme
      - DB_PASSWORD=thedbpasswordichose
    volumes:
      - ./bookstack/app:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db
    labels:
      traefik.enable: "true" 
      traefik.http.routers.bookstack.entrypoints: "http" 
      traefik.http.routers.bookstack.rule: "Host(`my-sub.domain.de`)"
      traefik.http.middlewares.bookstack-https-redirect.redirectscheme.scheme: "https" 
      traefik.http.routers.bookstack.middlewares: "bookstack-https-redirect" 
      traefik.http.routers.bookstack-secure.entrypoints: "https" 
      traefik.http.routers.bookstack-secure.rule: "Host(`my-sub.domain.com`)"
      traefik.http.routers.bookstack-secure.tls: "true" 
      traefik.http.routers.bookstack-secure.tls.certresolver: "http" 
      traefik.http.routers.bookstack-secure.service: "bookstack" 
      # traefik.http.services.bookstack.loadbalancer.server.port: "80" 
      # traefik.docker.network: "nameofmyproxynetwork" 
    networks:
     - nameofmyproxynetwork
  bookstack_db:
    image: mariadb:10.9
    container_name: bookstack_db
    environment:
      - TZ=Europe/Berlin
      - MYSQL_ROOT_PASSWORD=modifiedpassword
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=usernamesetbyme
      - MYSQL_PASSWORD=anotherpassword
    volumes:
      - ./bookstack/db:/var/lib/mysql 
    ports:
      - 3306:3306
    restart: unless-stopped
    networks:
     - nameofmyproxynetwork
networks:
  nameofmyproxynetwork:
    external: true

I attach also my original labels: config, just in case.

labels:
    - traefik.enable=true
    - traefik.http.routers.bookstack-http.entrypoints=web
    - traefik.http.routers.bookstack-http.rule=Host(`bookstack.docker.localdev`)
    - traefik.http.routers.bookstack-http.middlewares=bookstack-https
    - traefik.http.middlewares.bookstack-https.redirectscheme.scheme=https
    - traefik.http.routers.bookstack-https.entrypoints=websecure
    - traefik.http.routers.bookstack-https.rule=Host(`bookstack.docker.localdev`)
    - traefik.http.routers.bookstack-https.tls=true"


This Question was asked in StackOverflow by Harald Töpfer and Answered by protob It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?