Cómo instalar Mastodon en Docker - Red social descentralizada en Docker

Mastodon | Fediverse | Docker

Mastodon: Red social descentralizada y autohospedada en Docker

Alternativa open source a Twitter con federación. Crea tu propia instancia de Mastodon completamente descentralizada, sin anuncios, sin algoritmos secretos, en tu propio servidor.

¿Qué es Mastodon?


Mastodon es una red social descentralizada y de código abierto basada en ActivityPub, el protocolo federado de redes sociales. Es una alternativa completa a Twitter donde tú eres el dueño de tu instancia, tus datos, y tu comunidad. No hay anuncios, no hay algoritmo oculto, no hay tracking corporativo.

La magia de Mastodon es la federación: múltiples servidores independientes funcionan como una red conectada. Puedes seguir a usuarios de otros servidores, interactuar con ellos, y formar comunidades. Es como correo electrónico: tu email está en Gmail pero puedes escribir a usuarios en Outlook. Con Mastodon, tú hospeadas tu propia instancia y te conectas con el resto del Fediverse.

Filosofía descentralizada: Mastodon no es controlado por una empresa. No puede censurar contenido globalmente, no puede cambiar sus términos de servicio arbitrariamente, no puede vender tus datos. Solo tú controlas tu servidor y tus datos.

Características principales

Federación descentralizada

Conecta con usuarios de cualquier otro servidor Mastodon en el Fediverse.

Sin anuncios

Alimentación cronológica pura. Sin recomendaciones basadas en datos, sin algoritmos oscuros.

Privacidad total

Tus datos en tu servidor. No hay tracking, no hay venta de datos, no hay perfilado.

Comunidades temáticas

Crea instancias especializadas: para gamers, desarrolladores, artistas, locales.

Herramientas de moderación

Filtros, silenciado, bloqueo, moderadores personalizados, reglas de instancia.

Contenido enriquecido

Emojis personalizados, imágenes con alt text, videos, archivos adjuntos.

API REST completa

Acceso programático para bots, aplicaciones, integraciones personalizadas.

Aplicaciones clientes

Oficiales y de terceros: web, iOS, Android, desktop. Elige tu experiencia.

Control de almacenamiento

Almacena media en S3, limpia caché automáticamente, gestiona costes.

HTTPS obligatorio

Seguridad en tránsito. Certificados SSL automáticos con Let's Encrypt.

Importar desde Twitter

Importa tu historial de seguimiento y bloqueos desde Twitter.

Open Source

100% código abierto bajo AGPL. Auditable, personalizable, para siempre.

