O que é Keila Newsletter e por que escolher o Self-Hosted?
No cenário atual de marketing digital, a dependência excessiva de plataformas SaaS (Software as a Service) como Mailchimp, SendGrid ou ActiveCampaign traz riscos significativos para empresas e desenvolvedores. Questões de privacidade de dados (LGPD/GDPR), custos escalonáveis que podem tornar-se proibitivos e o risco de bloqueio de contas são problemas reais. A solução cada vez mais adotada por sysadmins e profissionais de TI é o self-hosted email, ou seja, hospedar sua própria infraestrutura de newsletter em seu próprio servidor.
O Keila se destaca nesse ecossistema como uma alternativa moderna, leve e open source. Diferente de soluções tradicionais pesadas que exigem centenas de megabytes de RAM e configurações complexas de SMTP, o Keila é construído com Rust, garantindo performance e baixo consumo de recursos. Ele oferece uma interface bonita, funcionalidades de automação de marketing essenciais e uma API robusta para integrações. Neste tutorial, vamos guiar você através do processo completo de instalar keila newsletter em um ambiente VPS Linux, utilizando Docker Compose para facilitar a manutenção e o versionamento.
Pré-requisitos de Infraestrutura
Antes de iniciarmos a instalação, é fundamental garantir que sua VPS atenda aos requisitos mínimos. Como estamos optando por uma abordagem moderna e eficiente, não precisamos de um servidor dedicado gigantesco. No entanto, a confiabilidade do servidor de e-mail depende diretamente da reputação do seu IP e da configuração correta do DNS.
- Sistema Operacional: Uma distribuição Linux recente (Ubuntu 22.04 LTS ou Debian 12 são recomendadas).
- Recursos de Hardware: Mínimo de 1 vCPU e 1GB de RAM (recomendado 2GB para melhor performance com cache).
- Docker e Docker Compose: Necessários para orquestrar os containers do Keila e seu banco de dados.
- Dominio Próprio: Você deve possuir um domínio registrado (ex:
seudominio.com) com acesso ao painel de DNS. - Portas Abertas: As portas 80 (HTTP) e 443 (HTTPS) devem estar acessíveis publicamente para o tráfego da web, e as portas 25, 587 e 993/143 se você planeja usar o Keila também como agente de envio de SMTP (opcional neste tutorial inicial, focado na gestão).
O software gestão listas requer persistência de dados. O Keila utiliza PostgreSQL como banco de dados principal. Vamos configurar isso via Docker Compose para manter tudo isolado e organizado.
Passo 1: Preparação do Ambiente Linux
A primeira etapa é garantir que seu sistema esteja atualizado e que as dependências básicas estejam instaladas. Conecte-se à sua VPS via SSH:
ssh root@seu_ip_da_vps
Atualize o índice de pacotes do seu gerenciador de pacotes. No Ubuntu ou Debian, utilize:
apt update && apt upgrade -y
Agora, instale o Docker Engine e o Docker Compose plugin. A maneira mais segura e recomendada é usar o script de instalação oficial do Docker ou os repositórios oficiais. Para simplificar em um ambiente de produção inicial:
apt install docker.io docker-compose-plugin -y
Habilite o serviço para iniciar automaticamente com o boot da máquina:
systemctl enable --now docker
Verifique se o Docker está rodando corretamente:
docker --version
docker compose version
Passo 2: Estruturação de Diretórios e Configuração do Docker Compose
Vamos criar uma estrutura de diretórios dedicada para o projeto Keila. Isso facilita backups futuros e isolamos a aplicação do resto do sistema.
mkdir -p /opt/keila/data
mkdir -p /opt/keila/config
Navegue até o diretório criado:
cd /opt/keila
Crie o arquivo docker-compose.yml. Este arquivo definirá dois serviços: o banco de dados PostgreSQL e a aplicação Keila em si. Copie e cole o conteúdo abaixo no seu editor de texto favorito (como nano ou vim):
nano docker-compose.yml
Insira a seguinte configuração:
version: '3.8'
services:
db:
image: postgres:15-alpine
container_name: keila_db
restart: unless-stopped
environment:
POSTGRES_DB: keila
POSTGRES_USER: keila_user
POSTGRES_PASSWORD: senha_segura_aqui # ALTERE ISSO!
volumes:
- ./data/postgres:/var/lib/postgresql/data
keila:
image: ghcr.io/keilamarketing/keila:latest
container_name: keila_app
restart: unless-stopped
depends_on:
- db
ports:
- "8080:8080"
environment:
DATABASE_URL: postgres://keila_user:senha_segura_aqui@db:5432/keila # ALTERE A SENHA!
KEILA_SECRET_KEY: sua_chave_secreta_super_longa_e_aleatoria_aqui # GERE UMA NOVA!
SMTP_HOST: smtp.seudominio.com # Configure seu SMTP externo recomendado
SMTP_PORT: 587
SMTP_USER: no-reply@seudominio.com
SMTP_PASSWORD: senha_smtp
volumes:
- ./config:/app/config
networks:
- keila_network
networks:
keila_network:
driver: bridge
Atenção Crítica: Você deve alterar três variáveis de ambiente antes de salvar o arquivo:
POSTGRES_PASSWORD: Defina uma senha forte para o banco de dados.DATABASE_URL: Certifique-se de que a senha corresponde à definida acima.KEILA_SECRET_KEY: Esta chave é usada para criptografar sessões e tokens. Use um gerador aleatório (ex:openssl rand -hex 32) para gerar uma string longa e única. Se você perder essa chave, não conseguirá acessar suas contas administrativas.
Sobre o SMTP: Embora o Keila tenha funcionalidades básicas de envio, a recomendação técnica para profissionais de TI é utilizar um serviço de SMTP externo (como AWS SES, SendGrid ou seu próprio servidor Postfix/Dovecot configurado) através das variáveis SMTP_HOST, etc., para garantir que seus e-mails não caiam no spam. Para este tutorial inicial, podemos deixar essas variáveis vazias ou comentadas se quiser testar apenas a interface e gestão de listas localmente, mas o envio real falhará.
Passo 3: Iniciando os Containers
Com o arquivo docker-compose.yml salvo e configurado, podemos iniciar a stack. Execute o comando abaixo no diretório /opt/keila:
docker compose up -d
O parâmetro -d roda os containers em modo detached (background). O Docker irá baixar as imagens do PostgreSQL e do Keila, configurar a rede interna e iniciar os serviços.
Verifique o status dos containers:
docker compose ps
A saída deve indicar que ambos os containers estão Up. Se houver erros, verifique os logs com:
docker compose logs -f keila
Passo 4: Configuração Inicial e Acesso à Interface Web
Agora que o software está rodando, precisamos acessá-lo. Por padrão, o Keila está exposto na porta 8080. Se você estiver testando localmente ou via SSH tunneling, pode acessar diretamente via IP e porta:
http://seu_ip_da_vps:8080
No entanto, em produção, é altamente recomendável configurar um proxy reverso com Nginx ou Caddy para gerenciar certificados SSL/TLS (HTTPS). Para fins deste tutorial de instalação básica, vamos acessar diretamente e depois configurar a segurança.
A primeira vez que acessar, você será redirecionado para a tela de criação da conta administrativa. Insira um email profissional e uma senha segura. Este será o seu usuário root do sistema newsletter open source.
Após o login, explore o painel. Você verá módulos para:
- Listas: Onde você organiza seus contatos.
- Templates: Editor visual para criar seus boletins informativos.
- Campainhas: Agendamento de envios.
- Automação: Fluxos de trabalho baseados em gatilhos (ex: boas-vindas, abandono de carrinho).
Passo 5: Segurança e Configuração de HTTPS
Nunca expose uma aplicação web diretamente na porta não-criptografada em produção. O uso de HTTPS é obrigatório para proteger as credenciais de login e os dados dos seus assinantes.
A maneira mais eficiente de adicionar SSL a esta configuração Docker é utilizando o Nginx Proxy Manager ou configurando um container Nginx dedicado que atua como reverse proxy. Vamos ilustrar uma configuração rápida com Nginx padrão no host.
Instale o Nginx:
apt install nginx certbot python3-certbot-nginx -y
Crie um arquivo de servidor virtual em /etc/nginx/sites-available/keila:
nano /etc/nginx/sites-available/keila
Configure o proxy reverso apontando para o container do Keila:
server {
listen 80;
server_name keila.seudominio.com;
location / {
proxy_pass http://localhost:8080;
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;
}
}
Ative o site e teste a configuração:
ln -s /etc/nginx/sites-available/keila /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Agora, obtenha o certificado SSL Let's Encrypt:
certbot --nginx -d keila.seudominio.com
Siga as instruções do Certbot para inserir seu email e concordar com os termos. O Nginx será configurado automaticamente para redirecionar HTTP para HTTPS e carregar o certificado SSL.
Passo 6: Configuração de DNS e Reputação de E-mail
Para que sua ferramenta de automacao de marketing funcione corretamente e seus e-mails não sejam marcados como spam, a configuração do DNS é tão importante quanto a instalação do software. Você precisa configurar os registros TXT e CNAME adequados para o domínio que usará para enviar os e-mails (ex: seudominio.com ou um subdomínio dedicado como mail.seudominio.com).
Os registros essenciais são:
- SPF (Sender Policy Framework): Define quais IPs têm permissão para enviar e-mails em seu nome. Adicione um registro TXT:
v=spf1 include:spf.seudominio.com ~all(ajuste conforme o IP da sua VPS ou serviço SMTP usado). - DKIM (DomainKeys Identified Mail): Assinatura criptográfica dos e-mails. O Keila pode gerar chaves DKIM ou você pode usar as do seu servidor SMTP. Verifique a documentação específica do provedor de envio que você integrou.
- DMARC: Política de recebimento para domínios que não passam pelas verificações SPF/DKIM. Registro TXT:
v=DMARC1; p=none; rua=mailto:dmarc@seudominio.com.
Além disso, verifique se o reverse DNS (PTR) do seu IP da VPS está configurado corretamente pelo provedor de hospedagem. Muitos provedores de e-mail rejeitam envios de IPs sem PTR correto.
Passo 7: Backup e Manutenção
A responsabilidade de manter um self-hosted email inclui a segurança dos dados. O Keila armazena suas listas, contatos e configurações no banco de dados PostgreSQL dentro do volume montado em /opt/keila/data/postgres.
Para realizar um backup manual simples, você pode parar os containers e comprimir o diretório de dados:
docker compose down
tar -czf keila_backup_$(date +%F).tar.gz /opt/keila/data
Para automação, recomendo criar um script cron que realize backups diários e os envie para um armazenamento externo (como S3 ou Google Drive) ou mantenha cópias locais rotacionadas.
Considerações Finais sobre Alternativas ao Mailchimp
Investir tempo na configuração inicial de uma plataforma como o Keila paga dividendos a longo prazo. Você tem controle total sobre os dados, não paga taxas por subscriber e pode personalizar cada aspecto da automação. A curva de aprendizado é menor comparada a soluções antigas como Mautic ou SuiteCRM, graças à interface moderna do Keila.
Lembre-se: a tecnologia é apenas uma parte da equação. A qualidade do seu conteúdo e a permissão explícita dos seus assinantes (opt-in) são os pilares de um servidor de e-mail bem-sucedido. Com o Keila instalado e seguro em sua VPS, você está pronto para escalar suas campanhas com eficiência e privacidade.
Se encontrar dificuldades durante a instalação, verifique sempre os logs do Docker (docker compose logs) e certifique-se de que as variáveis de ambiente no docker-compose.yml estão sintaticamente corretas. Boa sorte com sua nova ferramenta de gestão de listas!