Umami na VPS: como medir as visitas do seu site
Aprenda a instalar o Umami no seu servidor com Docker e PostgreSQL, trocar a senha padrão, colar o código de rastreio no site, ligar o HTTPS e manter a atualização.
Por Redação Eleven Host · @robson.direitodigital · 1 de novembro de 2026 · 8 min de leitura

Capa da Redação Eleven Host para o guia: Umami na VPS: como medir as visitas do seu site Arte: Eleven Host
O Umami na VPS é um analytics de código aberto que você instala com Docker e PostgreSQL para ver as visitas do seu site. As estatísticas ficam no seu servidor, e você acompanha tudo por um painel web.
O que é o Umami e para quem serve
O Umami coleta e mostra dados de acesso do seu site: páginas vistas, de onde vieram os visitantes, navegadores, sistemas operacionais, tipos de aparelho e localização aproximada. É o que a documentação do projeto lista como dados coletados.
Ao hospedar o Umami você mesmo, o painel e o banco rodam no seu servidor. Isso dá controle sobre os dados, mas traz uma troca: atualização, backup e segurança passam a ser com você. Se ainda está conhecendo servidores, leia antes o guia de iniciantes sobre servidor VPS.
Com o Umami na sua VPS, o painel de estatísticas e o banco PostgreSQL ficam no seu servidor, e você decide quando atualizar e como guardar os dados.
Segundo a documentação, em instalação própria os dados são mantidos por tempo indeterminado, a menos que você os apague manualmente. Isso significa que o espaço do banco cresce com o tempo, e vale acompanhar.
Privacidade e cookies: o que a documentação diz
A documentação do Umami afirma que o rastreador web do projeto não usa cookies. Ela também diz que o Umami foi pensado com a privacidade em mente.
Mas a própria documentação faz duas ressalvas. A primeira: a necessidade de um aviso de cookies no seu site depende dos outros serviços que você usa e das exigências aplicáveis. A segunda: a conformidade com o GDPR depende de como você configura e usa a ferramenta. A documentação fala do GDPR, e não da LGPD.
Por isso, instalar o Umami não resolve sozinho a parte jurídica do seu site. Se tiver dúvida sobre aviso de cookies ou sobre a política de privacidade, consulte um profissional.
Outro ponto: a documentação informa que o Umami coleta telemetria anônima para ajudar a melhorar o aplicativo. Para desligar, defina a variável DISABLE_TELEMETRY com o valor 1.
Antes de começar
Separe estas coisas antes do primeiro comando:
- Uma VPS com Docker e Docker Compose instalados. O Umami usa o PostgreSQL como banco; a documentação cita a versão 12.14 como mínima. O compose abaixo já sobe o banco para você.
- Um domínio ou subdomínio para o painel, por exemplo
stats.exemplo.com, apontado para o IP da VPS. - Acesso para editar o site que será medido, porque você vai colocar nele um trecho de código.
A documentação do Umami cita só o PostgreSQL como banco, então siga com o PostgreSQL do compose.
O arquivo compose oficial
O repositório do Umami no GitHub traz este docker-compose.yml. Salve o arquivo numa pasta do servidor:
services:
umami:
image: ghcr.io/umami-software/umami:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
APP_SECRET: replace-me-with-a-random-string
# Required for two-factor authentication, generate with: openssl rand -hex 32
TWO_FACTOR_ENCRYPTION_KEY: replace-me-with-a-64-character-hex-string
depends_on:
db:
condition: service_healthy
init: true
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data:
Antes de subir, troque os valores de exemplo:
APP_SECRETé uma sequência aleatória usada para proteger os tokens de autenticação. A documentação diz que cada instalação deve ter um valor único.TWO_FACTOR_ENCRYPTION_KEYé necessária para a autenticação em dois fatores. O comentário do próprio arquivo manda gerar o valor comopenssl rand -hex 32.POSTGRES_PASSWORDestá comoumamino exemplo. Troque por uma senha forte e ajuste a mesma senha naDATABASE_URL, que tem o formatopostgresql://usuario:senha@db:5432/umami.
Sobre a porta, o exemplo usa "3000:3000", que publica o painel em todas as interfaces do servidor. Nossa sugestão é trocar por "127.0.0.1:3000:3000" e deixar um proxy com HTTPS na frente. Veja a seção sobre HTTPS mais abaixo.
Depois dos ajustes, na pasta do arquivo, suba os contêineres:
docker compose up -d
Segundo a documentação, o aplicativo fica em http://localhost:3000, ou seja, na porta 3000 do próprio servidor. A documentação também cita uma imagem alternativa, docker.umami.is/umami-software/umami:latest; o compose acima usa a do repositório.
Primeiro login: troque a senha padrão
A documentação informa que o acesso inicial usa o usuário admin e a senha umami. E manda trocar a senha padrão logo depois do primeiro login.
Faça isso primeiro, porque esses dados são públicos na documentação. Entre no painel e defina uma senha forte para o seu usuário. Enquanto não trocar, quem alcançar o painel e conhecer o padrão consegue entrar.
O que trocar logo no início
- A senha do usuário
admin. - O
APP_SECRET, que deve ser único na sua instalação. - A
TWO_FACTOR_ENCRYPTION_KEY, gerada comopenssl rand -hex 32. - A
POSTGRES_PASSWORD, junto com aDATABASE_URL.
Adicionar o site e o script de rastreio
Com o painel aberto, cadastre o seu site no painel. Depois, siga o caminho que a documentação descreve:
- Abra a edição do site no painel (o botão Edit).
- Procure a seção Tracking code. É lá que fica o código de rastreio do seu site.
- Copie o código e cole na seção
<head>das páginas do seu site.
Copie o trecho direto do painel, sem digitar à mão. Se o seu site usa Next.js, a documentação indica o componente next/script.
Por padrão, o arquivo do rastreador se chama script.js. Com a variável TRACKER_SCRIPT_NAME, você define outro nome para ele. Depois de publicar a página com o código, abra o site, navegue um pouco e confira se as visitas aparecem no painel.
Está escolhendo uma VPS? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver os planos de VPS
HTTPS com um proxy reverso
Para abrir o painel em https://stats.exemplo.com (com o seu domínio no lugar), coloque um proxy reverso na frente do Umami. Ele recebe o acesso pela internet, cuida do certificado e encaminha para a porta 3000 do servidor. É por isso que sugerimos publicar a porta só em 127.0.0.1.
O guia Caddy na VPS: servidor web com HTTPS automático mostra um servidor web que emite e renova o certificado por você. Antes, o domínio precisa apontar para o IP da VPS.
Se você já usa o Docker no servidor e quer ver os contêineres por uma interface, o guia Portainer na VPS: como gerenciar o Docker pelo navegador pode ajudar.
Atualizar o Umami
A página de atualização da documentação traz estes dois comandos para quem usa Docker Compose:
docker compose pull
docker compose up --force-recreate -d
A documentação pede para estar na pasta do projeto do Umami antes de rodar os comandos, que é a pasta onde está o seu arquivo compose.
Em atualizações grandes, como a mudança para a v3 citada como exemplo, a documentação avisa que as migrações do banco podem deixar o PostgreSQL com estatísticas desatualizadas no planejador de consultas. Por isso ela recomenda rodar o comando ANALYZE; no banco depois da atualização, e diz que ele é seguro de rodar com o banco em uso e termina rápido.
Como as versões grandes migram o banco, sugerimos fazer uma cópia do banco antes de atualizar. A documentação do projeto não traz um procedimento de backup; uma opção é o pg_dump do contêiner db. Guarde a cópia fora da VPS.
Checklist do Umami
- Troquei
APP_SECRET,TWO_FACTOR_ENCRYPTION_KEYePOSTGRES_PASSWORD(e aDATABASE_URLjunto). - Troquei a senha
admin/umamino primeiro login. - Publiquei a porta como
127.0.0.1:3000:3000e coloquei um proxy com HTTPS na frente. - Colei o código de rastreio, copiado do painel, no
<head>do site. - Vi as primeiras visitas aparecerem no painel.
- Revisei se o meu site precisa de aviso de cookies, sem presumir que o Umami dispensa.
- Faço uma cópia do banco antes de atualizar.
Vale medir as visitas no seu servidor
Ter o próprio analytics dá controle sobre onde ficam os dados e sobre quando atualizar. Em troca, você assume o servidor, o banco e o cuidado com a senha e o HTTPS do painel. Medir visitas e saber se o site caiu são necessidades diferentes; para a segunda, o guia Uptime Kuma na VPS: como monitorar se o site caiu pode ajudar.
Quer conhecer a VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
O Umami usa cookies?
Segundo a documentação, o rastreador web do Umami não usa cookies. Mesmo assim, a necessidade de aviso de cookies no seu site depende dos outros serviços que você usa e das exigências aplicáveis.
O Umami é compatível com a LGPD?
A documentação não fala da LGPD. Ela diz que a conformidade com o GDPR depende de como você configura e usa a ferramenta. Em caso de dúvida, consulte um profissional.
Qual banco de dados o Umami usa?
PostgreSQL, com versão mínima 12.14, segundo a documentação. O compose oficial já sobe um PostgreSQL junto com o aplicativo.
Qual é o login inicial do Umami?
Usuário admin e senha umami. A documentação manda trocar a senha logo depois do primeiro login.
Como atualizar o Umami?
Na pasta do compose, rode docker compose pull e depois docker compose up --force-recreate -d. Em atualizações grandes, rode também ANALYZE; no banco, como a documentação recomenda.