Instalação · 9 min read · Oct 26, 2025

Como Instalar Statping no Ubuntu 22.04

Statping é um monitor de tempo de atividade de código aberto que acompanha sites e aplicativos hospedados em vários servidores. Ele pode gerar uma bela página de status ao buscar dados em tempo real de várias fontes. Ele pode trabalhar com vários sistemas de banco de dados, incluindo SQLite, MySQL e Postgres. Para o nosso tutorial, usaremos o fork do Statping, chamado Statping-ng, uma vez que o aplicativo original não está mais sendo desenvolvido.

Neste tutorial, você aprenderá como instalar o Statping em um servidor Ubuntu 22.04 usando Docker e Nginx como proxy.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04.
  • Um usuário não-root com privilégios sudo.
  • O Firewall Uncomplicated (UFW) está habilitado e em execução.
  • Um nome de domínio totalmente qualificado (FQDN) apontando para o servidor, como status.example.com.
  • Tudo está atualizado. $ sudo apt update && sudo apt upgrade

Passo 1 - Configurar o Firewall

Antes de instalar qualquer pacote, o primeiro passo é configurar o firewall para permitir conexões HTTP e HTTPS.

Verifique o status do firewall.

$ sudo ufw status

Você deve ver algo como o seguinte.

Status: ativo

Para                         Ação      De
--                         ------      ----
OpenSSH                    PERMITIR   Em qualquer lugar
OpenSSH (v6)               PERMITIR   Em qualquer lugar (v6)

Permita as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Verifique o status novamente para confirmar.

$ sudo ufw status
Status: ativo

Para                         Ação      De
--                         ------      ----
OpenSSH                    PERMITIR   Em qualquer lugar
80/tcp                     PERMITIR   Em qualquer lugar
443                        PERMITIR   Em qualquer lugar
OpenSSH (v6)               PERMITIR   Em qualquer lugar (v6)
80/tcp (v6)                PERMITIR   Em qualquer lugar (v6)
443 (v6)                   PERMITIR   Em qualquer lugar (v6)

Passo 2 - Instalar o Docker

Adicione a chave GPG oficial do Docker.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

Execute o seguinte comando para adicionar o repositório do Docker.

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Atualize o sistema para incluir o repositório do Docker.

$ sudo apt update

Instale o Docker e o plugin Docker Compose.

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Este tutorial usará o plugin Docker Compose v2 em vez do binário legado mais antigo. Portanto, o comando para executá-lo mudou de docker-compose para docker compose e isso está refletido aqui.

O Docker é executado com privilégios elevados, então você precisará usar sudo frequentemente para executar comandos. A melhor opção é adicionar sua conta de usuário Linux ao grupo de usuários docker.

$ sudo usermod -aG docker ${USER}

A variável ${USER} pega a conta do sistema atualmente logada. Se você não estiver logado com o usuário ao qual deseja conceder privilégios, substitua ${USER} pelo nome de usuário.

Para aplicar a nova associação ao grupo, saia do servidor e entre novamente, ou use o seguinte comando. Você será solicitado a inserir a senha do usuário.

$ su - ${USER}

Passo 3 - Instalar o Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.22.0

Passo 4 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d status.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/status.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Abra o arquivo /etc/letsencrypt/renewal/status.example.com.conf para edição.

$ sudo nano /etc/letsencrypt/renewal/status.example.com.conf

Cole o seguinte código na parte inferior.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Geramos o certificado SSL usando a opção standalone do Certbot. Ele executa seu servidor web para criar o certificado, o que significa que o Nginx deve ser desligado durante a renovação. Os comandos pre_hook e post_hook são executados antes e depois da renovação para desligar e reiniciar automaticamente o servidor Nginx, não exigindo intervenção manual.

Para verificar se a renovação do SSL está funcionando corretamente, faça um teste do processo.

$ sudo certbot renew --dry-run

Se você não vir erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 5 - Configurar o Arquivo Docker Compose

Crie um diretório para o arquivo Docker Compose.

$ mkdir ~/statping

Mude para o diretório.

$ cd ~/statping

Crie e abra o arquivo docker-compose para edição.

$ nano docker-compose.yml

Cole o seguinte código nele.

