Uptime Kuma self-hosted na VPS
Uptime Kuma é o monitor de disponibilidade open-source mais popular — interface bonita, alertas em mais de 90 canais (Telegram, Slack, Email, WhatsApp) e status pages públicas profissionais. Self-hosteado na VPS, você monitora todos os seus serviços sem pagar por planos de monitoramento externo.
Instalar Uptime Kuma com Docker
Instalação simples e rápida com Docker:
# docker-compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
restart: always
ports:
- "127.0.0.1:3001:3001"
volumes:
- uptime_kuma_data:/app/data
environment:
- UPTIME_KUMA_PORT=3001
volumes:
uptime_kuma_data:
# Subir:
docker compose up -d
# Nginx como proxy reverso:
# /etc/nginx/conf.d/uptime-kuma.conf
server {
listen 443 ssl http2;
server_name status.seudominio.com.br;
ssl_certificate /etc/letsencrypt/live/status.seudominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.seudominio.com.br/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Configurar monitores e alertas
Adicionar monitores via interface web e configurar alertas no Telegram:
# Após acessar https://status.seudominio.com.br:
# 1. Criar conta admin
# 2. Add New Monitor
# Tipos de monitor disponíveis:
# - HTTP(s): verificar URL, código de status e conteúdo
# - TCP Port: verificar se porta está aberta
# - Ping: verificar conectividade ICMP
# - DNS: verificar resolução de nome
# - Docker container: verificar se container está rodando
# - Push: o serviço envia heartbeat ao Kuma (para jobs cron)
# Configurar alerta no Telegram:
# Settings → Notifications → Add Notification → Telegram
# - Bot Token: criar bot com @BotFather no Telegram
# - Chat ID: seu ID ou ID do grupo
# - Test: enviar mensagem de teste
# Configurar monitor de push para cron jobs:
# Add Monitor → Push
# Kuma gera URL: https://status.seudominio.com.br/api/push/CODIGO?status=up&msg=OK
# Adicionar ao final do cron job:
# 0 3 * * * /opt/scripts/backup.sh && curl -s "https://status.seudominio.com.br/api/push/CODIGO?status=up&msg=OK"Criar status page pública
Status page profissional para comunicar disponibilidade aos clientes:
# No Uptime Kuma — Status Page → New Status Page
# Configurações da status page:
# - Slug: status (resulta em https://status.seudominio.com.br/status/status)
# - Title: Status da Plataforma Runstack
# - Selecionar monitores para exibir
# Configurar domínio customizado para a status page:
# Settings → Status Pages → Edit → Custom Domain
# status.seudominio.com.br
# Nginx para domínio customizado da status page:
server {
listen 443 ssl http2;
server_name status-publico.seudominio.com.br;
location / {
proxy_pass http://127.0.0.1:3001/status/meu-slug;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# A status page mostra:
# - Status atual (operacional, degradado, interrupção)
# - Uptime dos últimos 90 dias (barra visual)
# - Histórico de incidentes
# - Latência médiaMonitorar containers Docker internos
Uptime Kuma pode monitorar o estado de containers na própria VPS:
# Para monitorar containers Docker, o Uptime Kuma precisa de acesso ao socket:
# docker-compose.yml — adicionar o socket:
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
restart: always
ports:
- "127.0.0.1:3001:3001"
volumes:
- uptime_kuma_data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:ro # somente leitura
# Na interface — Add Monitor → Docker Container
# Container Name: nome do container (ex: minha-api-app-1)
# Verifica se o container está em estado "running"
# Combinação poderosa: monitor HTTP + monitor Docker:
# - HTTP: verifica que a aplicação responde corretamente
# - Docker: verifica que o container está rodando
# - Push: verifica que o cron de backup executou
# Grupos de monitores para organizar:
# - Produção → API, Frontend, Banco
# - Infraestrutura → Nginx, Portainer, n8nBackup e recuperação do Uptime Kuma
Backup dos dados de monitoramento e histórico:
# Backup do volume (contém SQLite com todo o histórico):
DATE=$(date +%Y%m%d_%H%M)
docker run --rm \
-v uptime_kuma_data:/data \
-v /var/backups:/backup \
alpine tar czf "/backup/uptime_kuma_${DATE}.tar.gz" /data
# O volume contém:
# - kuma.db (SQLite com monitores, histórico, configurações)
# - ssl/ (certificados SSL do próprio Kuma, se configurado)
# Restaurar em novo servidor:
# 1. Parar o Kuma
# 2. Extrair backup no volume
docker run --rm \
-v uptime_kuma_data:/data \
-v /var/backups:/backup \
alpine tar xzf "/backup/uptime_kuma_${DATE}.tar.gz" -C /
# 3. Reiniciar o Kuma
docker compose up -d uptime-kuma$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.