Uptime Kuma: Monitoramento externo gratuito e eficiente (Tutorial de setup).

Este é um guia completo para configurar o Uptime Kuma, uma ferramenta de monitoramento self-hosted (hospedagem própria) que serve como uma excelente alternativa gratuita a serviços pagos como Uptime Robot ou StatusCake.

O foco deste tutorial é a instalação via Docker (padrão da indústria) e a exposição segura via Nginx Reverse Proxy, garantindo que você tenha um painel de monitoramento externo robusto.

Pré-requisitos

  • Um servidor VPS (pode ser pequeno, ex: 1 vCPU, 1GB RAM) rodando Linux (Ubuntu/Debian/AlmaLinux).
  • Docker e Docker Compose instalados.
  • Um domínio ou subdomínio apontado para o IP do servidor (ex: status.seudominio.com).

Passo 1: Instalação via Docker Compose

Embora seja possível rodar com um simples comando docker run, o uso do Docker Compose é recomendado para facilitar a manutenção e a persistência dos dados.

Crie o diretório para o projeto:

mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma

Crie o arquivo docker-compose.yml:

nano docker-compose.yml

Insira o seguinte conteúdo:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2.1.1
    container_name: uptime-kuma
    volumes:
      - ./uptime-kuma-data:/app/data
    ports:
      - 3001:3001  # Porta interna exposta (será usada pelo Proxy)
    restart: always

Suba o container:

docker compose up -d

Neste momento, o Uptime Kuma já está rodando na porta 3001.


Passo 2: Configuração do Reverse Proxy (Nginx)

Para acessar via https://status.seudominio.com e garantir segurança SSL, configuramos um proxy reverso. O Uptime Kuma utiliza WebSockets para atualizações em tempo real, então a configuração do Nginx exige cabeçalhos específicos.

Crie o arquivo de configuração do Nginx: nano /etc/nginx/conf.d/uptime-kuma.conf (Nota: Ajuste o caminho conforme sua distro, ex: sites-available no Ubuntu)

Adicione a configuração (substitua status.seudominio.com pelo seu domínio):

server {
    listen 80;
    server_name status.seudominio.com;

    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-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. Teste e reinicie o Nginx: nginx -t; systemctl restart nginx
  2. (Opcional mas recomendado) Instale o SSL com Certbot: certbot --nginx -d status.seudominio.com

Passo 3: Configuração Inicial e Monitoramento

Acesse seu subdomínio. Na primeira tela, crie seu usuário administrador.

Adicionando o primeiro Monitor:

  1. Clique em + Add New Monitor.
  2. Monitor Type: Escolha “HTTP(s)” para sites, “Ping” para servidores, ou “TCP Port” para serviços específicos (como bancos de dados).
  3. Friendly Name: Nome do serviço (ex: “Site Principal”).
  4. URL: A URL a ser monitorada.
  5. Heartbeat Interval: O padrão é 60 segundos. Para monitoramento crítico, você pode baixar para 20s.

Passo 4: Notificações (Telegram/Discord/Slack)

O diferencial do Uptime Kuma é o suporte nativo a dezenas de canais de notificação.

Exemplo com Telegram:

  1. No Telegram, fale com o @BotFather para criar um bot e obter o Token.
  2. Fale com o @userinfobot (ou obtenha seu ID de outra forma) para pegar seu Chat ID.
  3. No Uptime Kuma, vá em Settings > Notifications > Setup Notification.
  4. Selecione Telegram, insira o Token e o Chat ID.
  5. Clique em Test e depois Save.

Passo 5: Status Page Pública

Para criar uma página de status pública (similar ao status.github.com) para seus usuários:

  1. No menu superior direito, clique em Status Pages.
  2. Clique em New Status Page.
  3. Defina um nome e um “slug” (caminho da URL).
  4. Adicione os monitores que você deseja exibir publicamente.
  5. Você pode mapear um domínio específico para essa página de status nas configurações da própria página (“Domain Name”).

Dica de “Monitoramento Externo”

Para que o monitoramento seja realmente “externo”, o Uptime Kuma deve ser instalado em um servidor fora da infraestrutura que você está monitorando.

  • Cenário Ideal: Se seus serviços estão na AWS, instale o Uptime Kuma em uma VPS barata na Hetzner ou OVH. Assim, se a AWS cair inteira, o Uptime Kuma (que está fora) conseguirá te alertar.

FAQ

O Uptime Kuma é realmente gratuito?

Sim, o Uptime Kuma é 100% gratuito e open source. Diferente de serviços como Uptime Robot ou StatusCake, que cobram por intervalos de checagem menores (como 1 minuto) ou histórico estendido, o Uptime Kuma oferece todos esses recursos sem custo, desde que você tenha um servidor para hospedá-lo.

Quais tipos de monitoramento o Uptime Kuma suporta?

Ele suporta uma ampla variedade de monitores, incluindo: HTTP(s) para sites, Ping (ICMP) para servidores, Porta TCP, Keyword (procura uma palavra específica no HTML), DNS record, Steam Game Server e até monitoramento de contêineres Docker.

Como receber notificações do Uptime Kuma no WhatsApp ou Telegram?

O Uptime Kuma possui integração nativa com mais de 90 serviços de notificação. Para o Telegram, basta criar um bot via @BotFather e inserir o token. Para WhatsApp, é possível utilizar serviços de gateway ou webhooks, embora o Telegram seja a opção gratuita mais estável e recomendada.

O Uptime Kuma substitui o Zabbix ou Prometheus?

Não completamente. O Uptime Kuma é focado em monitoramento de disponibilidade (“está on ou off?”) e páginas de status públicas. O Zabbix e o Prometheus são ferramentas de métricas profundas (uso de disco, carga de CPU, análise de logs). O ideal é usar o Uptime Kuma para monitoramento externo e alertas rápidos, e o Zabbix para análise interna de infraestrutura.

Veja Mais:

Docker para SysAdmins: Serviços Isolados sem Complicação

Como instalar Portainer para gerenciamento Docker com Nginx Proxy Manager no Ubuntu

Principais comandos Linux que todo sysadmin deve conhecer (Guia Completo)

Docker Compose em Produção: Guia de Redes e Volumes

How to Install Portainer for Docker Management with Nginx Proxy Manager on Ubuntu