Como Instalar Countly Self-Hosted: Tutorial Completo em Linux

10 min de leitura Self-Hosted
Como Instalar Countly Self-Hosted: Tutorial Completo em Linux

O Countly é uma plataforma de analytics open-source amplamente reconhecida por sua capacidade de rastrear métricas de aplicativos mobile, web e desktop, além de fornecer dados de qualidade de software (SQM). Para organizações que priorizam a soberania dos dados e a conformidade com regulamentações rigorosas de privacidade, como a LGPD no Brasil, hospedar o Countly em infraestrutura própria representa uma vantagem estratégica significativa. Este tutorial detalha o processo de instalação do Countly Self-Hosted em um ambiente Linux, focado na configuração de alta disponibilidade e segurança.

Pré-requisitos de Infraestrutura

Antes de iniciar a instalação, é fundamental preparar o servidor. O Countly não roda como uma aplicação única; ele consiste em múltiplos serviços interconectados, incluindo banco de dados, sistema de mensagens e servidor web. Recomendamos o uso do Ubuntu Server 22.04 LTS ou Debian 12 como base devido à ampla documentação da comunidade.

O hardware mínimo recomendado para um ambiente de produção leve é de 4 vCPUs e 8GB de RAM. No entanto, para cenários com alto volume de eventos (high-throughput), considere a alocação de memória adicional para o cache do Redis e o armazenamento em disco SSD para garantir baixa latência nas leituras do MongoDB.

  • Sistema Operacional: Ubuntu Server 22.04 LTS ou Debian 12
  • Privilégios: Acesso root ou usuário com permissões sudo
  • Memória RAM: Mínimo de 8GB (recomendado para produção)
  • Disco: SSD com pelo menos 50GB livres
  • Dominio: Um subdomínio dedicado (ex: analytics.suaempresa.com.br) apontando para o IP do servidor

Passo 1: Preparação do Ambiente Linux

O primeiro passo é garantir que o sistema esteja atualizado e com as dependências básicas instaladas. Abra seu terminal e execute os comandos abaixo para atualizar o repositório de pacotes e instalar ferramentas essenciais de gerenciamento.

sudo apt update && sudo apt upgrade -y
sudo apt install curl wget gnupg2 ca-certificates lsb-release debian-archive-keyring -y

Em seguida, configure o firewall (UFW) para liberar apenas as portas necessárias. Para um ambiente self-hosted, você precisará liberar a porta 80 (HTTP) e 443 (HTTPS). Se estiver testando localmente sem HTTPS ainda, libere temporariamente a porta 80, mas certifique-se de habilitar o TLS assim que possível para proteger os dados de analytics trafegados.

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Passo 2: Instalação do Docker e Docker Compose

A maneira mais robusta e recomendada de instalar o Countly Self-Hosted é através do Docker. O containerização isola as dependências, facilitando atualizações e backups. Instale o Docker Engine oficial seguindo os passos abaixo.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

Após a instalação, verifique se o serviço está ativo e adicione seu usuário ao grupo docker para evitar problemas de permissão. Agora, instale o Docker Compose V2, que é integrado ao CLI do Docker moderno.

sudo apt install docker-compose-plugin -y
docker compose version

Passo 3: Configuração do Countly com Docker Compose

Crie um diretório dedicado para a configuração do Countly. Isso manterá seus arquivos de configuração organizados e seguros.

mkdir -p ~/countly-docker
cd ~/countly-docker

O Countly oferece um arquivo docker-compose.yml oficial que define todos os serviços necessários: o servidor da aplicação, o banco de dados MongoDB, o cache Redis e o servidor web Nginx. Baixe este arquivo diretamente do repositório oficial.

wget https://raw.githubusercontent.com/Countly/countly-server/master/docker-compose.yml

Abra o arquivo docker-compose.yml em um editor de texto, como o Nano ou Vim. É crucial modificar as variáveis de ambiente para garantir a segurança e a funcionalidade correta.

nano docker-compose.yml

Dentro do arquivo, localize a seção environment sob o serviço app. Você deve definir as seguintes variáveis:

  • DB_URI: A string de conexão com o banco de dados. Por padrão, o compose já configura isso corretamente para o serviço mongo.
  • REDIS_URI: Similarmente, verifique se aponta para o serviço redis.
  • COUNTLY_LICENSE_KEY: Se você possui uma licença comercial, insira-a aqui. Para uso gratuito (community edition), deixe em branco ou remova essa linha.

Além disso, é altamente recomendável alterar a senha padrão do banco de dados se o arquivo não estiver usando variáveis de ambiente seguras. No entanto, o compose oficial geralmente gera senhas aleatórias ou utiliza volumes protegidos. Verifique a seção volumes para garantir que os dados do MongoDB e Redis sejam persistidos em volumes named, evitando perda de dados ao reiniciar os containers.

Passo 4: Configuração do Nginx como Reverse Proxy

O Countly requer um servidor web reverso para gerenciar o tráfego HTTPS e rotear as requisições corretamente. Vamos configurar o Nginx no host hospedeiro (ou em um container separado, dependendo da sua arquitetura de rede). Para simplificar, configuraremos o Nginx diretamente no Ubuntu.