Requisitos del sistema

  • Docker y Docker Compose instalados
  • PostgreSQL 12+ (en contenedor)
  • Redis (en contenedor)
  • 2+ GB de RAM mínimo (4-8 GB recomendado)
  • Dominio propio (ej: social.tudominio.com)
  • Almacenamiento: 50-100 GB+ según usuarios y contenido
  • HTTPS obligatorio (Let's Encrypt funciona con Docker)
  • Servidor SMTP para notificaciones por email

Instalación paso a paso

Paso 1: Crear directorio del proyecto

mkdir ~/mastodon && cd ~/mastodon

Paso 2: Clonar repositorio oficial

git clone https://github.com/mastodon/mastodon.git cd mastodon latest=$(git describe --tags `git rev-list --tags --max-count=1`) git checkout $latest -b ${latest}-branch

Paso 3: Generar claves secretas

# SECRET_KEY_BASE y OTP_SECRET docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon:latest # Dentro del contenedor: rake secret # Genera dos secretos y guárdalos
# VAPID_PRIVATE_KEY y VAPID_PUBLIC_KEY docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon:latest generate-vapid

Paso 4: Crear archivo .env.production

cat > .env.production << 'EOF' # Dominio principal (sin https://) LOCAL_DOMAIN=mastodon.tudominio.com # Base de datos DB_HOST=db DB_PORT=5432 DB_NAME=mastodon DB_USER=mastodon DB_PASS=contraseña-segura-postgres # Redis REDIS_HOST=redis REDIS_PORT=6379 # Secretos (del paso anterior) SECRET_KEY_BASE= OTP_SECRET= # VAPID WebPush VAPID_PRIVATE_KEY= VAPID_PUBLIC_KEY= # SMTP para notificaciones SMTP_SERVER=smtp.gmail.com SMTP_PORT=587 SMTP_LOGIN=tu-email@gmail.com SMTP_PASSWORD=tu-app-password SMTP_FROM_ADDRESS=notifications@mastodon.tudominio.com # Elasticsearch (opcional, para búsqueda avanzada) ES_ENABLED=false # S3 para almacenar medios (recomendado) S3_ENABLED=false EOF

Paso 5: Docker Compose (create docker-compose.yml)

El archivo docker-compose.yml oficial incluye PostgreSQL, Redis y Mastodon. Copia del repositorio oficial o usa la versión de LinuxServer.io.

Paso 6: Iniciar contenedores

docker compose up -d

Paso 7: Crear primer usuario administrador

docker compose run --rm web \ bin/tootctl accounts create \ admin \ --email admin@tudominio.com \ --confirmed \ --role Owner

Paso 8: Acceder a Mastodon

Abre https://mastodon.tudominio.com en tu navegador (HTTPS es obligatorio).

Configuración avanzada

Almacenamiento S3 (Scaleway, Cloudflare R2)

S3_ENABLED=true S3_BUCKET=mastodon-media S3_REGION=auto S3_HOSTNAME=tu-id.r2.cloudflarestorage.com AWS_ACCESS_KEY_ID=tu-access-key AWS_SECRET_ACCESS_KEY=tu-secret-key S3_ALIAS_HOST=media.mastodon.tudominio.com

Elasticsearch para búsqueda avanzada

ES_ENABLED=true ES_HOST=es ES_PORT=9200

Modo single-user (instancia personal)

SINGLE_USER_MODE=true

Deshabilitar registros públicos

REGISTRATIONS_MODE=none # O invite_only para permitir solo invitaciones

Configurar HTTPS con Caddy

mastodon.tudominio.com { reverse_proxy localhost:3000 }

Caddy genera automáticamente certificados Let's Encrypt. Es lo más simple.

Con Nginx

upstream mastodon { server localhost:3000 fail_timeout=0; } server { listen 443 ssl http2; server_name mastodon.tudominio.com; ssl_certificate /etc/letsencrypt/live/mastodon/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mastodon/privkey.pem; location / { proxy_pass http://mastodon; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }

Gestión y mantenimiento

Ver logs

docker compose logs -f web

Crear usuario adicional

docker compose run --rm web \ bin/tootctl accounts create \ username \ --email email@tudominio.com \ --confirmed

Limpiar medios en caché (liberar espacio)

docker compose run --rm web \ bin/tootctl media remove --days 7

Realizar mantenimiento

# Compilar assets docker compose run --rm web rake assets:precompile # Actualizar base de datos docker compose run --rm web rake db:migrate

Reiniciar Mastodon

docker compose restart

Actualizar a la última versión

cd mastodon git pull git checkout $(git describe --tags `git rev-list --tags --max-count=1`) docker compose pull docker compose run --rm web rake db:migrate docker compose up -d

Casos de uso

  • Red social privada para empresa: Comunicación interna descentralizada
  • Comunidad temática: Instancia para gamers, desarrolladores, artistas
  • Blog social con comunidad: Plataforma de publicación + red social
  • Académia/Universidad: Red social institucional sin anuncios
  • Instancia personal: Alternativa a Twitter para tu marca personal
  • ONG/Movimiento social: Comunicación con comunidad base sin intermediarios
  • Servidor local: Red descentralizada para tu ciudad o región

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.