Volver al blog

Auto-alojar Rocket.Chat y Nextcloud en DigitalOcean: guía paso a paso

1 de marzo de 20265 min
Apps en la nube gestionadas

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
# 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
# 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
# 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
# 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

💸SaaS Subscriptions

Slack Pro

$7.25/user/month × 25

$181/mo

Dropbox Business

$15/user/month × 25

$375/mo
Total

$556/mo

$6,672/yr

🖥️Self-Hosted on DigitalOcean

Rocket.Chat Droplet

4 GB RAM

$24/mo

Nextcloud Droplet + Spaces

2 GB RAM + object storage

$18–30/mo
Total

~$42–54/mo

$504–$648/yr

🎯

~$6,000

saved per year for 25 people — savings that scale as headcount grows

Ponte en contacto

¿Te interesa un tema? Déjame una nota y elige una categoría. También estoy disponible para una reunión de consultoría gratuita: escríbeme y lo organizamos.