Alojar Umami num VPS gerido: as estatísticas dos seus sites no seu servidor

Alojar Umami num VPS gerido é guardar as estatísticas dos seus sites numa máquina sua, que as nossas equipas mantêm atualizada e supervisionam dia e noite. O Umami é um software livre sob licença MIT que mede a audiência sem cookies. Este guia segue a sua documentação oficial: a instalação com o Docker Compose e o PostgreSQL, o HTTPS, o primeiro início de sessão, o script de rastreamento, o que o projeto diz sobre os dados pessoais, as definições úteis, as cópias de segurança e as atualizações.

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

Todos os guias

O essencial

  1. A licença MIT permite utilizar, modificar e redistribuir livremente o Umami, numa empresa como em qualquer outro lado, desde que mantenha o seu aviso de direitos de autor.
  2. Instale-o com o Docker Compose: o ficheiro do projeto arranca o Umami e a sua base de dados PostgreSQL, a única suportada desde a versão 3.
  3. Gere aleatoriamente APP_SECRET e TWO_FACTOR_ENCRYPTION_KEY, sirva o Umami em HTTPS num subdomínio próprio e mude logo a palavra-passe da conta admin.
  4. Acrescente o seu site e cole depois o respetivo script de rastreamento no <head> das suas páginas: o rastreador não utiliza cookies.
  5. Exporte todos os dias a base de dados com pg_dump, guarde o ficheiro .env num lugar seguro e atualize com docker compose pull.

O que faz o Umami

O Umami é uma plataforma de análise web e de produto, de código aberto. A sua documentação descreve uma ferramenta que reúne a audiência, as campanhas, o comportamento dos visitantes, as conversões, a retenção e as receitas, da primeira visita aos resultados que contam para a sua atividade. Está escrito em TypeScript sobre Next.js, e a sua imagem Docker corre com uma conta sem privilégios.

Uma instância acompanha vários sites: cada um recebe o seu próprio identificador e o seu script de rastreamento, e os seus colegas orientam-se através das contas e das equipas.

O que permite a licença MIT

O Umami é publicado sob a licença MIT, em nome da Umami Software, Inc. Esta concede, gratuitamente, o direito de utilizar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e vender cópias do software. Pode, portanto, fazê-lo correr para a sua empresa e para os sites dos seus clientes, sem licença para comprar.

A sua única condição: o aviso de direitos de autor e o aviso de permissão acompanham todas as cópias ou partes substanciais do software. Como qualquer licença MIT, fornece o software «tal como está», sem garantia.

Cookies e dados pessoais: o que diz o projeto

A documentação apresenta o Umami como uma ferramenta de estatísticas sem cookies, sem rastreamento entre sites e sem recolha automática de dados pessoais. Autoalojado, mantém as suas estatísticas no seu próprio servidor: é você que decide onde ficam e durante quanto tempo.

QuestãoO que diz o projetoFonte
CookiesO rastreador web não utiliza cookies; o facto de o seu site precisar ou não de um aviso de cookies depende dos outros serviços que utiliza e dos requisitos que se lhe aplicamFAQ
Dados recolhidosPáginas vistas, URL de origem, navegadores, sistemas operativos, tipos de dispositivo e localização aproximadaFAQ
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 todos os meses por predefiniçãoEsquema e código, versão 3.4.1
ConservaçãoEm autoalojamento, os dados são conservados até os eliminarFAQ
RGPDO Umami foi concebido a pensar na privacidade, e a conformidade depende da forma como o configura e utilizaFAQ
Os dados que enviaUm identificador de visitante ou propriedades de eventos que decida enviar ficam sob a sua responsabilidadeIntrodução

Três definições do script de rastreamento vão mais longe, se o desejar: data-exclude-search retira os parâmetros de pesquisa dos URL registados, 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 assinala que esta última definição não constitui, por si só, uma solução completa de gestão do consentimento.

Se identificar os visitantes com sessão iniciada com data-distinct-id ou umami.identify(), a documentação recomenda um identificador de utilizador 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 o Docker Compose e o PostgreSQL

O repositório fornece um docker-compose.yml que arranca o Umami e a sua base de dados PostgreSQL. Desde a versão 3, o PostgreSQL é a única base de dados suportada, na versão 12.14 no mínimo, e a documentação recomenda configurá-lo no fuso horário UTC. Num servidor com o Docker instalado, crie uma pasta e comece pelos seus segredos, gerados aleatoriamente com o 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 depois este compose.yaml ao lado. Retoma o ficheiro do projeto na versão 3.4.1, com duas alterações: os segredos vêm do ficheiro .env, e a porta só é publicada 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 indica nenhum valor de memória nem de processador. O tamanho depende do tráfego dos sites acompanhados e do volume de dados que conserva. Num VPS gerido, descreva-nos a sua utilização e recomendamos-lhe o tamanho adequado.