sudo apt install nginx -y

Crie um novo arquivo de configuração de servidor virtual:

sudo nano /etc/nginx/sites-available/countly

Cole a seguinte configuração, ajustando o domínio para o seu subdomínio dedicado. Note que estamos redirecionando todo o tráfego HTTP para HTTPS e passando as requisições para a porta interna do container Docker (geralmente 8080 ou 443, dependendo da exposição no docker-compose).

server {
    listen 80;
    server_name analytics.seudominio.com.br;
    
    # Redirecionar HTTP para HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name analytics.seudominio.com.br;

    # Caminhos para os certificados SSL (Obtenha via Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/analytics.seudominio.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/analytics.seudominio.com.br/privkey.pem;

    # Configurações de Segurança SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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;
        proxy_cache_bypass $http_upgrade;
    }
}

Ative a configuração e teste se há erros de sintaxe:

sudo ln -s /etc/nginx/sites-available/countly /etc/nginx/sites-enabled/
sudo nginx -t

Se o teste for bem-sucedido, recarregue o Nginx:

sudo systemctl reload nginx

Passo 5: Inicialização e Verificação dos Containers

Agora que a infraestrutura está pronta, inicie os serviços do Countly. Execute o comando abaixo dentro do diretório countly-docker.

docker compose up -d

O parâmetro -d roda os containers em segundo plano (detached). Aguarde alguns minutos para que o MongoDB se inicialize e a aplicação faça suas migrações de banco de dados. Você pode monitorar o progresso com:

docker compose logs -f app

Quando o log parar de exibir mensagens de erro ou indicar "Server is ready", a instalação estará concluída. Acesse seu domínio via navegador.

Passo 6: Configuração Inicial e Segurança

A primeira vez que acessar o painel web, você será solicitado a criar uma conta de administrador. Esteja ciente de que o Countly Community Edition permite a criação de múltiplos usuários, mas algumas funcionalidades avançadas de colaboração podem exigir licença paga.

Após o login, configure as seguintes práticas de segurança essenciais:

  1. Alterar a Senha Padrão: Se você tiver criado um usuário padrão durante o deploy, altere imediatamente suas credenciais.
  2. Habilitar Autenticação 2FA: Vá em Configurações > Usuários e ative a autenticação de dois fatores para todos os administradores. Isso é crítico para proteger seus dados de analytics contra acessos não autorizados.
  3. Restringir Acesso por IP: No seu firewall (UFW ou Cloud Security Groups), considere restringir o acesso ao painel administrativo apenas aos IPs da sua equipe corporativa, se possível.

Passo 7: Integração com Aplicativos Mobile e Web

Com o servidor rodando, você precisa integrar seus aplicativos. No painel do Countly, navegue até Apps > Manage Apps e crie um novo aplicativo.

O Countly fornecerá uma App Key e instruções específicas para SDKs de diferentes plataformas:

  • iOS (Swift/Obj-C): Utilize o CocoaPods ou Swift Package Manager para adicionar o SDK. No arquivo de inicialização, configure a URL do seu servidor self-hosted em vez da URL padrão do Countly Cloud.
  • Android (Java/Kotlin): Adicione a dependência no build.gradle. Configure o CountlyConfig com sua chave de app e o endpoint do seu domínio.
  • Web (JavaScript): Insira o snippet de código fornecido no cabeçalho (<head>) do seu site. Lembre-se de atualizar a variável countly_url para o seu domínio.

Exemplo prático de configuração no Android:

CountlyConfig config = new CountlyConfig("YOUR_APP_KEY", "https://analytics.seudominio.com.br");
config.setDeviceId("custom-device-id-if-needed");
Countly.init(config);

Monitoramento e Manutenção Contínua

A infraestrutura countly exige monitoramento contínuo para garantir a integridade dos dados. Mantenha os containers atualizados regularmente.

cd ~/countly-docker
docker compose pull
docker compose up -d

Implemente backups automáticos do volume de dados do MongoDB. Um script simples pode ser adicionado ao cron para gerar dumps periódicos:

docker exec countly-docker-mongo-1 mongodump --out /backup/mongo-backup
# Copie o backup para um armazenamento seguro externo

Conclusão sobre Privacidade e BI Self-Hosted

Ao instalar o Countly em seu próprio servidor, você assume o controle total sobre os dados de telemetria. Isso elimina a dependência de terceiros e garante que informações sensíveis sobre o comportamento do usuário permaneçam dentro da sua infraestrutura corporativa. Para equipes de BI e desenvolvimento, isso significa dashboards web linux confiáveis e históricos ilimitados sem restrições de volume impostas por serviços em nuvem públicos.

Lembre-se de que a responsabilidade pela segurança final recai sobre você. Mantenha o sistema operacional atualizado, use certificados SSL válidos e monitore os logs do Docker para detectar anomalias. Com esta configuração, você estabelece uma base sólida para análise de dados mobile e web, alinhada às melhores práticas de privacidade de dados modernas.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000