Atualização Importante: O software Keila foi descontinuado e arquivado pelos desenvolvedores originais. Não há mais suporte oficial, atualizações de segurança ou novas versões sendo lançadas. Este tutorial serve como um guia histórico para quem mantém instalações legadas ou deseja entender a arquitetura desse tipo de ferramenta antes de migrar para alternativas ativas e mantidas, como o Mailtrain, o Listmonk ou o Mautic.
No cenário atual de marketing digital, a autonomia sobre os dados dos clientes é primordial. Muitas empresas buscam sair de plataformas SaaS caras (como Mailchimp ou ActiveCampaign) para soluções self-hosted (hospedagem própria). Neste guia técnico, exploramos a instalação e configuração de um sistema de newsletter leve e moderno na sua VPS (Virtual Private Server), focando em performance, privacidade e controle total do servidor.
Abaixo, detalhamos o processo de instalação utilizando uma stack moderna baseada em Rust e PostgreSQL, arquitetura similar à adotada por outras ferramentas de alta performance como o Listmonk. Este método garante baixa latência e alto throughput para envio de e-mails, sendo uma excelente alternativa ao Mautic ou ao Postal Mail Server para cenários específicos de newsletter.
1. Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, é fundamental garantir que o ambiente esteja limpo e atualizado. Recomendamos o uso de um sistema operacional Ubuntu 22.04 LTS ou Debian 12, pois oferecem bibliotecas estáveis e ampla documentação da comunidade.
Sua VPS deve ter, no mínimo, 2 vCPUs e 2 GB de RAM. Embora seja possível rodar em recursos menores, o processamento de templates HTML e a conexão com o banco de dados exigem memória suficiente para evitar swaps que comprometam a performance do envio.
Primeiro, atualize o sistema operacional e instale as dependências básicas necessárias para compilação e gerenciamento de serviços:
sudo apt update
sudo apt upgrade -y
sudo apt install curl git wget postgresql-client nginx -y
Além disso, você precisará ter o Go ou Rust instalado se for compilar a partir do código-fonte, ou baixar o binário pré-compilado. Para este tutorial, assumiremos que você baixará a versão estável mais recente disponível no repositório oficial do projeto.
2. Instalação do Banco de Dados PostgreSQL
A maioria das ferramentas modernas de newsletter self-hosted utiliza o PostgreSQL devido à sua robustez em transações e suporte a JSON, permitindo armazenar metadados complexos dos assinantes sem perder a integridade relacional.
Instale o servidor PostgreSQL na sua VPS:
sudo apt install postgresql postgresql-contrib -y
Inicie o serviço e garanta que ele esteja ativo:
sudo systemctl enable postgresql
sudo systemctl start postgresql
Agora, crie um banco de dados dedicado para a aplicação. Acessaremos o shell do PostgreSQL como o usuário postgres:
sudo -u postgres psql
Dentro do prompt do PostgreSQL, execute os seguintes comandos SQL para criar o usuário e o banco de dados:
CREATE USER keila_user WITH PASSWORD 'senha_forte_aqui';
CREATE DATABASE keila_db OWNER keila_user;
GRANT ALL PRIVILEGES ON DATABASE keila_db TO keila_user;
Substitua senha_forte_aqui por uma senha complexa. Saia do prompt digitando \q.
3. Download e Configuração da Aplicação
Neste passo, vamos baixar o binário da aplicação. Verifique sempre a página de releases oficial para obter a versão mais recente. Para fins didáticos, utilizaremos a variável de ambiente VERSION.
export VERSION="1.0.0"
wget https://github.com/keila-app/keila/releases/download/v${VERSION}/keila-linux-amd64.tar.gz
tar -xzf keila-linux-amd64.tar.gz
sudo mv keila /usr/local/bin/
Defina as permissões adequadas para que o binário seja executável:
sudo chmod +x /usr/local/bin/keila
Crie um diretório dedicado para os arquivos de configuração e dados persistentes, garantindo organização no sistema de arquivos:
sudo mkdir -p /etc/keila
sudo chown $USER:$USER /etc/keila
4. Configuração do Ambiente (.env)
A aplicação utiliza variáveis de ambiente para configurar a conexão com o banco de dados, as credenciais de administrador e os parâmetros de envio. Crie um arquivo .env no diretório criado:
cd /etc/keila
nano .env
Insira as seguintes configurações base. Ajuste os valores conforme sua infraestrutura:
# Configuração do Banco de Dados
DATABASE_URL=postgresql://keila_user:senha_forte_aqui@localhost/keila_db
# Credenciais de Administração (serão solicitadas na primeira execução)
# ADMIN_USER=admin
# ADMIN_PASSWORD=sua_senha_segura
# URL Base da Aplicação (ajuste para o seu domínio)
BASE_URL=http://seu-dominio.com.br:8080
# Configuração de Logs
LOG_LEVEL=info
Dica de Segurança: Em produção, certifique-se de que a porta 8080 não esteja exposta diretamente à internet. Utilize um proxy reverso (como Nginx ou Traefik) para gerenciar o tráfego HTTPS.
5. Configuração do Proxy Reverso Nginx
Para garantir acesso seguro e facilitar o gerenciamento de certificados SSL (Let's Encrypt), configuraremos o Nginx como proxy reverso.
Crie um arquivo de configuração no diretório sites-available:
sudo nano /etc/nginx/sites-available/keila
Insira a seguinte configuração, substituindo seu-dominio.com.br pelo seu domínio real:
server {
listen 80;
server_name seu-dominio.com.br;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Ative a configuração e teste se o Nginx não possui erros de sintaxe:
sudo ln -s /etc/nginx/sites-available/keila /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste for aprovado, recarregue o serviço:
sudo systemctl reload nginx
6. Execução Inicial e Criação do Admin
Agora estamos prontos para iniciar a aplicação pela primeira vez. Navegue até o diretório de configuração e execute o binário:
cd /etc/keila
keila setup
O comando setup irá:
- Verificar a conexão com o PostgreSQL.
- Criar as tabelas necessárias no banco de dados (migrations).
- Solicitar que você defina o nome de usuário e senha do administrador.
Após concluir o setup, inicie o servidor em modo foreground para testar:
keila server
Acesse http://seu-dominio.com.br no seu navegador. Se tudo estiver correto, você verá a tela de login. Utilize as credenciais criadas no passo anterior.
7. Configuração do Serviço Systemd
Para garantir que a aplicação reinicie automaticamente em caso de falhas ou reinicializações da VPS, crie um serviço systemd.
sudo nano /etc/systemd/system/keila.service
Insira o seguinte conteúdo:
[Unit]
Description=Keila Newsletter Server
After=network.target postgresql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/etc/keila
ExecStart=/usr/local/bin/keila server
EnvironmentFile=/etc/keila/.env
Restart=on-failure
[Install]
WantedBy=multi-user.target
Nota: Altere o usuário www-data para um usuário específico criado apenas para rodar a aplicação, seguindo o princípio do menor privilégio.
Habilite e inicie o serviço:
sudo systemctl daemon-reload
sudo systemctl enable keila
sudo systemctl start keila
Verifique o status para confirmar que está rodando:
sudo systemctl status keila
8. Configuração de Envio de E-mails (SMTP)
Uma das partes críticas de qualquer sistema de newsletter é a entrega. O Keila, assim como alternativas como Listmonk self-hosted, Mailtrain newsletter linux e OpenEMM VPS, não envia e-mails diretamente pela porta 25 (que é frequentemente bloqueada por provedores de nuvem). Ele depende de um servidor SMTP.
Você tem duas opções principais:
- Uso de Serviços Terceiros: Utilize SendGrid, Amazon SES ou Mailgun. Configure as chaves API nas variáveis de ambiente do Keila.
- Server Próprio (Postal/Postfix): Se você optou por instalar um Postal mail server VPS ou configurar o Postfix localmente, aponte a configuração SMTP para
localhost:587.
No painel de administração do Keila, vá em Settings > SMTP e insira os dados do seu servidor de envio. Realize um teste de envio para um e-mail pessoal para validar a configuração.
9. Segurança e Boas Práticas
Ao instalar qualquer software na sua infraestrutura, a segurança deve ser prioridade. Considere as seguintes práticas:
- Certificado SSL: Utilize Certbot para instalar certificados Let's Encrypt no Nginx, garantindo que o tráfego seja criptografado via HTTPS.
- Falha de Autenticação: Configure limites de tentativas de login no Nginx ou utilize um serviço como Fail2ban para bloquear IPs suspeitos.
- Backup do Banco de Dados: Agende backups diários do banco
keila_db. O comando a seguir realiza um dump seguro:
sudo -u postgres pg_dump keila_db > /backup/keila_backup_$(date +%F).sql
10. Considerações Finais e Alternativas
A instalação de um sistema de newsletter self-hosted oferece controle total sobre a lista de contatos, templates e automações. Embora o Keila tenha sido uma ferramenta interessante para quem buscava uma interface moderna e leve, é crucial avaliar se ele atende às necessidades atuais de manutenção.
Se você está migrando de plataformas como Sendy servidor próprio VPS ou buscando uma Mautic alternativa mais simples, considere também:
- Listmonk: Extremamente rápido, escrito em Go, focado puramente em newsletters e automação.
- Mailtrain: Baseado em Node.js, altamente customizável e com forte comunidade open-source.
- Postal: Se o foco for infraestrutura de mail server completa (não apenas newsletter), o Postal é uma das melhores soluções self-hosted atuais.
Lembre-se de monitorar os logs da aplicação (sudo journalctl -u keila -f) para identificar erros de conexão ou envio. A gestão proativa do servidor garante a saúde da sua campanha de e-mail marketing.
Este tutorial cobriu desde a preparação do ambiente Linux até a configuração avançada de SMTP e segurança. Com essas bases, você está preparado para gerenciar sua comunicação digital com independência técnica.