Ir al contenido principal

Bookstack + Traefik

Requerimientos previos

    Docker instalado Instancia de Traefik instalada y corriendo Red de Docker creada para integrar contenedor con Traefik

    Pasos

      Preparar dominio/subdominio de la instancia a configurar Crear archivos de configuración Cambiar valores de acuerdo a las necesidades de la instancia Levantar el contenedor Visitar la aplicación y comprobar que esté funcionando correctamente

      Configuración previa

      Crear secretos en Docker para acceso a base de datos

      Por documentar

      Crear secretos en Docker para acceso a SMTP

      Por documentar

      Archivos de configuración

      .env

      APP_KEY=base64:123456
      APP_URL=https://ejemplo.com
      DB_DATABASE=bd_ejemplo
      DB_HOST=localhost
      DB_PORT=7076
      INSTANCE_URL=ejemplo.com
      MAIL_DRIVER=sendmail
      MAIL_FROM_NAME=(Remitente de correo)
      MAIL_FROM=usuario@ejemplo.com
      MAIL_HOST=smtp.ejemplo.com
      MAIL_PORT=465
      MAIL_USERNAME=mailer@ejemplo.com
      MAIL_ENCRYPTION=ssl
      PGID=1000
      PUID=1000
      TZ=America/Guatemala
      VOLUME_PATH=/var/www/ejemplo.com
      

      compose.yaml

      services:
        bookstack_db:
          image: mariadb
          container_name: bookstack_db
          environment:
            - MYSQL_DATABASE=${DB_DATABASE}
            - MYSQL_USER=/run/secrets/db_user
            - MYSQL_PASSWORD=/run/secrets/db_password
            - MYSQL_ROOT_PASSWORD=/run/secrets/db_root_password
          volumes:
            - ${VOLUME_PATH}/bookstack-db:/var/lib/mysql
            - ${VOLUME_PATH}/entrypoint-initdb:/docker-entrypoint-initdb.d:ro
            - ./my.cnf:/etc/mysql/my.cnf
          networks:
            - traefik_network
          restart: unless-stopped
        bookstack_app:
          image: lscr.io/linuxserver/bookstack:latest
          container_name: bookstack_app
          depends_on: 
            - bookstack_db
          environment:
            - PUID=1001
            - PGID=1001
            - TZ=${TZ}
            - APP_URL=${APP_URL}
            - APP_KEY=${APP_KEY}
            - APP_DEBUG=false
            - APP_THEME=comunidad
            - DB_HOST=bookstack-db
            - DB_DATABASE=${DB_DATABASE}
            - DB_USERNAME=/run/secrets/db_user
            - DB_PASSWORD=/run/secrets/db_password
            - MAIL_DRIVER=${MAIL_DRIVER}
            - MAIL_FROM_NAME=${MAIL_FROM_NAME}
            - MAIL_FROM=${MAIL_FROM}
            - MAIL_HOST=${MAIL_HOST}
            - MAIL_PORT=${MAIL_PORT}
            - MAIL_USERNAME=${MAIL_USERNAME}
            - MAIL_PASSWORD=/run/secrets/mail_password
            - MAIL_ENCRYPTION=${MAIL_ENCRYPTION}
          labels:
            - "traefik.enable=true"
            - "traefik.http.routers.nombre_interno_instancia.rule=Host(`${INSTANCE_URL}`)"
            - "traefik.http.routers.nombre_interno_instancia.entrypoints=https"
            - "traefik.http.routers.nombre_interno_instancia.tls=true"
            - "traefik.http.routers.nombre_interno_instancia.tls.certresolver=tls"
            - "traefik.http.routers.nombre_interno_instancia.middlewares=secHeaders@file,autodetectContenttype@file"
            - "traefik.http.services.nombre_interno_instancia.loadbalancer.server.port=80"
            - "traefik.http.services.nombre_interno_instancia.loadbalancer.passHostHeader=true"
          volumes:
            - ${VOLUME_PATH}/bookstack-files:/config
          restart: unless-stopped
          ports:
            - 7075:80
          networks:
            - traefik_network  
      networks:
        traefik_network:
          external: true 
      

      my.conf (opcional)

      Configuración adicional para reducir el uso de RAM de parte de la base de datos MariaDB

      [client-server]
      socket = /run/mysqld/mysqld.sock
      
      !includedir /etc/mysql/mariadb.conf.d/
      !includedir /etc/mysql/conf.d/
      
      max_connections         = 10
      connect_timeout         = 5
      wait_timeout            = 600
      max_allowed_packet      = 16M
      thread_cache_size       = 4M
      sort_buffer_size        = 32K
      bulk_insert_buffer_size = 0
      tmp_table_size          = 1K
      max_heap_table_size     = 16K
      query_cache_limit       = 128K
      query_cache_size        = 512K
      innodb_buffer_pool_size = 10M
      innodb_log_buffer_size  = 512K