HTTPS: o proxy inverso

O Umami escuta em HTTP na porta 3000, e a documentação sugere servi-lo atrás do seu servidor web, através de um proxy inverso. Atribua-lhe um subdomínio próprio, como stats.example.com, que aponte para o servidor com registos A e AAAA. Servir o Umami num caminho passa por BASE_PATH, uma variável lida na construção da aplicação: com a imagem publicada, o subdomínio é a via direta.

O proxy tem também de transmitir o endereço do visitante. O Umami lê-o nos cabeçalhos que recebe, entre os quais X-Real-IP e X-Forwarded-For: serve-se dele para distinguir os visitantes e para localizar o seu país. Se o seu proxy utilizar outro cabeçalho, CLIENT_IP_HEADER indica-o.

Com o Caddy

O Caddy obtém o certificado Let's Encrypt e ativa o HTTPS por si próprio. A sua diretiva reverse_proxy define X-Forwarded-For por predefiniçã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 Nginx da documentação do Umami, a escutar na porta 80 para deixar o Certbot instalar o HTTPS:

Bloco 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;
  }
}

O Certbot instala depois o certificado e encarrega-se de o renovar:

Terminal
sudo certbot --nginx

O primeiro início de sessão: a conta admin e a autenticação de dois fatores

Ao criar a sua base de dados, o Umami abre uma conta de administrador: nome de utilizador admin, palavra-passe umami. A documentação pede que mude esta palavra-passe no primeiro início de sessão.

  1. Abra o seu endereço HTTPS e inicie sessão com admin e umami.
  2. Abra Settings a partir do botão de perfil na barra lateral, depois Profile, e clique em Change password.
  3. No separador Security, ative a autenticação de dois fatores: leia o código QR com a sua aplicação de autenticação, introduza o código de seis algarismos e guarde depois num lugar seguro os dez códigos de recuperação, que só são apresentados uma vez.

Guarde TWO_FACTOR_ENCRYPTION_KEY com as suas cópias de segurança: a documentação avisa que perder ou mudar esta chave torna ilegíveis os segredos guardados, e cada utilizador tem então de configurar de novo a sua autenticação de dois fatores.

Acrescentar um site e o respetivo script de rastreamento

  1. Em Websites, clique em Add website.
  2. Dê um nome ao site e depois o seu domínio: o Umami serve-se dele para retirar as suas próprias páginas da lista das fontes de tráfego.
  3. Abra Edit nesse site e copie o código da secção Tracking code.
  4. Cole-o no <head> das suas páginas e visite depois o 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 se assemelhe a estatísticas. Em autoalojamento, o Umami já é servido a partir do 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 muda o nome do ponto de recolha, em vez de /api/send. O script chama então sozinho o novo ponto de recolha; nas 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 definições úteis

Estas variáveis de ambiente entram no serviço umami do compose.yaml, e depois docker compose up -d recria o contentor para as ter em conta:

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

As cópias de segurança

Tudo o que o Umami conserva vive na sua base de dados PostgreSQL: contas, sites, equipas e estatísticas. Exporte-a todos os dias e logo antes de cada atualização: em autoalojamento, estes dados são conservados sem limite de tempo. Ao lado da base de dados, o ficheiro .env contém os segredos que a tornam utilizável:

ElementoO que guardaA copiar
A base de dados PostgreSQLContas, sites, equipas, relatórios e todas as estatísticasObrigatório, com pg_dump
.envA palavra-passe da base de dados, APP_SECRET e a chave da autenticação de dois fatoresObrigatório, cifrado
compose.yamlA configuração da sua instânciaRecomendado

Exportar a base de dados em funcionamento

O pg_dump faz uma exportação coerente enquanto a base de dados está a ser utilizada. O formato personalizado, -Fc, é comprimido e restaura-se com o 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 este 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. Colocadas no disco do servidor, estas exportações entram também nas suas cópias de segurança noturnas.

Restaurar

  1. Pare o Umami, deixando a base de dados a funcionar: docker compose stop umami.
  2. Restaure a exportação na base de dados, substituindo os objetos existentes.
  3. Reinicie o Umami e verifique depois que os seus sites e as respetivas estatísticas 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 este exercício de vez em quando, numa cópia: é assim que verifica que uma cópia de segurança funciona.

