🐘 Guía Completa para Crear una Instancia de Mastodon
Convierte tu idea en una comunidad federada y descentralizada con control total.
📌 Introducción
Mastodon es una plataforma de redes sociales descentralizada que utiliza el protocolo ActivityPub. Crear tu propia instancia te permite:
- ✔ Establecer tus propias reglas de comunidad y políticas de moderación
- ✔ Controlar completamente los datos de tus usuarios
- ✔ Personalizar la experiencia para tu comunidad específica
- ✔ Contribuir a un Internet más diverso y resistente
🤔 Consideraciones antes de comenzar
- 🔹 Responsabilidad: Administrar una instancia requiere tiempo y conocimientos técnicos
- 🔹 Costos: Necesitarás un servidor con recursos adecuados (desde $10/mes)
- 🔹 Mantenimiento: Actualizaciones de seguridad y soporte a usuarios
- 🔹 Moderación: Deberás establecer políticas claras y hacerlas cumplir
🌟 Beneficios de tener tu propia instancia
- ✔ Independencia total: Sin censura ni cambios impuestos por terceros
- ✔ Privacidad garantizada: Controlas qué datos se recopilan y cómo se usan
- ✔ Personalización completa: Desde el diseño hasta las funcionalidades
- ✔ Comunidad a tu medida: Puedes enfocarte en intereses específicos
- ✔ Federación flexible: Decides con qué otras instancias conectarte
🛠️ Requisitos técnicos
Componente | Mínimo | Recomendado | Notas |
---|---|---|---|
Sistema operativo | Debian 11 | Ubuntu 22.04 LTS | Mejor soporte y documentación |
CPU | 2 vCPU | 4 vCPU | Para instancias con >1000 usuarios |
RAM | 4 GB | 8 GB | +2GB por cada 1000 usuarios activos |
Almacenamiento | 50 GB SSD | 100 GB SSD + backup | Depende del número de medios compartidos |
Ancho de banda | 1 TB/mes | 5 TB/mes | Para instancias medianas (~500 usuarios) |
Software | PostgreSQL 13+, Redis 6+, Node.js 16+, Ruby 3.0+, Nginx |
🔍 Elegir un proveedor de hosting
Opciones recomendadas para alojar tu instancia sin depender de las grandes corporaciones:
- 🌍 Proveedores independientes: OVH, Hetzner, 1984 Hosting — ofrecen buen rendimiento y precios accesibles desde ~5€/mes
- 🛠️ Servidores autogestionados: Si cuentas con conexión estable y algo de experiencia técnica, puedes alojarlo en tu propio equipo para tener control total
- 🧪 Alternativas éticas: Investiga proveedores locales o cooperativos que apuesten por la privacidad, el software libre y la descentralización
🚀 Instalación paso a paso
1️⃣ Preparación del sistema
# Actualizar sistema
sudo apt update && sudo apt upgrade -y
# Instalar dependencias básicas
sudo apt install -y curl wget git ufw software-properties-common
# Configurar firewall (UFW)
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
2️⃣ Instalar dependencias principales
# Base de datos y caché
sudo apt install -y postgresql postgresql-contrib redis-server
# Servidor web
sudo apt install -y nginx
# Certificados SSL
sudo apt install -y certbot python3-certbot-nginx
# Dependencias de Ruby
sudo apt install -y autoconf bison build-essential libssl-dev libyaml-dev \
libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev
3️⃣ Configurar PostgreSQL
# Crear usuario y base de datos
sudo -u postgres psql -c "CREATE USER mastodon CREATEDB;"
sudo -u postgres psql -c "ALTER USER mastodon WITH PASSWORD 'tu_contraseña_segura';"
sudo -u postgres psql -c "CREATE DATABASE mastodon_production OWNER mastodon;"
4️⃣ Instalar Mastodon
# Clonar repositorio
git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
# Instalar dependencias
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
# Instalar Node.js y Yarn
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g yarn
# Compilar assets
yarn install --pure-lockfile
RAILS_ENV=production bundle exec rails assets:precompile
🔧 Configuración detallada
🏠 Configuración básica
# Editar archivo de configuración
nano .env.production
# Configuración mínima requerida
LOCAL_DOMAIN=mastodon.tudominio.com
WEB_DOMAIN=mastodon.tudominio.com
SECRET_KEY_BASE=$(rake secret)
OTP_SECRET=$(rake secret)
VAPID_PRIVATE_KEY=$(rake mastodon:webpush:generate_vapid_key | grep 'Private key' | awk '{print $3}')
VAPID_PUBLIC_KEY=$(rake mastodon:webpush:generate_vapid_key | grep 'Public key' | awk '{print $3}')
🛢 Configuración de base de datos
DB_HOST=/var/run/postgresql
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=tu_contraseña_segura
DB_PORT=5432
✉ Configuración de correo electrónico
# Ejemplo para Mailgun
SMTP_SERVER=smtp.mailgun.org
SMTP_PORT=587
SMTP_LOGIN=postmaster@tudominio.com
SMTP_PASSWORD=tu_contraseña
SMTP_FROM_ADDRESS=Mastodon <notificaciones@tudominio.com>
SMTP_AUTH_METHOD=plain
SMTP_OPENSSL_VERIFY_MODE=none
🔗 Configuración de federación
# Limitar federación si es necesario
LIMITED_FEDERATION_MODE=false
WHITELIST_MODE=false
# Configuración de búsqueda
ES_ENABLED=false
ES_HOST=localhost
ES_PORT=9200
🚀 Puesta en marcha
# Migrar base de datos
RAILS_ENV=production bundle exec rails db:migrate
# Crear usuario administrador
RAILS_ENV=production bundle exec rails mastodon:setup
# Configurar servicios systemd
sudo cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
sudo systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming
sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
🌐 Configurar Nginx y SSL
# Copiar configuración de Nginx
sudo cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
# Obtener certificado SSL
sudo certbot --nginx -d mastodon.tudominio.com
# Reiniciar Nginx
sudo systemctl restart nginx
🔐 Seguridad avanzada
🛡️ Protección básica
# Actualizaciones automáticas de seguridad
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# Configurar fail2ban para protección contra ataques
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
🔒 Hardening de PostgreSQL
# Editar pg_hba.conf
sudo nano /etc/postgresql/13/main/pg_hba.conf
# Asegurar conexiones (añadir al final)
hostssl mastodon_production mastodon 127.0.0.1/32 scram-sha-256
# Reiniciar PostgreSQL
sudo systemctl restart postgresql
⚙️ Optimización del rendimiento
🚀 Ajustes para Sidekiq
# Editar servicio sidekiq
sudo nano /etc/systemd/system/mastodon-sidekiq.service
# Ajustar parámetros (ejemplo para 4GB RAM)
Environment="DB_POOL=25"
Environment="MALLOC_ARENA_MAX=2"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 25
📈 Monitoreo con Prometheus
# Instalar Prometheus y Grafana
sudo apt install -y prometheus grafana
# Configurar para monitorear Mastodon
sudo systemctl enable prometheus grafana-server
sudo systemctl start prometheus grafana-server
🔄 Mantenimiento regular
🛠️ Actualización de Mastodon
# Detener servicios
sudo systemctl stop mastodon-*
# Actualizar código
cd /home/mastodon/live
git fetch --tags
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
# Actualizar dependencias
bundle install
yarn install --pure-lockfile
# Migrar base de datos y compilar assets
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
# Reiniciar servicios
sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
💾 Copias de seguridad
# Script de backup completo
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/mastodon"
mkdir -p $BACKUP_DIR
# Backup de PostgreSQL
pg_dump -U mastodon -Fc mastodon_production > $BACKUP_DIR/mastodon_db_$DATE.dump
# Backup de archivos importantes
tar -czvf $BACKUP_DIR/mastodon_files_$DATE.tar.gz \
/home/mastodon/live/.env.production \
/home/mastodon/live/public/system
# Rotar backups antiguos (mantener 30 días)
find $BACKUP_DIR -type f -mtime +30 -delete
🆘 Solución de problemas comunes
🔍 Problemas de federación
Síntoma: Tu instancia no se comunica con otras
# Verificar conectividad
curl -v https://mastodon.social/.well-known/nodeinfo
# Revisar logs
journalctl -u mastodon-sidekiq -f
🐌 Rendimiento lento
Solución: Optimizar configuración
# Aumentar memoria para Sidekiq
sudo nano /etc/systemd/system/mastodon-sidekiq.service
# Añadir: Environment="MALLOC_ARENA_MAX=2"
# Optimizar PostgreSQL
sudo nano /etc/postgresql/13/main/postgresql.conf
# Ajustar: shared_buffers = 1GB (para 4GB RAM)
# effective_cache_size = 3GB
📚 Recursos adicionales
- 📖 Documentación oficial de instalación
- 🛠️ Guía de instalación en GitHub
- 💬 Foro de administradores de Mastodon
- 📊 Guía avanzada de optimización
🎉 ¡Felicidades!
Tu instancia de Mastodon está ahora en funcionamiento en https://mastodon.tudominio.com.
Recuerda que administrar una instancia es un compromiso continuo. Mantén tu software actualizado, monitorea el rendimiento y cultiva una comunidad saludable.
📢 Comparte tu instancia
🐘 **¡Nueva instancia de Mastodon!** Acabo de lanzar mi propia instancia federada. Únete a [nombre de tu comunidad] en [enlace a tu instancia]. ¡Autonomía, privacidad y comunidad! #Fediverso #Mastodon #Descentralización
📄 Descargar esta guía
Nota importante: Esta guía proporciona una base sólida, pero Mastodon se actualiza constantemente. Para obtener información completa y actualizada, consulta siempre la documentación oficial de Mastodon.