Hospedar Umami em um VPS gerenciado: suas estatísticas web em seu servidor

Hospedar o Umami em um VPS gerenciado é guardar as estatísticas de seus sites em uma máquina própria, que nossas equipes mantêm atualizada e supervisionam dia e noite. O Umami é um software livre sob a licença MIT que mede a audiência sem cookies. Este guia segue a documentação oficial dele: a instalação com Docker Compose e PostgreSQL, o HTTPS, o primeiro login, o script de rastreamento, o que o projeto diz sobre os dados pessoais, as configurações úteis, os backups e as atualizações.

Simon Vasconcelos Lee Por Publicado em 15 de novembro de 2026Leitura: 12 minutos

Todos os guias

O essencial

  1. A licença MIT permite usar, modificar e redistribuir o Umami livremente, em uma empresa ou fora dela, desde que você mantenha o aviso de copyright dele.
  2. Instale-o com Docker Compose: o arquivo do projeto inicia o Umami e o banco PostgreSQL dele, o único banco suportado desde a versão 3.
  3. Gere APP_SECRET e TWO_FACTOR_ENCRYPTION_KEY ao acaso, sirva o Umami em HTTPS em um subdomínio próprio e mude logo a senha da conta admin.
  4. Acrescente seu site e cole o script de rastreamento dele no <head> de suas páginas: o rastreador não usa cookies.
  5. Exporte o banco todos os dias com pg_dump, guarde o arquivo .env em lugar seguro e atualize com docker compose pull.

O que o Umami faz

O Umami é uma plataforma de código aberto de estatísticas web e de produto. A documentação dele descreve uma ferramenta que reúne o tráfego, as campanhas, o comportamento dos visitantes, as conversões, a retenção e a receita, da primeira visita aos resultados que contam para sua atividade. Ele é escrito em TypeScript sobre Next.js, e a imagem Docker dele roda em uma conta sem privilégios.

Uma instância acompanha vários sites: cada um recebe o próprio identificador e o próprio script de rastreamento, e seus colegas se organizam por contas e equipes.

O que a licença MIT permite

O Umami é publicado sob a licença MIT, em nome da Umami Software, Inc. Ela concede gratuitamente o direito de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e vender cópias do software. Você pode, portanto, rodá-lo para sua empresa e para os sites de seus clientes, sem licença a comprar.

A única condição dela: o aviso de copyright e o aviso de permissão acompanham todas as cópias ou partes substanciais do software. Como toda licença MIT, ela fornece o software “no estado em que se encontra”, sem garantia.

Cookies e dados pessoais: o que o projeto diz

A documentação apresenta o Umami como uma medição de audiência sem cookies, sem rastreamento entre sites e sem coleta automática de dados pessoais. Auto-hospedado, ele mantém suas estatísticas em seu próprio servidor: você decide onde elas ficam e por quanto tempo.

QuestãoO que o projeto dizFonte
Os cookiesO rastreador web não usa cookies; a necessidade de um aviso de cookies em seu site depende dos outros serviços que você usa e das exigências que se aplicamFAQ
Os dados coletadosPáginas vistas, URLs de origem, navegadores, sistemas operacionais, tipos de dispositivo e localização aproximadaFAQ
O endereço IPA tabela das sessões não tem coluna para o endereço IP; um identificador de sessão é um hash do site, do endereço, do navegador e de um sal que muda todo mês por padrãoEsquema e código, versão 3.4.1
A retençãoEm auto-hospedagem, os dados são guardados até que você os excluaFAQ
O GDPRO Umami é concebido com a privacidade em mente, e a conformidade depende de como você o configura e o utilizaFAQ
Os dados que você enviaUm identificador de visitante ou propriedades de evento que você escolhe enviar ficam sob sua responsabilidadeIntrodução

Três configurações do script de rastreamento vão mais longe, se você quiser: data-exclude-search retira os parâmetros de busca das URLs registradas, data-exclude-hash retira o fragmento, e data-do-not-track desativa o rastreamento nos navegadores que expõem a preferência Do Not Track. A documentação observa que essa última configuração não é, por si só, uma solução completa de gestão do consentimento.