services:
  statping:
    container_name: statping
    image: adamboutcher/statping-ng
    restart: always
    ports:
      - 8080:8080
    volumes:
      - ./statping_data:/app
    links:
      - postgres
    depends_on:
      - postgres
    environment:
      DB_CONN: postgres
      DB_HOST: postgres
      DB_PORT: 5432
      DB_DATABASE: statping
      DB_USER: root
      DB_PASS: password123
      NAME: 'Página Statping do Howtoforge'
      DESCRIPTION: 'Página de Demonstração do Statping'
      USE_ASSETS: 'true'
      SAMPLE_DATA: 'false'
      ALLOW_REPORTS: 'false'
      ADMIN_USER: navjot
      ADMIN_PASSWORD: yourpassword

  postgres:
    container_name: postgres
    image: postgres:14-alpine
    ports:
      - 5432:5432
    volumes:
      - ./pg_data:/var/lib/postgresql/data/pg_data
    environment:
      POSTGRES_PASSWORD: password123
      POSTGRES_DB: statping
      POSTGRES_USER: root
      POSTGRES_PORT: 5432
      PGDATA: /var/lib/postgresql/data/pg_data

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Estamos configurando as imagens Docker do Statping e do Postgres. A maior parte do arquivo Docker é fácil de seguir. Estamos usando backups de disco local para armazenar os dados do aplicativo e o banco de dados Postgres. Também configuramos várias variáveis de ambiente para configurar o aplicativo e o banco de dados. Vamos dar uma olhada nelas. Para obter uma lista completa das variáveis de ambiente que você pode definir, consulte a lista oficial do repositório do Statping no GitHub.

  • A variável USE_ASSETS permite que o aplicativo use os ativos da pasta assets.
  • A variável SAMPLE_DATA está definida como falsa para desativar os monitores padrão que o Statping configura durante a instalação.
  • A variável ALLOW_REPORTS está definida como falsa para desativar os relatórios de erro anônimos que o Statping envia.
  • As variáveis ADMIN_USER e ADMIN_PASSWORD são usadas para definir as informações de login para o usuário padrão.
  • As variáveis DB_ são usadas para definir as credenciais do banco de dados, que devem corresponder às variáveis definidas para o contêiner Postgres.

Passo 6 - Configurar Nginx

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie e abra o arquivo /etc/nginx/conf.d/statusping.conf para edição.

$ sudo nano /etc/nginx/conf.d/statusping.conf

Cole o seguinte código nele. Substitua status.example.com pelo seu nome de domínio.

upstream backend {
   server 127.0.0.1:8080;
   keepalive 32;
}

server {
  listen 80 default_server;
  server_name status.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name status.example.com;

   http2_push_preload on; # Habilitar HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/status.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Habilitar versões TLS (TLSv1.3 é necessário para o próximo HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Habilitar 0-RTT do TLSv1.3. Use $ssl_early_data ao fazer proxy reverso para
   # evitar ataques de repetição.
   #
   # @veja: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;
   # OCSP Stapling --- buscar registros OCSP da URL no ssl_certificate e armazená-los em cache
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   add_header X-Early-Data $tls1_3_early_data;

   access_log /var/log/nginx/statusping.access.log main;
   error_log  /var/log/nginx/statusping.error.log;

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_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;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_set_header X-Client-Verify  SUCCESS;
       proxy_set_header X-Client-DN      $ssl_client_s_dn;
       proxy_set_header X-SSL-Subject    $ssl_client_s_dn;
       proxy_set_header X-SSL-Issuer     $ssl_client_i_dn;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 1800s;
       proxy_connect_timeout 1800s;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }
}

# Este bloco é útil para depurar TLS v1.3. Sinta-se à vontade para remover isso
# e usar a variável `$ssl_early_data` exposta pelo NGINX diretamente, se desejar.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique sua configuração do Nginx.

$ sudo nginx -t

Reinicie o servidor Nginx.

$ sudo systemctl restart nginx

Passo 7 - Executar Statping

Mude para o diretório Statping.

$ cd ~/statping

Crie e inicie o contêiner Docker.

$ docker compose up -d

Verifique o status do contêiner.

$ docker compose ps

Você verá a seguinte saída.

NAME                COMMAND                  SERVICE             STATUS              PORTS
postgres            "docker-entrypoint.s…"   postgres            running             0.0.0.0:5432->5432/tcp
statping            "/bin/sh -c 'statpin…"   statping            running (healthy)   0.0.0.0:8080->8080/tcp

Você também pode usar o comando docker ps para obter um status mais detalhado. Para verificar os logs do contêiner, use o comando docker logs .

Passo 8 - Configurar Statping

Agora que seu contêiner está em execução, abra a URL https://status.example.com em seu navegador e você verá uma página de status em branco. Se você omitir a variável SAMPLE_DATA no arquivo docker compose, verá uma página completa com diferentes serviços pré-definidos.

Página de Status do Statping

Clique no link Dashboard na parte inferior para acessar a tela de login.

Tela de Login do Statping

Preencha admin como nome de usuário e senha padrão. Certifique-se de digitar o nome de usuário também, mesmo que pareça estar preenchido automaticamente. Clique no botão Sign in para acessar o painel do Statping.

Painel do Statping

Para adicionar um novo serviço, clique no botão Create e preencha os valores necessários.

Criar Serviço do Statping

Clique no botão Create service na parte inferior para finalizar. Para configurar e-mail e outras notificações, visite a página de configurações. Você também pode dar um novo nome à sua página de estatísticas.

Página de Status do Statping com Serviço Ao Vivo

Passo 9 - Atualizar Statping

Atualizar o Statping é um passo simples. Mude para o diretório do Docker compose do Statping.

$ cd ~/statping

Em seguida, pare e remova o contêiner existente. Seus dados serão mantidos.

$ docker compose down --remove-orphans

Baixe a versão mais recente da imagem Docker do Statping.

$ docker compose pull

Inicie os contêineres novamente.

$ docker compose up -d

Sua instalação do Statping está atualizada e iniciada novamente.

Conclusão

Isso conclui o tutorial onde você aprendeu como instalar o Statping em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.