Check_MK
Sistema de monitorización IT profesional. Monitoriza servidores, aplicaciones, redes y servicios.
Características
- 🖥️ Monitorización completa: Servidores, aplicaciones, red, cloud
- 📊 Dashboards: Visualización en tiempo real
- 🔔 Alertas: Notificaciones por email, SMS, Slack, etc.
- 📈 Métricas: Históricos de rendimiento y disponibilidad
- 🔌 Agentes: Linux, Windows, Docker, SNMP
- 🌐 Multi-sitio: Gestión centralizada de múltiples sites
- 📱 Aplicación móvil: Monitorización desde el móvil
- 🔧 Extensible: Plugins y checks personalizados
Requisitos Previos
- Docker Engine instalado
- Portainer configurado (recomendado)
- Para Traefik o NPM: Red Docker
proxycreada - Dominio configurado: Para acceso HTTPS
- Contraseña generada: CMK_PASSWORD
⚠️ IMPORTANTE: CheckMK RAW es la versión gratuita. Para funcionalidades enterprise, considera CheckMK Enterprise.
Generar Contraseña
Antes de cualquier despliegue, genera una contraseña segura:
# CMK_PASSWORD (usuario cmkadmin)
openssl rand -base64 32
Guarda el resultado, lo necesitarás en el archivo .env.
Enlaces
- Infrastructure & Application Monitoring with Checkmk
- Installation as a Docker container (checkmk.com)
- Checkmk server in a Docker container
- groales/checkmk - checkmk - ICT
Despliegue con Portainer
Opción A: Git Repository (Recomendada)
- En Portainer, ve a Stacks → Add stack
- Nombra el stack:
checkmk - Selecciona Git Repository
- Configura:
- Repository URL:
https://git.ictiberia.com/groales/checkmk - Repository reference:
refs/heads/main - Compose path:
docker-compose.yml - GitOps updates: Activado (opcional)
- Repository URL:
- Solo para Traefik: En Additional paths, añade:
docker-compose.override.traefik.yml.example
- En Environment variables, añade:
CMK_PASSWORD=tu_password_generado
DOMAIN_HOST=checkmk.tudominio.com
- Click en Deploy the stack
Opción B: Web editor
- En Portainer, ve a Stacks → Add stack
- Nombra el stack:
checkmk - Selecciona Web editor
- Pega el contenido de
docker-compose.yml - En Environment variables, añade las mismas variables que la Opción A
- Click en Deploy the stack
Variables
# === VARIABLES REQUERIDAS ===
# Contraseña del usuario cmkadmin (generada con: openssl rand -base64 32)
CMK_PASSWORD=''
# Dominio completo (requerido para acceso web)
DOMAIN_HOST=checkmk.example.com
# === CONFIGURACIÓN OPCIONAL ===
# ID del site (nombre de la instancia)
CMK_SITE_ID=monitoring
docker-compose
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
volumes:
checkmk_data:
name: checkmk_data
networks:
proxy:
external: true
Despliegue con Docker CLI
Si prefieres trabajar desde la línea de comandos:
1. Clonar el repositorio
git clone https://git.ictiberia.com/groales/checkmk.git
cd checkmk
2. Generar contraseña
Contraseña para el usuario cmkadmin:
openssl rand -base64 32
3. Elegir modo de despliegue
Opción A: Traefik (recomendado para producción)
cp docker-compose.override.traefik.yml.example docker-compose.override.yml
cp .env.example .env
nano .env # Editar: pegar CMK_PASSWORD, configurar DOMAIN_HOST
Opción B: Nginx Proxy Manager
cp .env.example .env
nano .env # Editar: pegar CMK_PASSWORD, configurar DOMAIN_HOST
4. Iniciar el servicio
docker compose up -d
⏱️ La inicialización puede tardar 2-3 minutos (creación del site, configuración OMD).
5. Verificar el despliegue
# Ver logs en tiempo real
docker compose logs -f checkmk
# Verificar contenedores activos
docker compose ps
# Verificar estado del site CheckMK
docker compose exec checkmk omd status
# Listar sites disponibles
docker compose exec checkmk omd sites
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 "checkmk.domain.com"
NGINX proxy
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 (5000 en este caso):

Traefik

Para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio cmk
services:
checkmk:
labels:
# Habilitar Traefik
- traefik.enable=true
# Router HTTP (redirige a HTTPS)
- 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
# Router 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
# Redirect middleware
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true
En este punto ya puedes ir a https://checkmk.dominio.com
Solo IPs Privadas
Para permitir el acceso solo desde redes privadas, modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «privateIPs@file»
- traefik.http.routers.cmk.middlewares=privateIPs@file


