Skip to main content

BookStack

BookStack es un software wiki gratuito y de código abierto destinado a una plataforma simple, autohospedada y fácil de usar. Basado en Laravel, un marco PHP, BookStack se publica bajo la licencia MIT. Utiliza las ideas de los libros para organizar páginas y almacenar información

bookstack-hero-screenshot.webp

Enlaces

Requisitos

    Repositorio

    Repositorio de Docker Hub: linuxserver/bookstack – Docker Image | Docker Hub

    Repositorio de Docker Hub: mariadb – Official Image | Docker Hub

    Portainer

    Add a new stack – Portainer Documentation

    Web editor

    En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables2.15-docker_add_stack_web_editor.gif

    Variables

    # System User (LinuxServer.io images)
    PUID=1000
    PGID=1000
    TZ=Europe/Madrid
    # MariaDB enviroment variables
    MYSQL_ROOT_PASSWORD=mysupersecretrootpassword
    MYSQL_DATABASE=bookstack
    MYSQL_USER=bookstack
    MYSQL_PASSWORD=mysecretpassword
    # Bookstack enviroment variables
    APP_KEY=base64:TuClaveAppKeyDe32Caracteres # docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
    APP_URL=http://bookstack.tudominio.com
    DB_HOST=bookstack_db
    DB_PORT=3306
    DB_DATABASE=bookstack
    DB_USERNAME=bookstack
    DB_PASSWORD=${MYSQL_PASSWORD}
    # SMTP enviroment variables 
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.office365.com
    MAIL_PORT=587
    MAIL_ENCRYPTION=tls
    MAIL_USERNAME=Usuario_Microsoft
    MAIL_PASSWORD=Password
    MAIL_FROM=noreply@dominio.com
    MAIL_FROM_NAME=BookStack
    # AzureAD (Microsoft)
    # Replace '{APP_ID}', '{APP_SECRET}' and '{TENANT}' values with Azure APP_ID and APP_SECRET and TENANT
    AZURE_TENANT={TENANT}
    AZURE_APP_ID={APP_ID}
    AZURE_APP_SECRET={APP_SECRET}

    docker-compose

    services:
      bookstack:
        image: lscr.io/linuxserver/bookstack
        container_name: bookstack
        restart: unless-stopped
        env_file: stack.env
        depends_on:
          - bookstack_db
        volumes:
          - app:/config
        networks:
          - backend
          - proxy
    
      bookstack_db:
        image: mariadb:12
        container_name: bookstack_db
        restart: unless-stopped
        env_file: stack.env
        volumes:
          - db:/config
        networks:
          - backend
    
    volumes:
      app:
      db:
    
    networks: 
      backend:
      traefik_public: 
        external: true

    Publicando detrás de un proxy

    Crear registro DNS

    En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"

    NGINX proxy

    image.png

    Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host

    Crear un nuevo "proxy host"

    Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

    image.png

    Publicando con Traefik

    traefik-concepts-1.webp

    Para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio bookstack

        labels:
          - traefik.enable=true
          - traefik.http.routers.bookstack.tls=true
          - traefik.http.routers.bookstack.tls.certresolver=letsencrypt
          - traefik.http.routers.bookstack.rule=Host(`bookstack.dominio.com`)
          - traefik.http.services.bookstack.loadbalancer.server.port=80

    En este punto ya puedes ir a APP_URL=http://bookstack.tudominio.com y validarte:

    Cambia la los datos de acceso cuanto antes