Se você identificar os visitantes conectados com data-distinct-id ou umami.identify(), a documentação recomenda um identificador de usuário interno ou um hash em vez de um endereço de e-mail: o valor pode ser lido no HTML da página.

A instalação com Docker Compose e PostgreSQL

O repositório fornece um docker-compose.yml que inicia o Umami e o banco PostgreSQL dele. Desde a versão 3, o PostgreSQL é o único banco suportado, na versão 12.14 no mínimo, e a documentação recomenda configurá-lo no fuso horário UTC. Em um servidor com o Docker instalado, crie uma pasta e comece pelos segredos, gerados ao acaso com openssl, como sugere a documentação:

Terminal
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 24)
APP_SECRET=$(openssl rand -hex 32)
TWO_FACTOR_ENCRYPTION_KEY=$(openssl rand -hex 32)
EOF
chmod 600 .env

Coloque então este compose.yaml ao lado. Ele retoma o arquivo do projeto na versão 3.4.1, com duas mudanças: os segredos vêm do arquivo .env, e a porta é publicada apenas em 127.0.0.1.

compose.yaml
services:
  umami:
    image: ghcr.io/umami-software/umami:latest
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
      APP_SECRET: ${APP_SECRET}
      TWO_FACTOR_ENCRYPTION_KEY: ${TWO_FACTOR_ENCRYPTION_KEY}
    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: ${POSTGRES_PASSWORD}
    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:
Terminal
docker compose up -d
curl -s http://127.0.0.1:3000/api/heartbeat

A documentação de instalação não informa números de memória nem de processador. O tamanho depende do tráfego dos sites acompanhados e do volume de dados que você guarda. Em um VPS gerenciado, descreva-nos o uso e recomendamos o tamanho adequado.

HTTPS: o proxy reverso

O Umami escuta em HTTP na porta 3000, e a documentação sugere servi-lo atrás de seu servidor web, por um proxy reverso. Dê a ele um subdomínio próprio, como stats.example.com, apontado para o servidor com registros A e AAAA. Servir o Umami em um caminho passa por BASE_PATH, uma variável lida na compilação da aplicação: com a imagem publicada, o subdomínio é o caminho direto.

O proxy também precisa repassar o endereço do visitante. O Umami o lê nos cabeçalhos que recebe, entre eles X-Real-IP e X-Forwarded-For: ele o usa para distinguir os visitantes e localizar o país deles. Se seu proxy usa outro cabeçalho, CLIENT_IP_HEADER o nomeia.

Com o Caddy

O Caddy obtém o certificado Let's Encrypt e ativa o HTTPS sozinho. A diretiva reverse_proxy dele define X-Forwarded-For por padrão: estas três linhas bastam.

Caddyfile
stats.example.com {
  reverse_proxy 127.0.0.1:3000
}

Com o Nginx e o Certbot

Este bloco retoma o exemplo de Nginx da documentação do Umami, na porta 80 para deixar o Certbot instalar o HTTPS:

