Um Guia Prático para Infraestrutura Open Source Segura e Econômica
Para negócios em crescimento, assinaturas de SaaS podem silenciosamente se tornar um dos maiores itens do orçamento de tecnologia. Uma equipe pagando por Slack e Dropbox pode facilmente gastar centenas ou milhares de dólares por usuário por ano — antes mesmo de excedentes de armazenamento ou complementos empresariais. Existe uma forma melhor.
Implantando as Aplicações
O marketplace de 1-Click Apps do DigitalOcean pré-configura dependências e definições básicas. Lançar um Droplet leva apenas alguns minutos — o 1-Click é um ponto de partida, não um deploy finalizado.
🚀 Rocket.Chat — Mensagens de Equipe Auto-Hospedadas
- Alternativa completa em recursos ao Slack e ao Microsoft Teams
- Canais, DMs, videoconferência (Jitsi), compartilhamento de arquivos, bots e uma API REST completa
- Um Droplet de $24/mês (4GB RAM) atende equipes com menos de 50 usuários
- Configure o SMTP (Admin → Settings → Email) para que redefinições de senha e notificações cheguem aos usuários
- Restrinja o registro aberto (Admin → Settings → Accounts → Registration → Disabled)
- Para equipes maiores: mova o MongoDB para um DigitalOcean Managed Database
☁️ Nextcloud — Sincronização, Compartilhamento e Colaboração de Arquivos
- Plataforma de arquivos auto-hospedada mais amplamente implantada
- Colaboração em documentos (Collabora ou OnlyOffice), calendário, contatos, chamadas de vídeo e um rico ecossistema de aplicativos
- Aponte o armazenamento de arquivos para o DigitalOcean Spaces desde o início — migrar depois é complexo
- Mude os jobs em segundo plano de AJAX para cron do sistema (Admin → Basic Settings → Background Jobs)
Configuração de Produção
Aplique estas configurações a cada deploy antes de colocá-lo em produção. Elas estão ordenadas por prioridade.
Regras de Firewall e SSL
- Droplets do DigitalOcean têm todas as portas abertas por padrão
- Criar um Cloud Firewall é o passo de hardening mais importante — faça isso imediatamente após o lançamento
- Proteja cada aplicação com um certificado Let's Encrypt via Certbot antes de colocá-la em produção
▶ show code▼ hide code
# Firewall Configuration
# 1. Create a Cloud Firewall in the DigitalOcean control panel:
# Networking → Firewalls → Create Firewall
# Inbound rules: TCP 80, TCP 443, TCP <your-ssh-port>
# 2. Harden SSH on the Droplet
sudo nano /etc/ssh/sshd_config
# Set: Port 2222 (or any non-default port)
# Set: PasswordAuthentication no
# Set: PubkeyAuthentication yes
sudo systemctl restart ssh
# 3. Assign the firewall to your Droplet in the control panel
# 4. Install Certbot (Ubuntu + Nginx)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com
# Verify auto-renewal
sudo certbot renew --dry-run
sudo systemctl status certbot.timer
Backups
- Ative os backups semanais do Droplet — desativados por padrão, custam ~20% do preço mensal do Droplet
▶ show code▼ hide code
# Backups Configuration
# Enable backups: DigitalOcean control panel → Droplet → Backups → Enable
# Cost: ~20% of the Droplet monthly price
Monitoramento e Uptime
- Instale o agente de métricas do DigitalOcean para habilitar alertas de CPU, memória e disco
- Adicione verificações de uptime antes que os usuários dependam do serviço — gratuito dentro do painel de controle
- O UptimeRobot fornece verificações multirregião e uma página pública de status
▶ show code▼ hide code
# Monitoring Configuration
# Install the DigitalOcean metrics agent
curl -sSL https://repos.insights.digitalocean.com/install.sh | sudo bash
# Set alert policies in the control panel:
# Droplet → Monitoring → Create Alert Policy
# Thresholds: CPU > 80%, Memory > 85%, Disk > 80%
# Notify via: email or Rocket.Chat webhook
# Enable Uptime Checks (free):
# Monitoring → Uptime → Create Check → HTTP/HTTPS
# Add UptimeRobot (uptimerobot.com) for multi-region checks + status page
Rede, Banco de Dados e Logging
- Use um Reserved IP para que o endereço sobreviva a redimensionamentos e reconstruções do Droplet
- Coloque todos os Droplets em uma VPC para manter o tráfego interno fora da internet pública
- Envie os logs para um serviço gerenciado para que sobrevivam a uma reconstrução do Droplet e sejam pesquisáveis entre servidores
- Limite o tamanho dos arquivos de log locais com o logrotate para evitar o esgotamento do disco
▶ show code▼ hide code
# Networking, Database & Logging Configuration
# Reserved IP — survives Droplet resizes and rebuilds
# Networking → Reserved IPs → Create → Assign to Droplet
# VPC — keeps internal traffic off the public internet
# Networking → VPCs → Create VPC
# Move all Droplets for this project into the same VPC
# Managed Database (Rocket.Chat — MongoDB)
# Databases → Create → MongoDB → Select plan ($15/mo base)
# Update Rocket.Chat: set MONGO_URL env var to the managed DB connection string
# Managed Database (Nextcloud — MySQL or PostgreSQL)
# Update config.php with the new managed DB host, user, and password
# Spaces for Nextcloud file storage (start here — migrating later is complex)
# Spaces → Create Space → copy endpoint URL and access keys
# Nextcloud admin panel → External Storage → Add S3-compatible storage
# Centralized logging — forward logs to Papertrail via rsyslog
sudo apt install rsyslog -y
echo "*.* @logs.papertrailapp.com:XXXXX" | sudo tee -a /etc/rsyslog.conf
sudo systemctl restart rsyslog
# Cap local log file sizes with logrotate
sudo nano /etc/logrotate.d/apps
# weekly / rotate 4 / compress / missingok
# Monitor Rocket.Chat MongoDB logs (database errors surface here first)
sudo tail -f /var/log/mongodb/mongod.log
Economia Drástica de Custos em Relação a Alternativas SaaS
Cost Comparison — 25-Person Team
SaaS subscriptions vs. self-hosted stack on DigitalOcean
Slack Pro
$7.25/user/month × 25
Dropbox Business
$15/user/month × 25
$556/mo
$6,672/yr
Rocket.Chat Droplet
4 GB RAM
Nextcloud Droplet + Spaces
2 GB RAM + object storage
~$42–54/mo
$504–$648/yr
~$6,000
saved per year for 25 people — savings that scale as headcount grows