Una guía práctica para infraestructura open source segura y económica
Para las empresas en crecimiento, las suscripciones SaaS pueden convertirse silenciosamente en una de las partidas más grandes del presupuesto tecnológico. Un equipo que paga por Slack y Dropbox puede fácilmente gastar cientos o miles de dólares por usuario al año — antes de excedentes de almacenamiento o complementos empresariales. Hay una mejor manera.
Desplegando las aplicaciones
El marketplace de apps de 1 Clic de DigitalOcean preconfigura las dependencias y los ajustes base. Lanzar un Droplet toma solo unos minutos — 1-Click es un punto de partida, no un despliegue terminado.
🚀 Rocket.Chat — Mensajería de equipo auto-alojada
- Alternativa con todas las funciones a Slack y Microsoft Teams
- Canales, DMs, videoconferencias (Jitsi), compartición de archivos, bots y una API REST completa
- Un Droplet de $24/mes (4GB RAM) soporta equipos de menos de 50 usuarios
- Configura SMTP (Admin → Settings → Email) para que los restablecimientos de contraseña y las notificaciones lleguen a los usuarios
- Restringe el registro abierto (Admin → Settings → Accounts → Registration → Disabled)
- Para equipos más grandes: mueve MongoDB a una Base de Datos Administrada de DigitalOcean
☁️ Nextcloud — Sincronización, compartición y colaboración de archivos
- La plataforma de archivos auto-alojada más ampliamente desplegada
- Colaboración de documentos (Collabora u OnlyOffice), calendario, contactos, videollamadas y un rico ecosistema de apps
- Apunta el almacenamiento de archivos a DigitalOcean Spaces desde el inicio — migrar más tarde es complejo
- Cambia los trabajos en segundo plano de AJAX a cron del sistema (Admin → Basic Settings → Background Jobs)
Configuración de producción
Aplica estos ajustes a cada despliegue antes de salir a producción. Están ordenados por prioridad.
Reglas de firewall y SSL
- Los Droplets de DigitalOcean tienen todos los puertos abiertos por defecto
- Crear un Cloud Firewall es el paso de endurecimiento más importante de todos — hazlo inmediatamente después del lanzamiento
- Asegura cada app con un certificado de Let's Encrypt vía Certbot antes de salir a producción
▶ 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
Copias de seguridad
- Activa las copias de seguridad semanales del Droplet — desactivadas por defecto, cuestan ~20% del precio mensual del Droplet
▶ show code▼ hide code
# Backups Configuration
# Enable backups: DigitalOcean control panel → Droplet → Backups → Enable
# Cost: ~20% of the Droplet monthly price
Monitoreo y disponibilidad
- Instala el agente de métricas de DigitalOcean para habilitar alertas de CPU, memoria y disco
- Añade verificaciones de disponibilidad antes de que los usuarios dependan del servicio — gratis dentro del panel de control
- UptimeRobot ofrece verificaciones multi-región y una página de estado pública
▶ 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
Redes, base de datos y logging
- Usa una IP Reservada para que la dirección sobreviva a redimensionamientos y reconstrucciones del Droplet
- Coloca todos los Droplets en una VPC para mantener el tráfico interno fuera de la internet pública
- Envía los logs a un servicio administrado para que sobrevivan a una reconstrucción del Droplet y sean buscables entre servidores
- Limita el tamaño de los archivos de log locales con logrotate para evitar el agotamiento del 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
Ahorros de costos drásticos frente 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