Bloco do Nginx
server {
  listen 80;
  listen [::]:80;
  server_name stats.example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Em seguida, o Certbot instala o certificado e cuida de renová-lo:

Terminal
sudo certbot --nginx

O primeiro login: a conta admin e a autenticação em duas etapas

Ao criar o banco, o Umami abre uma conta de administrador: usuário admin, senha umami. A documentação pede para mudar essa senha no primeiro login.

  1. Abra seu endereço HTTPS e conecte-se com admin e umami.
  2. Abra Settings a partir do botão de perfil da barra lateral, depois Profile, e clique em Change password.
  3. Na aba Security, ative a autenticação em duas etapas: escaneie o QR code com seu aplicativo autenticador, informe o código de seis dígitos e guarde em lugar seguro os dez códigos de backup, que só são exibidos uma vez.

Guarde TWO_FACTOR_ENCRYPTION_KEY com seus backups: a documentação avisa que perder ou mudar essa chave torna ilegíveis os segredos armazenados, e cada usuário precisa então configurar de novo a autenticação em duas etapas.

Acrescentar um site e o script de rastreamento dele

  1. Em Websites, clique em Add website.
  2. Dê um nome ao site e depois informe o domínio dele: o Umami o usa para tirar suas próprias páginas da lista de origens.
  3. Abra Edit nesse site e copie o código da seção Tracking code.
  4. Cole-o no <head> de suas páginas e visite seu site: os dados aparecem logo no painel.
O código de rastreamento, no head
<script defer src="https://stats.example.com/script.js" data-website-id="your-website-id"></script>

Um nome de script próprio

Alguns bloqueadores de anúncios bloqueiam tudo o que parece medição de audiência. Auto-hospedado, o Umami já é servido a partir de seu próprio domínio, e duas variáveis vão mais longe: TRACKER_SCRIPT_NAME dá ao script outro nome que não script.js, e COLLECT_API_ENDPOINT renomeia o endpoint de coleta, no lugar de /api/send. O script passa então a chamar sozinho o novo endpoint; em suas páginas, só muda a origem do código de rastreamento.

compose.yaml, em environment
TRACKER_SCRIPT_NAME: "stats.js"
COLLECT_API_ENDPOINT: "/api/collect"

As configurações úteis

Estas variáveis de ambiente vão no serviço umami do compose.yaml, e depois docker compose up -d recria o contêiner para levá-las em conta:

VariávelO que ela fazValor
DISABLE_TELEMETRYDesativa a telemetria anônima que o Umami envia ao projeto para melhorar a aplicação1
PRIVATE_MODEDesativa todas as chamadas externas à rede, inclusive os ícones dos sites, servidos pelo DuckDuckGo por padrão1
DISABLE_UPDATESDesativa a verificação de novas versões1
IGNORE_IPExclui da coleta endereços IP e faixas CIDR, como os de seus escritóriosUma lista separada por vírgulas
SALT_ROTATIONDefine a frequência com que muda o sal por trás dos identificadores de sessãomonth por padrão
REDIS_URLAcrescenta um cache Redis, que a documentação recomenda para sites de tráfego alto ou várias instânciasSeu endereço Redis
MCP_ENABLEDAbre o endpoint /mcp: seu assistente de IA lê suas estatísticas em modo somente leitura, com uma chave de API criada em Settings, API keys1

Os backups

Tudo o que o Umami guarda fica no banco PostgreSQL dele: contas, sites, equipes e estatísticas. Exporte-o todos os dias e logo antes de cada atualização: em auto-hospedagem, esses dados são guardados sem limite de duração. Ao lado do banco, o arquivo .env guarda os segredos que o tornam utilizável:

ElementoO que ele guardaA salvar
O banco PostgreSQLContas, sites, equipes, relatórios e todas as estatísticasObrigatório, com pg_dump
.envA senha do banco, APP_SECRET e a chave da autenticação em duas etapasObrigatório, criptografado
compose.yamlA configuração de sua instânciaRecomendado

Exportar o banco em funcionamento

pg_dump faz uma exportação coerente enquanto o banco está em uso. O formato personalizado, -Fc, é compactado e se restaura com pg_restore:

Terminal, na pasta do compose.yaml
docker compose exec -T db pg_dump -U umami -d umami -Fc > umami-$(date +%F).dump

Agende esse comando no servidor pelo menos uma vez por dia, faça a triagem das exportações, que se acumulam, e envie uma cópia para outro lugar. Guardadas no disco do servidor, essas exportações também entram nos backups noturnos dele.

Restaurar

  1. Pare o Umami, deixando o banco em funcionamento: docker compose stop umami.
  2. Restaure a exportação no banco, substituindo os objetos existentes.
  3. Reinicie o Umami e verifique se seus sites e as estatísticas deles estão lá.
Terminal
docker compose stop umami
docker compose exec -T db pg_restore -U umami -d umami --clean --if-exists < umami-YYYY-MM-DD.dump
docker compose start umami

Repita esse exercício de tempos em tempos, em uma cópia: é assim que você verifica se um backup funciona.

As atualizações

A documentação dá dois comandos, a partir da pasta do compose.yaml. O banco continua no volume dele:

Terminal
docker compose pull
docker compose up --force-recreate -d

Ao reiniciar, o contêiner aplica sozinho as migrações do esquema. A versão 3.4.0, de 17 de setembro de 2026, trazia duas, para as anotações e as chaves de API; a versão 3.4.1, de 23 de outubro de 2026, não traz nenhuma. Após uma atualização principal, como a passagem para a versão 3, a documentação sugere executar ANALYZE no PostgreSQL para que os painéis recuperem a velocidade:

Terminal
docker compose exec db psql -U umami -d umami -c "ANALYZE;"

Quem faz o quê em um VPS gerenciado

A auto-hospedagem exige cuidar do servidor além da aplicação. Em um VPS gerenciado, nossas equipes assumem o servidor e acompanham sua instância de forma proativa; o Umami continua sendo seu software, com as configurações e os dados dele.

AssuntoNossas equipesVocê
O servidorAtualizações do sistema e de segurança, com intervenções no servidor incluídasO momento que convém a sua atividade
A supervisãoServidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar sua ligaçãoA leitura dos logs de sua instância
UmamiAcompanhamento proativo: erros, lentidões e espaço em disco identificados, correção recomendadaA instalação, as atualizações e as configurações dele, que você aplica, por conta própria ou com seu assistente de IA
Os sites e as estatísticasO servidor que os sustenta, monitorado e com backupAs contas, os sites acompanhados, o script de rastreamento e o tempo de guarda dos dados
Os backupsToda noite, criptografados e guardados fora da máquina; restauração incluídaAs exportações próprias do Umami e o pedido de restauração, quando você precisar
A migraçãoSeu servidor atual migrado, grátisO momento da virada

Se você preferir que nossas equipes intervenham na própria aplicação, esse serviço é cobrado por hora ou por valor fechado, com o orçamento informado antes da intervenção.

Umami, em um servidor cuidado por nós

Com um VPS gerenciado Simafri, nossas equipes mantêm atualizado o servidor de sua instância Umami, monitoram-no dia e noite e intervêm sem esperar sua ligação; elas também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica por conta própria ou com seu assistente de IA. Os backups são criptografados todas as noites e guardados fora da máquina, a restauração está incluída, e a migração de seu servidor atual é grátis.

Conhecer os VPS gerenciados

Perguntas frequentes

O Umami é gratuito para uma empresa?

Sim. O Umami está sob a licença MIT: você pode usá-lo, modificá-lo e redistribuí-lo em uma empresa sem licença a comprar, desde que mantenha o aviso de copyright dele. Resta o custo do servidor em que ele roda.

O Umami usa cookies?

Não. O FAQ do projeto indica que o rastreador web do Umami não usa cookies. A necessidade de um aviso de cookies em seu site depende dos outros serviços que você usa nele e das exigências que se aplicam.

O Umami funciona com MySQL?

Não desde a versão 3: o Umami suporta o PostgreSQL, na versão 12.14 no mínimo. Uma instância da versão 2 com MySQL leva primeiro os dados para o PostgreSQL com o guia de migração do projeto e depois passa para a versão 3.

Como instalar o Umami com Docker Compose?

Parta do docker-compose.yml do projeto, que roda o Umami e o PostgreSQL, com segredos aleatórios em um arquivo .env e a porta publicada em 127.0.0.1. Execute docker compose up -d e coloque na frente um proxy reverso em HTTPS, em um subdomínio.

Quais são as credenciais padrão do Umami?

Na instalação, o Umami cria uma conta admin com a senha umami. Mude-a no primeiro login, em Settings e depois Profile, e ative a autenticação em duas etapas na aba Security, assim que TWO_FACTOR_ENCRYPTION_KEY estiver definida.

Como renomear o script de rastreamento do Umami?

Em uma instância auto-hospedada, TRACKER_SCRIPT_NAME dá ao script outro nome que não script.js, e COLLECT_API_ENDPOINT renomeia o endpoint de coleta /api/send. Mude então a origem do código de rastreamento em suas páginas.

Como fazer backup do Umami?

Exporte o banco PostgreSQL todos os dias com pg_dump, a partir do contêiner do banco, e guarde à parte o arquivo .env, que contém APP_SECRET e a chave da autenticação em duas etapas. Restaure com pg_restore e teste a restauração regularmente.

Um VPS gerenciado cobre o Umami?

Um VPS gerenciado cobre o servidor: sistema, segurança, supervisão e backups. Nossas equipes também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica. Uma intervenção na aplicação é cobrada por hora ou por valor fechado.

Fontes e documentação oficial

Entre em contato