Implante Umami em seu VPS: A Alternativa Self-Hosted ao Google Analytics
A decisão de hospedar o Umami em seu próprio servidor VPS surge da necessidade de controle total sobre os dados de análise web e da busca por uma alternativa gratuita e de código aberto ao Google Analytics. Este guia detalha o processo de implantação do Umami em um ambiente Linux, focando em uma instalação prática com Docker. A primeira etapa para ter o Umami rodando em produção é garantir que seu VPS atenda aos requisitos mínimos: recomendamos um servidor com 2GB de RAM e 2 vCPUs, além de pelo menos 10GB de espaço em disco, para garantir desempenho estável com o PostgreSQL e o próprio Umami.
O que é Umami e por que implantar self-hosted?
Umami é uma ferramenta de análise web leve, simples e focada em privacidade. Ao contrário de soluções como o Google Analytics, o Umami coleta dados de forma anônima e não rastreia usuários individualmente. A implantação self-hosted significa que você hospeda o software em seu próprio servidor, o que garante:
- Controle Total dos Dados: Suas informações de tráfego permanecem sob seu controle, sem compartilhamento com terceiros.
- Privacidade Aprimorada: Você pode configurar o Umami para ser ainda mais focado em privacidade, atendendo a regulamentações como a LGPD e GDPR.
- Custo-Benefício: A alternativa open source é gratuita, e os custos se limitam à hospedagem do seu VPS.
- Customização: A natureza open source permite adaptações e integrações futuras, caso necessário.
Para quem busca uma alternativa gratuita e open source para substituir o SaaS de análise web, o Umami é uma escolha excelente. Ele é ideal para pequenas e médias empresas, blogs, e qualquer site que valorize a privacidade dos dados dos visitantes.
Requisitos de Servidor para Umami em Produção
Para garantir que o Umami funcione de maneira eficiente e confiável em um ambiente de produção, alguns requisitos de servidor devem ser atendidos. Estes requisitos garantem que o Umami, junto com seu banco de dados PostgreSQL, opere sem gargalos e possa lidar com um volume razoável de tráfego.
Hardware Essencial
Em minha experiência, a configuração mínima recomendada para um Umami em produção com PostgreSQL é:
- RAM: 2GB de RAM é o mínimo absoluto. Para um tráfego mais intenso ou para rodar outros serviços no mesmo VPS, 4GB de RAM oferecem uma margem de segurança confortável.
- CPU: 2 vCPUs são suficientes para a maioria dos casos de uso. Se o servidor também hospedar seu site e outros serviços, considere 4 vCPUs para melhor performance.
- Armazenamento: O Umami em si não consome muito espaço. No entanto, o banco de dados PostgreSQL crescerá com o tempo. Recomendo um mínimo de 20GB de espaço em disco SSD para o sistema operacional, Docker, Umami, PostgreSQL e logs. SSD é crucial para a performance do banco de dados.
Estes requisitos são baseados no uso típico do Umami com PostgreSQL. Se você planeja usar SQLite (não recomendado para produção), os requisitos de RAM podem ser ligeiramente menores, mas a performance geral e a escalabilidade serão comprometidas. Para um ambiente robusto, a combinação Umami + PostgreSQL em um VPS adequado é o caminho.
Software e Configurações
Além do hardware, certifique-se de que seu servidor Linux (recomendamos Ubuntu LTS) possua:
- Docker e Docker Compose instalados.
- Um sistema de gerenciamento de pacotes (apt) atualizado.
- Acesso root ou sudo para executar os comandos de instalação.
- Um firewall configurado para permitir o acesso às portas necessárias (geralmente 80/443 para o proxy reverso e a porta que o Umami expõe internamente).
Ter essas ferramentas e configurações prontas agilizará significativamente o processo de implantação. Se você ainda não tem o Docker configurado, recomendo seguir nosso guia sobre Docker em VPS: Deploy Rápido e Eficiente (Passo a Passo) para garantir que tudo esteja pronto.
Passo a Passo: Instalação do Umami com Docker Compose
A forma mais prática e recomendada de instalar o Umami é utilizando Docker Compose. Isso encapsula o Umami e seu banco de dados em contêineres isolados, simplificando a configuração, gerenciamento e atualizações.
1. Preparando o Ambiente no Servidor
Primeiro, conecte-se ao seu servidor VPS via SSH e crie um diretório para o projeto do Umami:
mkdir umami-docker
cd umami-docker
Dentro deste diretório, vamos criar o arquivo de configuração do Docker Compose (`docker-compose.yml`).
2. Criando o Arquivo Docker Compose
Crie um arquivo chamado docker-compose.yml com o seguinte conteúdo. Este arquivo define os serviços do Umami e do PostgreSQL, suas imagens, volumes para persistência de dados e redes.
version: "3.7"
services:
umami:
image: ghcr.io/umami-software/umami:latest
container_name: umami
restart: always
ports:
- "3000:3000"
environment:
- DATABASE_TYPE=postgresql
- DATABASE_URL=postgresql://user:password@db:5432/umami
- HASH_SALT=YOUR_RANDOM_HASH_SALT # Gere um salt aleatório!
- NEXTAUTH_SECRET=YOUR_NEXTAUTH_SECRET # Gere um secret aleatório!
- NEXTAUTH_URL=http://localhost:3000 # Adapte se usar proxy reverso
depends_on:
- db
volumes:
- umami_data:/data
db:
image: postgres:14
container_name: umami_db
restart: always
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=umami
volumes:
- db_data:/var/lib/postgresql/data
virtualizes:
umami_data:
driver: local
db_data:
driver: local
Observações Importantes:
- `DATABASE_URL`: Substitua `user`, `password` e `umami` pelos seus dados de acesso ao banco de dados.
- `HASH_SALT` e `NEXTAUTH_SECRET`: É crucial gerar seus próprios valores aleatórios e seguros para essas variáveis. Você pode usar ferramentas online ou comandos no terminal para isso. Por exemplo, para `HASH_SALT`, gere uma string longa e aleatória. Para `NEXTAUTH_SECRET`, use `openssl rand -base64 32`.
- `NEXTAUTH_URL`: Se você planeja acessar o Umami via proxy reverso (como Nginx ou Caddy) na porta 80 ou 443, você precisará ajustar esta URL para apontar para o seu domínio (ex:
http://seusite.com). - Portas: A porta `3000` é a porta padrão do Umami. Ela será exposta dentro da rede Docker e mapeada para a porta `3000` do seu host.
3. Iniciando os Contêineres
Com o arquivo docker-compose.yml configurado, execute o seguinte comando para baixar as imagens e iniciar os contêineres:
docker-compose up -d
O comando `up` inicia os contêineres em segundo plano (`-d`). O Docker Compose cuidará de criar a rede necessária e conectar os serviços.
4. Verificando a Instalação
Após alguns instantes, os contêineres devem estar em execução. Você pode verificar o status com:
docker ps
Você deverá ver dois contêineres listados: `umami` e `umami_db`. Acesse `http://SEU_IP_DO_SERVIDOR:3000` em seu navegador. Você será direcionado para a página de login do Umami. As credenciais padrão são:
- Email:
[email protected] - Senha:
admin
Após o primeiro login, é altamente recomendável alterar o email e a senha do administrador para suas próprias credenciais seguras.
Configurando um Proxy Reverso com Nginx
Para acessar o Umami de forma profissional (usando um domínio, HTTPS) e para melhor segurança, é essencial configurar um proxy reverso. O Nginx é uma escolha popular e robusta para essa tarefa.
1. Instalação do Nginx
Se o Nginx ainda não estiver instalado em seu VPS Ubuntu:
sudo apt update
sudo apt install nginx -y
2. Configuração do Bloco de Servidor do Nginx
Crie um novo arquivo de configuração para o Umami. Substitua seusite.com pelo seu domínio real:
sudo nano /etc/nginx/sites-available/umami
Cole o seguinte conteúdo no arquivo, adaptando `seusite.com` e a porta interna `3000` se necessário:
server {
listen 80;
server_name seusite.com;
location / {
proxy_pass http://localhost:3000;
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;
}
}
Salve e feche o arquivo (Ctrl+X, Y, Enter).
3. Habilitando e Testando a Configuração
Crie um link simbólico para habilitar o site e teste a configuração do Nginx:
sudo ln -s /etc/nginx/sites-available/umami /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste retornar `syntax is ok` e `test is successful`, reinicie o Nginx para aplicar as alterações:
sudo systemctl restart nginx
Agora você pode acessar seu Umami em http://seusite.com.
4. Configurando HTTPS com Let's Encrypt (Certbot)
Para adicionar HTTPS, use o Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d seusite.com
Siga as instruções do Certbot para configurar seu certificado SSL. Ele modificará automaticamente a configuração do Nginx para usar HTTPS e renovar o certificado.
Se você já utiliza ou está considerando outras ferramentas de código aberto para seu servidor, pode se interessar em saber como hospedar Metabase em VPS para suas análises de BI.
Erros Comuns e Soluções
Ao implantar o Umami, alguns problemas podem surgir. Aqui estão os mais comuns e como resolvê-los:
1. Umami não inicia ou retorna erro 502 Bad Gateway
- Causa Provável: O serviço do Umami não consegue se conectar ao banco de dados PostgreSQL.
- Solução: Verifique as variáveis de ambiente `DATABASE_URL`, `POSTGRES_USER`, `POSTGRES_PASSWORD` e `POSTGRES_DB` no seu arquivo
docker-compose.yml. Certifique-se de que correspondem exatamente às configurações do contêiner do banco de dados. Verifique também os logs do contêiner do Umami (`docker logs umami`) para mensagens de erro específicas.
2. Erro de Credenciais ao Acessar o Umami
- Causa Provável: Credenciais de login padrão não foram alteradas ou você está usando um `HASH_SALT` ou `NEXTAUTH_SECRET` incorreto.
- Solução: Acesse o Umami com as credenciais padrão (`[email protected]` / `admin`). Altere imediatamente a senha e o email do administrador nas configurações do painel. Se você perdeu o acesso, pode ser necessário parar os contêineres (`docker-compose down`), remover os volumes (`docker volume rm umami-docker_umami_data umami-docker_db_data` - CUIDADO: ISSO APAGA TODOS OS DADOS) e reiniciar com um novo
docker-compose.yml, ou buscar formas de resetar a senha diretamente no banco de dados.
3. Acesso via Domínio não funciona, mas IP funciona
- Causa Provável: Configuração incorreta do proxy reverso Nginx ou DNS.
- Solução: Verifique se o DNS do seu domínio aponta corretamente para o IP público do seu VPS. Revise a configuração do arquivo do Nginx (`/etc/nginx/sites-available/umami`), especialmente o `server_name` e as diretivas `proxy_pass`. Use `sudo nginx -t` para testar a sintaxe e `sudo systemctl status nginx` para verificar se o Nginx está rodando. Se estiver usando HTTPS, certifique-se de que o Certbot configurou corretamente os blocos `server` para porta 443.
4. Consumo excessivo de RAM
- Causa Provável: Tráfego muito alto ou um bug em alguma versão específica do Umami ou PostgreSQL.
- Solução: Monitore o consumo de RAM dos contêineres com `docker stats`. Se o consumo for consistentemente alto, considere aumentar a RAM do seu VPS. Atualize o Umami e o PostgreSQL para as últimas versões estáveis. Verifique os logs para identificar padrões de uso incomuns.
Umami vs. Google Analytics: Principais Diferenças
| Característica | Umami (Self-Hosted) | Google Analytics (SaaS) |
|---|---|---|
| Custo | Gratuito (custo de hospedagem do VPS) | Gratuito (com limites e coleta de dados) |
| Privacidade | Alta (controle total dos dados) | Baixa (coleta extensiva de dados do usuário) |
| Controle de Dados | Total (em seu servidor) | Limitado (dados de propriedade do Google) |
| Complexidade | Baixa a Média | Alta (curva de aprendizado acentuada) |
| Implantação | Requer VPS e Docker (self-hosted) | Integração via script (gerenciamento do Google) |
| Rastreamento Individual | Não (por padrão) | Sim (com vastas capacidades de perfilamento) |
| Open Source | Sim | Não |
Perguntas Relacionadas
O Umami é realmente gratuito?
Sim, o Umami é um software open source e gratuito. Os únicos custos associados são aqueles de hospedagem do seu servidor VPS e qualquer domínio que você utilize. Não há taxas de licenciamento ou assinatura.
Qual a diferença entre Umami e Google Analytics?
A principal diferença é a privacidade e o controle dos dados. O Google Analytics é um serviço de terceiros que coleta dados de usuários, enquanto o Umami é auto-hospedado, permitindo que você controle quem acessa os dados e garantindo a anonimização dos visitantes.
O Umami rastreia usuários?
Não por padrão. O Umami foi projetado para ser uma ferramenta de análise de dados focada em privacidade. Ele coleta métricas agregadas e anônimas sobre o tráfego do site, sem rastrear individualmente os visitantes ou coletar informações pessoais identificáveis.
Posso usar Umami com SQLite?
Embora o Umami suporte SQLite, essa opção não é recomendada para ambientes de produção. SQLite é um banco de dados baseado em arquivo que pode ter limitações de performance e escalabilidade sob carga. O PostgreSQL é a opção recomendada para a maioria dos cenários de produção.
Conclusão: Seu Controle de Análise Web Começa Agora
Implantar o Umami em seu próprio VPS oferece uma solução poderosa e privada para análise web. Seguindo este guia, você terá seu Umami rodando em poucos minutos, com a segurança e flexibilidade do self-hosting. O controle total dos seus dados e a privacidade dos seus visitantes agora estão ao seu alcance, sem custos de licença.
Recomendação de Hospedagem
Para rodar o Umami com PostgreSQL de forma eficiente, recomendamos o plano VPS Brasil Starter. Com 2GB de RAM e 2 vCPUs, ele oferece o desempenho necessário para esta stack. Nossos clientes rodam essa mesma stack em uma VPS Brasil Starter, garantindo estabilidade e um excelente custo-benefício. Dê o primeiro passo para ter suas análises web sob seu controle:
Comentários (8)
Tutorial excelente! O guia de backup e atualização periódica com Watchtower deixa o ambiente autônomo e confiável.
Configuração impecável com Nginx Proxy Manager e SSL automático. Qualquer um consegue gerenciar seus próprios apps assim.
Migrei os serviços proprietários para self-hosted na minha VPS e a economia anual vai passar de 4 mil reais. Vale muito a pena!
Muito bom ver a comunidade fortalecendo o uso de soluções open-source no Brasil. Artigo didático e com comandos reais testados.
Implementei essas ideias no meu projeto e os resultados foram impressionantes. Obrigado pelo conhecimento compartilhado!
Como profissional da área, posso confirmar que essas práticas realmente fazem diferença no dia a dia.
Artigo muito bem escrito e explicativo! Já compartilhei com toda a equipe da empresa.
Excelente conteúdo! Aprendi conceitos que não encontrava em outros lugares em português.