1
Traefik
groales edited this page 2025-12-05 09:43:15 +01:00

Despliegue con Traefik

Guía para desplegar CheckMK con Traefik como proxy inverso.

Requisitos

  • Stack de Traefik desplegado y funcionando
  • Red Docker proxy creada
  • DNS apuntando al servidor
  • Contraseña generada

Despliegue desde Portainer

1. Configurar Variables

En Portainer, al crear el stack con Git Repository, configura:

Environment variables:

# Contraseña requerida
CMK_PASSWORD=tu_password_generado

# Site ID (opcional, default: monitoring)
CMK_SITE_ID=monitoring

# Dominio (requerido)
DOMAIN_HOST=checkmk.tudominio.com

2. Subir Archivo Override

En Portainer, en la sección Additional paths:

  • Añade: docker-compose.override.traefik.yml.example

3. Desplegar

Click en Deploy the stack y espera 2-3 minutos.

4. Verificar

  • Accede a https://checkmk.tudominio.com/monitoring/
  • Verifica certificado SSL (candado verde)
  • Login con cmkadmin / tu_password

Compose Completo con Traefik

services:
  checkmk:
    container_name: checkmk
    image: checkmk/check-mk-raw:latest
    restart: unless-stopped
    environment:
      CMK_SITE_ID: ${CMK_SITE_ID:-monitoring}
      CMK_PASSWORD: ${CMK_PASSWORD}
    volumes:
      - checkmk_data:/omd/sites
    networks:
      - proxy
    tmpfs:
      - /opt/omd/sites/${CMK_SITE_ID:-monitoring}/tmp:uid=1000,gid=1000
    labels:
      - traefik.enable=true
      - traefik.http.routers.checkmk-http.rule=Host(`${DOMAIN_HOST}`)
      - traefik.http.routers.checkmk-http.entrypoints=web
      - traefik.http.routers.checkmk-http.middlewares=redirect-to-https
      - traefik.http.routers.checkmk.rule=Host(`${DOMAIN_HOST}`)
      - traefik.http.routers.checkmk.entrypoints=websecure
      - traefik.http.routers.checkmk.tls=true
      - traefik.http.routers.checkmk.tls.certresolver=letsencrypt
      - traefik.http.routers.checkmk.service=checkmk-svc
      - traefik.http.services.checkmk-svc.loadbalancer.server.port=5000
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true

volumes:
  checkmk_data:
    name: checkmk_data

networks:
  proxy:
    external: true

Labels de Traefik

Label Valor Descripción
traefik.enable true Habilita Traefik
Host(\${DOMAIN_HOST}`)` Dominio Dominio que responde
loadbalancer.server.port 5000 Puerto interno CheckMK
tls.certresolver letsencrypt SSL automático

Troubleshooting

Error 404 al acceder

Problema: Accedes a https://checkmk.tudominio.com y da 404

Solución: Añade /monitoring/ al final:

https://checkmk.tudominio.com/monitoring/

CheckMK no responde

Verificar:

# CheckMK corriendo
docker ps | grep checkmk

# Site iniciado
docker exec checkmk omd status

# Logs
docker logs checkmk --tail 100

Certificado SSL no funciona

Verificar:

  • DNS apunta correctamente al servidor
  • Traefik tiene configurado letsencrypt certresolver
  • Puertos 80/443 abiertos en firewall

Configuración Avanzada

Headers de Seguridad

Añade middleware en Traefik para headers de seguridad:

labels:
  - traefik.http.routers.checkmk.middlewares=secure-headers@file

En traefik/config/middlewares.yml:

http:
  middlewares:
    secure-headers:
      headers:
        stsSeconds: 31536000
        stsIncludeSubdomains: true
        stsPreload: true
        forceSTSHeader: true

Próximos Pasos

  1. Configuración Inicial - Configurar CheckMK
  2. Monitorización - Añadir hosts
  3. Backup - Automatiza backups