As atualizações

A documentação dá dois comandos, a partir da pasta do compose.yaml. A base de dados mantém-se no seu volume:

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

No reinício, o contentor 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. Depois de 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 sua rapidez:

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

Quem faz o quê num VPS gerido

O autoalojamento exige cuidar do servidor para além da aplicação. Num VPS gerido, as nossas equipas assumem o servidor e acompanham a sua instância de forma proativa; o Umami continua a ser o seu software, com as suas definições e os seus dados.

AssuntoAs nossas equipasVocê
O servidorAtualizações do sistema e de segurança, intervenções no servidor incluídasO momento que convém à sua atividade
A supervisãoServidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar pela sua chamadaA leitura dos registos da sua instância
UmamiAcompanhamento proativo: erros, lentidão e espaço em disco identificados, correção recomendadaA sua instalação, as suas atualizações e as suas definições, que aplica diretamente ou com o seu assistente de IA
Os sites e as estatísticasO servidor que os suporta, vigiado e com cópias de segurançaAs contas, os sites acompanhados, o script de rastreamento e o tempo de conservação dos dados
As cópias de segurançaTodas as noites, cifradas e guardadas fora da máquina; restauro incluídoAs exportações próprias do Umami e o pedido de restauro, quando precisar
A migraçãoO seu servidor atual migrado, oferecidoO momento da mudança

Se preferir que as nossas equipas intervenham na própria aplicação, este serviço é faturado à hora ou por pacote, com um orçamento comunicado antes da intervenção.

O Umami, num servidor mantido por si

Com um VPS gerido da Simafri, as nossas equipas mantêm atualizado o servidor da sua instância Umami, vigiam-no dia e noite e intervêm sem esperar pela sua chamada; acompanham também a sua instância de forma proativa e recomendam-lhe as correções úteis, que aplica diretamente ou com o seu assistente de IA. As cópias de segurança são cifradas todas as noites e guardadas fora da máquina, o seu restauro está incluído, e a migração do seu servidor atual é oferecida.

Descobrir os VPS geridos

Perguntas frequentes

O Umami é gratuito para uma empresa?

Sim. O Umami está sob licença MIT: pode utilizá-lo, modificá-lo e redistribuí-lo numa empresa sem licença para comprar, desde que mantenha o seu aviso de direitos de autor. Resta o custo do servidor que o faz funcionar.

O Umami utiliza cookies?

Não. A FAQ do projeto indica que o rastreador web do Umami não utiliza cookies. O facto de o seu site precisar ou não de um aviso de cookies depende dos outros serviços que nele utiliza e dos requisitos que se lhe aplicam.

O Umami funciona com o 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 em MySQL transfere primeiro os seus dados para o PostgreSQL com o guia de migração do projeto e passa depois para a versão 3.

Como instalar o Umami com o Docker Compose?

Parta do docker-compose.yml do projeto, que faz correr o Umami e o PostgreSQL, com segredos aleatórios num ficheiro .env e a porta publicada em 127.0.0.1. Execute docker compose up -d e coloque depois um proxy inverso em HTTPS à frente, num subdomínio.

Quais são as credenciais predefinidas do Umami?

Na instalação, o Umami cria uma conta admin com a palavra-passe umami. Mude-a no primeiro início de sessão, em Settings e depois Profile, e ative a autenticação de dois fatores no separador Security quando TWO_FACTOR_ENCRYPTION_KEY estiver definida.

Como mudar o nome do script de rastreamento do Umami?

Numa instância autoalojada, TRACKER_SCRIPT_NAME dá ao script outro nome que não script.js, e COLLECT_API_ENDPOINT muda o nome do ponto de recolha /api/send. Mude depois a origem do código de rastreamento nas suas páginas.

Como fazer a cópia de segurança do Umami?

Exporte todos os dias a base de dados PostgreSQL com o pg_dump, a partir do contentor da base de dados, e guarde à parte o ficheiro .env, que contém APP_SECRET e a chave da autenticação de dois fatores. Restaure com o pg_restore e teste regularmente o restauro.

Um VPS gerido cobre o Umami?

Um VPS gerido cobre o servidor: sistema, segurança, supervisão e cópias de segurança. As nossas equipas acompanham também a sua instância de forma proativa e recomendam-lhe as correções úteis, que aplica. Uma intervenção na aplicação é faturada à hora ou por pacote.

Fontes e documentação oficial

Contacte-nos