Ir al contenido principal

Readeck + Traefik

Requerimientos previos

  • Docker instalado
  • Instancia de Traefik instalada y corriendo
  • Red de Docker creada para conectar contenedor con Traefik
  • Opcionalmente, usa un middleware configurado en Traefik:
    • autodetectContenttype@file

    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 contenedor (docker composer up) Visitar aplicación y comprobar que esté funcionando correctamente

      Archivos de configuración

      .env

      INSTANCE_PORT=8000
      INSTANCE_DOMAIN=ejemplo.com
      VOLUME_PATH=/var/www/ejemplo.com
      MAIL_HOST=smtp.ejemplo.com
      MAIL_PORT=587
      MAIL_USERNAME=ejemplo
      MAIL_PASSWORD=xyz123
      MAIL_ENCRYPTION=TLS
      MAIL_FROM=ejemplo@ejemplo.com
      MAIL_FROMNOREPLY=ejemplo@ejemplo.com

      compose.yaml

      En la configuración de entrypoints y certresolver cambiar de acuerdo a los valores configurados en Traefik.

      services:
        readeck:
          image: codeberg.org/readeck/readeck:latest
          container_name: readeck
          restart: unless-stopped
          environment:
            - READECK_SERVER_HOST=0.0.0.0
            - READECK_SERVER_PORT=${INSTANCE_PORT}
            - READECK_SERVER_PREFIX=/
            - READECK_ALLOWED_HOSTS=${INSTANCE_DOMAIN}
            - READECK_PUBLIC_SHARE_TTL=2160
            - READECK_MAIL_HOST=${MAIL_HOST}
            - READECK_MAIL_PORT=${MAIL_PORT}
            - READECK_MAIL_USERNAME=${MAIL_USERNAME}
            - READECK_MAIL_PASSWORD=${MAIL_PASSWORD}
            - READECK_MAIL_ENCRYPTION=${MAIL_ENCRYPTION}
            - READECK_MAIL_FROM=${MAIL_FROM}
            - READECK_MAIL_FROMNOREPLY=${MAIL_FROMNOREPLY}
          volumes:
            - ${VOLUME_PATH}/data:/readeck
          networks:
            - traefik_network
          labels:
            - "traefik.enable=true"
            - "traefik.http.routers.readeck.rule=Host(`${INSTANCE_DOMAIN}`)"
            - "traefik.http.routers.readeck.entrypoints=https"
            - "traefik.http.routers.readeck.tls=true"
            - "traefik.http.routers.readeck.tls.certresolver=tls"
            - "traefik.http.routers.readeck.middlewares=autodetectContenttype@file"
            - "traefik.http.services.readeck.loadbalancer.server.port=${INSTANCE_PORT}"
            - "traefik.http.services.readeck.loadbalancer.passHostHeader=true"
          healthcheck:
            test: ["CMD", "/bin/readeck", "healthcheck", "-config", "config.toml"]
            interval: 60s
            timeout: 2s
            retries: 3
      networks:
        traefik_network:
          external: true