bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Despliegue de Mastodon en

calendar_month Jul 17, 2026 schedule 20 min de lectura visibility 18 vistas
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de Mastodon en un VPS: Guía Completa de Instalación y Configuración

TL;DR

En esta guía detallada, configuraremos y desplegaremos paso a paso nuestra propia instancia de la red social descentralizada Mastodon versión 4.4.0 en un servidor privado virtual (VPS) con Ubuntu 24.04 LTS. Cubriremos todas las etapas, desde la selección de un servidor adecuado y la preparación básica del sistema operativo hasta la instalación de los componentes necesarios, la configuración del servidor web Caddy con HTTPS automático, la configuración de la base de datos PostgreSQL 17 y Redis 8, así como la creación de un sistema de copia de seguridad y monitoreo para garantizar un funcionamiento estable.

  • Instalación de Mastodon 4.4.0 en Ubuntu 24.04 LTS utilizando Ruby 3.4 y Node.js 22 LTS.
  • Configuración de la base de datos PostgreSQL 17 y el almacenamiento en caché con Redis 8.
  • Emisión y renovación automática de certificados SSL con Caddy.
  • Creación de un sistema robusto de copia de seguridad de datos de Mastodon.
  • Recomendaciones para la selección de la configuración del VPS y el mantenimiento del servidor.

Qué configuramos y por qué

Vamos a desplegar Mastodon, una de las redes sociales descentralizadas más populares y funcionales del mundo. Mastodon es un software libre de código abierto que permite a los usuarios crear sus propias plataformas de microblogging federadas, conocidas como "instancias". Estas instancias pueden interactuar entre sí, formando una red unificada pero distribuida, conocida como Fediverse.

A diferencia de las redes sociales centralizadas tradicionales, como X (antes Twitter) o Facebook, Mastodon le otorga control total sobre sus datos, las reglas de la comunidad y la funcionalidad de la plataforma. Al desplegar su propia instancia de Mastodon en un VPS, obtiene independencia de las soluciones corporativas, la capacidad de formar una comunidad única según sus propias reglas y de garantizar un alto nivel de privacidad para sus usuarios.

En resumen, obtendrá una instancia de Mastodon completamente funcional, accesible a través de su nombre de dominio, lista para el registro de usuarios y la integración con otras instancias de Fediverse. Es una solución ideal para equipos pequeños, comunidades de interés, blogs personales o incluso para lanzar una plataforma pública con miles de usuarios, si está preparado para escalar.

Existen alternativas en forma de soluciones en la nube o alojamientos gestionados para Mastodon, que pueden parecer más sencillas a primera vista. Sin embargo, la opción de autoalojamiento en un VPS ofrece la máxima flexibilidad, control sobre los recursos y los datos, así como un ahorro de costos a largo plazo, especialmente si planea escalar su instancia o integrarla con otros servicios. Evita las limitaciones impuestas por los proveedores de servicios gestionados y obtiene acceso root completo para una configuración y optimización detalladas.

Qué configuración de VPS se necesita para esta tarea

La elección del VPS adecuado para Mastodon depende de la carga prevista. Mastodon es una aplicación que consume muchos recursos, requiriendo cantidades significativas de memoria RAM y un subsistema de disco rápido, especialmente con un uso activo. Los requisitos que se presentan a continuación son válidos para 2026, teniendo en cuenta las tendencias de crecimiento del consumo de recursos.

Requisitos mínimos para una instancia pequeña (hasta 50 usuarios activos)

  • CPU: 2 núcleos (Intel Xeon E5/E7 o AMD EPYC modernos).
  • RAM: 4 GB DDR4. La mayor parte de la memoria será utilizada por PostgreSQL, Redis y la propia aplicación Ruby on Rails.
  • Disco: 80 GB NVMe SSD. Un disco rápido es crucial para el rendimiento de la base de datos y el almacenamiento de archivos multimedia. No se recomienda HDD.
  • Red: Canal simétrico de 100 Mbps. Para una instancia pequeña, esto será suficiente.

Configuración recomendada para una instancia mediana (50-500 usuarios activos)

  • CPU: 4 núcleos (Intel Xeon Scalable o AMD EPYC de alto rendimiento).
  • RAM: 8-16 GB DDR4. Esto permitirá manejar cómodamente las cargas pico y almacenar más datos en caché.
  • Disco: 200-400 GB NVMe SSD. Un aumento significativo de volumen para archivos multimedia y el crecimiento potencial de la base de datos.
  • Red: Canal simétrico de 1 Gbps. Necesario para la carga rápida de archivos multimedia y el procesamiento de un gran número de solicitudes.

Plan de VPS específico para la tarea (ejemplo)

Para empezar a trabajar con Mastodon y mantener una instancia de hasta 100-200 usuarios activos, la opción óptima será un VPS con las siguientes características:

Parámetro Valor
Procesador 4 vCPU (Intel Xeon o AMD EPYC moderno)
Memoria RAM 8 GB DDR4
Espacio en disco 200 GB NVMe SSD
Canal de red 1 Gbps

Puede adquirir un VPS con las características indicadas para asegurar el funcionamiento estable de su instancia de Mastodon con margen para el crecimiento.

Cuándo se necesita un dedicado y no un VPS

Un servidor dedicado (dedicated server) se vuelve necesario cuando su instancia de Mastodon comienza a atender a miles de usuarios activos, genera enormes volúmenes de archivos multimedia, o si planea ejecutar servicios adicionales que consumen muchos recursos en él. Un servidor dedicado proporciona acceso exclusivo a todos los recursos físicos (CPU, RAM, disco), lo que elimina los "vecinos ruidosos" y garantiza el máximo rendimiento y estabilidad. Para Mastodon con más de 1000 usuarios activos, especialmente con una gran cantidad de contenido multimedia, un servidor dedicado con 8+ núcleos, 32+ GB de RAM y varios TB de NVMe SSD será una elección justificada.

Ubicación: qué factores influyen

La elección de la ubicación del VPS tiene varios aspectos importantes:

  • Ping (latencia): Cuanto más cerca esté el servidor de su audiencia principal, menor será el ping y más rápido se cargará el contenido. Esto es crucial para una interacción cómoda de los usuarios con la plataforma.
  • Legislación: Diferentes países tienen diferentes leyes sobre el almacenamiento de datos y la privacidad. Asegúrese de que la ubicación elegida cumpla con sus requisitos y los de su comunidad.
  • Costo: Los precios de los VPS pueden variar según la región.
  • Disponibilidad de CDN: Si planea utilizar un CDN para archivos multimedia, elija una ubicación donde haya buenos puntos de presencia (PoP) del proveedor de CDN seleccionado.

Preparación del servidor

Después de obtener acceso a su nuevo VPS con Ubuntu 24.04 LTS, lo primero que debe hacer es realizar una configuración básica de seguridad e instalar las utilidades necesarias. Todos los comandos se ejecutan como usuario root o usando sudo.

Actualización del sistema

Siempre comience actualizando la lista de paquetes y el sistema en sí para asegurarse de que todos los componentes estén actualizados y que tenga las últimas correcciones de seguridad.


sudo apt update             # Обновление списка доступных пакетов
sudo apt upgrade -y         # Обновление всех установленных пакетов до последних версий
sudo apt autoremove -y      # Удаление устаревших пакетов, которые больше не нужны
sudo apt clean              # Очистка кэша пакетов

Creación de un nuevo usuario con permisos sudo

Trabajar como usuario root no es seguro. Cree un nuevo usuario y otórguele permisos sudo.


sudo adduser mastodonuser     # Создание нового пользователя, например, "mastodonuser"
sudo usermod -aG sudo mastodonuser # Добавление пользователя в группу sudo

Ahora, salga de la sesión de root e inicie sesión con el nuevo usuario:


exit                        # Выход из текущей сессии root
ssh mastodonuser@ваш_ip_сервера # Вход под новым пользователем

Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no las ha configurado, hágalo en su máquina local y luego copie la clave pública al servidor.


# На вашей локальной машине:
ssh-keygen -t ed25519 -C "[email protected]" # Создание нового SSH-ключа (если нет)
ssh-copy-id mastodonuser@ваш_ip_сервера      # Копирование публичного ключа на сервер

Después de copiar la clave con éxito, desactive la autenticación por contraseña en /etc/ssh/sshd_config para el usuario root y permita solo claves SSH para todos los usuarios:


sudo nano /etc/ssh/sshd_config

Encuentre y modifique las siguientes líneas:


#PasswordAuthentication yes
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM yes

Guarde los cambios (Ctrl+X, Y, Enter) y reinicie el servicio SSH:


sudo systemctl restart sshd

Configuración del firewall (UFW)

Habilite el firewall UFW y permita solo los puertos necesarios: SSH (22), HTTP (80) y HTTPS (443).


sudo apt install ufw -y     # Установка UFW, если не установлен
sudo ufw default deny incoming # Запретить все входящие соединения по умолчанию
sudo ufw default allow outgoing # Разрешить все исходящие соединения по умолчанию
sudo ufw allow OpenSSH      # Разрешить SSH (порт 22)
sudo ufw allow http         # Разрешить HTTP (порт 80)
sudo ufw allow https        # Разрешить HTTPS (порт 443)
sudo ufw enable             # Включить брандмауэр (подтвердите 'y')
sudo ufw status verbose     # Проверка статуса брандмауэра

Instalación de Fail2Ban

Fail2Ban ayuda a proteger el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se producen intentos de inicio de sesión fallidos.


sudo apt install fail2ban -y # Установка Fail2Ban
sudo systemctl enable fail2ban # Включение автозапуска службы
sudo systemctl start fail2ban  # Запуск службы
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Создание локального конфига
sudo nano /etc/fail2ban/jail.local # Редактирование конфига для настройки

En el archivo jail.local, puede configurar parámetros, por ejemplo, aumentar el tiempo de bloqueo o cambiar el número de intentos. Para empezar, las configuraciones estándar son suficientes.


# В [DEFAULT] секции
bantime = 1h        # Время блокировки (1 час)
findtime = 10m      # Период, за который учитываются попытки (10 минут)
maxretry = 5        # Максимальное количество попыток до блокировки

Guarde los cambios y reinicie Fail2Ban:


sudo systemctl restart fail2ban

Instalación de utilidades básicas

Instalaremos algunas utilidades útiles que pueden ser necesarias durante el proceso de configuración y mantenimiento posterior.


sudo apt install curl wget git htop unzip -y # Установка curl, wget, git, htop, unzip

Ahora su servidor está listo para la instalación del software principal de Mastodon.

Instalación de software — paso a paso

Instalación de software — paso a paso

Para funcionar, Mastodon requiere varios componentes clave: una base de datos PostgreSQL, un servidor de caché Redis, el entorno de ejecución Ruby, Node.js para el frontend y el servidor web Caddy. Utilizaremos las versiones de software actuales disponibles en 2026.

1. Instalación de PostgreSQL 17

Mastodon utiliza PostgreSQL como su base de datos principal. Instalaremos la versión 17, que será actual y estable en 2026.


# Добавление репозитория PostgreSQL 17
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Обновление списка пакетов и установка PostgreSQL 17
sudo apt update
sudo apt install postgresql-17 postgresql-client-17 -y

# Проверка статуса службы PostgreSQL
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

Crearemos un usuario de base de datos y la base de datos para Mastodon. Reemplace ваш_пароль_бд con una contraseña segura.


sudo -u postgres psql -c "CREATE USER mastodon WITH PASSWORD 'ваш_пароль_бд';"
sudo -u postgres psql -c "CREATE DATABASE mastodon_production OWNER mastodon;"

2. Instalación de Redis 8

Redis es utilizado por Mastodon para el almacenamiento en caché, colas y otras tareas que requieren acceso rápido a datos en memoria. Instalaremos la versión 8.


# Установка Redis 8 из официального репозитория Ubuntu (или стороннего, если 8 не в LTS)
sudo apt install redis-server -y

# Проверка статуса службы Redis
sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server

Asegúrese de que Redis esté configurado para escuchar solo conexiones locales (por defecto es así), y que el almacenamiento persistente de datos (persistence) esté habilitado (appendonly yes en /etc/redis/redis.conf). Esto es importante para evitar la pérdida de datos en caso de reinicio.

3. Instalación de Nginx (para algunas configuraciones, pero usamos Caddy)

Aunque utilizaremos Caddy como servidor web principal, Nginx se usa a menudo como proxy o para archivos estáticos. Lo instalaremos en caso de que desee usarlo en el futuro, pero no es obligatorio para esta guía.


sudo apt install nginx -y # Установка Nginx
sudo systemctl enable nginx # Включение автозапуска Nginx
sudo systemctl start nginx # Запуск Nginx
sudo ufw allow 'Nginx Full' # Разрешение HTTP/HTTPS через UFW для Nginx

4. Instalación de Ruby 3.4 y Bundler

Mastodon está escrito en Ruby on Rails. Para su funcionamiento, se requerirá una versión actual de Ruby, por ejemplo, 3.4, y el gestor de dependencias Bundler. Utilizaremos rbenv para gestionar las versiones de Ruby, lo cual es una buena práctica.


# Установка зависимостей для rbenv и Ruby
sudo apt install git curl autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev -y

# Установка rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Установка Ruby 3.4.0
rbenv install 3.4.0
rbenv global 3.4.0
ruby -v # Проверка установленной версии Ruby

# Установка Bundler
gem install bundler --no-document

5. Instalación de Node.js 22 LTS y Yarn

Mastodon utiliza Node.js para compilar activos de frontend y Yarn como gestor de paquetes JavaScript.


# Установка Node.js 22 LTS (используем nvm для гибкости)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22
node -v # Проверка версии Node.js
npm -v  # Проверка версии npm

# Установка Yarn (классической версии 1.x)
npm install --global yarn
yarn -v # Проверка версии Yarn

6. Instalación de ImageMagick y FFmpeg

Estas utilidades son necesarias para Mastodon para procesar imágenes, videos y audio.


sudo apt install imagemagick ffmpeg libimage-exiftool-perl -y

7. Creación de un directorio para Mastodon

Crearemos un directorio donde se instalará Mastodon y asignaremos a nuestro usuario mastodonuser como su propietario.


sudo mkdir -p /var/www/mastodon
sudo chown mastodonuser:mastodonuser /var/www/mastodon
cd /var/www/mastodon

8. Clonación del repositorio de Mastodon

Descargaremos el código fuente de Mastodon del repositorio oficial de GitHub. Instalaremos la versión 4.4.0.


git clone https://github.com/mastodon/mastodon.git .
git checkout v4.4.0 # Переключение на стабильную версию 4.4.0

9. Instalación de dependencias de Mastodon

Instalaremos las gemas de Ruby y las dependencias de JavaScript necesarias para el funcionamiento de Mastodon.


bundle install --without development test # Установка Ruby-гемов
yarn install --pure-lockfile             # Установка JavaScript-зависимостей

10. Compilación de activos de frontend

Compilaremos los archivos JavaScript y CSS necesarios para la interfaz de usuario de Mastodon.


RAILS_ENV=production bundle exec rails assets:precompile

En este punto, los componentes principales están instalados. A continuación, pasaremos a la configuración.

Configuración

Después de instalar todos los componentes, es necesario configurar Mastodon, la base de datos, el servidor web y asegurar el funcionamiento de HTTPS.

1. Configuración del archivo de entorno de Mastodon (.env.production)

Mastodon utiliza variables de entorno para almacenar la configuración, especialmente datos sensibles como contraseñas y claves API. Crearemos el archivo .env.production.


cp .env.production.sample .env.production
nano .env.production

Aquí están los parámetros principales que debe configurar. Reemplace los valores entre corchetes angulares con los suyos:


# Основные настройки
LOCAL_DOMAIN=<ваш_домен>             # Например, mastodon.example.com
PUBLIC_WEB_BASE_URL=https://<ваш_домен> # Полный URL вашего инстанса

# Настройки базы данных PostgreSQL
DB_HOST=localhost
DB_PORT=5432
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=<ваш_пароль_бд>

# Настройки Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# Настройки электронной почты (SMTP)
# Mastodon использует почту для регистрации, сброса паролей и уведомлений.
# Рекомендуется использовать внешний SMTP-сервис (SendGrid, Mailgun, Postmark и т.д.)
SMTP_SERVER=
SMTP_PORT=587
SMTP_LOGIN=<ваш_smtp_логин>
SMTP_PASSWORD=<ваш_smtp_пароль>
SMTP_FROM_ADDRESS=notifications@<ваш_домен>
# SMTP_AUTH_METHOD=plain
# SMTP_ENABLE_STARTTLS_AUTO=true

# Генерация секретных ключей (ВАЖНО!)
# Эти ключи должны быть уникальными и надёжными.
# Генерируйте их командой: bundle exec rake secret
SECRET_KEY_BASE=<сгенерированный_ключ_1>
OTP_SECRET=<сгенерированный_ключ_2>
DEVISE_SECRET=<сгенерированный_ключ_3>

# Ключи для подписи веб-пушей (VAPID)
# Генерируйте их командой: bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=<сгенерированный_приватный_ключ>
VAPID_PUBLIC_KEY=<сгенерированный_публичный_ключ>
VAPID_CONTACT_EMAIL=admin@<ваш_домен>

# S3-совместимое хранилище для медиафайлов (рекомендуется для масштабирования)
# Если не используете S3, Mastodon будет хранить файлы локально (по умолчанию).
# S3_ENABLED=true
# S3_BUCKET=<имя_вашего_бакета>
# AWS_ACCESS_KEY_ID=<ваш_access_key_id>
# AWS_SECRET_ACCESS_KEY=<ваш_secret_access_key>
# S3_REGION=<регион_бакета>
# S3_HOSTNAME= # Например, s3.eu-central-1.amazonaws.com
# S3_PROTOCOL=https
# S3_FORCE_PATH_STYLE=true # Для некоторых S3-совместимых хранилищ

Para generar las claves secretas, ejecute los siguientes comandos en el directorio de Mastodon:


RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake secret
RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

Cada vez, copie la clave generada en la variable correspondiente en .env.production.

2. Inicialización de la base de datos de Mastodon

Aplique las migraciones de la base de datos y cree las entradas predeterminadas.


RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake db:seed

3. Configuración del servidor web Caddy con HTTPS

Caddy es un servidor web moderno que emite y renueva automáticamente certificados SSL/TLS de Let's Encrypt. Esto simplifica significativamente la configuración de HTTPS.


# Установка Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y

# Создание конфигурационного файла Caddy
sudo nano /etc/caddy/Caddyfile

Agregue la siguiente configuración a /etc/caddy/Caddyfile, reemplazando ваш_домен con su dominio real:


# Домен вашего Mastodon инстанса
<ваш_домен> {
  # Автоматический HTTPS
  tls admin@<ваш_домен> # Укажите свой административный email для Let's Encrypt

  # Проксирование запросов к приложению Mastodon
  reverse_proxy /api/ localhost:3000
  reverse_proxy /oauth/ localhost:3000
  reverse_proxy /authorize/ localhost:3000
  reverse_proxy /interact/ localhost:3000
  reverse_proxy /main/ localhost:3000
  reverse_proxy /auth/ localhost:3000
  reverse_proxy /admin/ localhost:3000
  reverse_proxy /settings/ localhost:3000
  reverse_proxy /web/ localhost:3000
  reverse_proxy /dist/ localhost:3000
  reverse_proxy /packs/ localhost:3000
  reverse_proxy /assets/ localhost:3000
  reverse_proxy /system/ localhost:3000
  reverse_proxy /api/v/streaming/ localhost:4000 {
    header_up Host {host}
    header_up X-Real-IP {remote_ip}
    header_up X-Forwarded-For {remote_ip}
    header_up X-Forwarded-Proto {scheme}
    websocket
  }
  reverse_proxy /api/v/pleroma/oauth/ localhost:3000
  reverse_proxy /api/v/pleroma/web/ localhost:3000
  reverse_proxy /api/v/activitypub/web/ localhost:3000
  reverse_proxy /api/v/activitypub/oauth/ localhost:3000

  # Отдача статических файлов напрямую
  root  /var/www/mastodon/public
  file_server

  # Заголовок HSTS для безопасности
  header {
    Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  }

  # Логирование (опционально)
  log {
    output file /var/log/caddy/mastodon_access.log
    format console
  }
}

Cree el directorio para los registros de Caddy, si no existe:


sudo mkdir -p /var/log/caddy
sudo chown caddy:caddy /var/log/caddy

Verifique la configuración de Caddy y reinicie el servicio:


sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
sudo systemctl enable caddy
sudo systemctl start caddy
sudo systemctl status caddy

Asegúrese de que su dominio apunte a la dirección IP de su VPS en la configuración de DNS (registro A).

4. Configuración de Systemd para Mastodon

Mastodon consta de varios procesos (web, streaming, workers) que deben ejecutarse constantemente. Usaremos Systemd para gestionarlos.


sudo cp /var/www/mastodon/dist/mastodon-web.service /etc/systemd/system/
sudo cp /var/www/mastodon/dist/mastodon-sidekiq.service /etc/systemd/system/
sudo cp /var/www/mastodon/dist/mastodon-streaming.service /etc/systemd/system/

# Редактирование файлов служб для указания правильного пользователя
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-web.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-web.service
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-sidekiq.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-sidekiq.service
sudo sed -i 's/User=mastodon/User=mastodonuser/g' /etc/systemd/system/mastodon-streaming.service
sudo sed -i 's/Group=mastodon/Group=mastodonuser/g' /etc/systemd/system/mastodon-streaming.service

# Перезагрузка Systemd, включение и запуск служб
sudo systemctl daemon-reload
sudo systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming
sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming

# Проверка статуса служб
sudo systemctl status mastodon-web
sudo systemctl status mastodon-sidekiq
sudo systemctl status mastodon-streaming

5. Creación del primer administrador

Después de iniciar todos los servicios, cree el primer administrador de Mastodon.


RAILS_ENV=production bundle exec rake mastodon:setup

Siga las instrucciones en pantalla para crear una cuenta de administrador. Seleccione "yes" para crear el administrador.

6. Verificación de la operatividad

Abra su dominio (por ejemplo, https://ваш_домен) en un navegador. Debería ver la página de registro/inicio de sesión de Mastodon. Verifique que HTTPS funcione y que el certificado haya sido emitido por Let's Encrypt.

También puede verificar la disponibilidad a través de curl:


curl -I https://localhost:3000 # Проверка Mastodon Web
curl -I https://localhost:4000 # Проверка Mastodon Streaming
curl -I https://<ваш_домен>    # Проверка доступности через Caddy

Si todo está configurado correctamente, verá los encabezados HTTP de Mastodon y Caddy.

Copias de seguridad y mantenimiento

Las copias de seguridad regulares son un elemento crítico de cualquier sistema en funcionamiento. Para Mastodon, es necesario respaldar la base de datos, los archivos multimedia y los archivos de configuración.

Qué respaldar

  • Base de datos PostgreSQL: Contiene todos los registros de usuarios, publicaciones, notificaciones, configuraciones, etc. Es la parte más importante.
  • Archivos multimedia: Imágenes, videos y audio subidos por los usuarios. Por defecto, se almacenan en /var/www/mastodon/public/system. Si utiliza un almacenamiento compatible con S3, no necesita hacer una copia de seguridad localmente, ya que el proveedor de S3 ya garantiza su conservación.
  • Archivos de configuración: .env.production y archivos de configuración del servidor web (/etc/caddy/Caddyfile).

Script simple de copia de seguridad automática (cron + restic)

Restic es una excelente herramienta para crear copias de seguridad cifradas y deduplicadas. Puede almacenar copias de seguridad localmente, en S3, SFTP y otros almacenamientos. Vamos a instalarlo:


sudo apt install restic -y

Crearemos un directorio para las copias de seguridad y el script:


mkdir ~/backups
nano ~/backups/mastodon_backup.sh

Contenido de ~/backups/mastodon_backup.sh (reemplace <ваш_пароль_рестик> y <путь_к_репозиторию_рестик>):


#!/bin/bash

# Ruta al repositorio Restic (por ejemplo, una carpeta local o un endpoint compatible con S3)
# Ejemplo para una carpeta local: RESTIC_REPOSITORY="/mnt/backup_drive/mastodon_restic"
# Ejemplo para S3: RESTIC_REPOSITORY="s3:https://s3.your-region.amazonaws.com/your-bucket-name"
# No olvide configurar las variables de entorno para S3: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
export RESTIC_REPOSITORY="<путь_к_репозиторию_рестик>"
export RESTIC_PASSWORD="" # Contraseña segura para cifrar las copias de seguridad

# Directorio temporal para el volcado de la base de datos
BACKUP_DIR="/tmp/mastodon_backup_temp"
mkdir -p "$BACKUP_DIR"

# Volcado de la base de datos PostgreSQL
PGPASSWORD="<ваш_пароль_бд>" pg_dump -Fc -Z 9 -h localhost -U mastodon mastodon_production > "$BACKUP_DIR/mastodon_production.dump"

# Copia de la configuración de Mastodon
cp /var/www/mastodon/.env.production "$BACKUP_DIR/.env.production"
cp /etc/caddy/Caddyfile "$BACKUP_DIR/Caddyfile"

# Realizar la copia de seguridad con Restic
restic backup \
  --verbose \
  "$BACKUP_DIR" \
  /var/www/mastodon/public/system # Si los archivos multimedia se almacenan localmente, de lo contrario, omita

# Limpieza de copias de seguridad antiguas (mantener 7 diarias, 4 semanales, 12 mensuales, 1 anual)
restic forget --prune \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 12 \
  --keep-yearly 1

# Eliminación de archivos temporales
rm -rf "$BACKUP_DIR"

echo "Mastodon backup completed at $(date)"

Haga que el script sea ejecutable:


chmod +x ~/backups/mastodon_backup.sh

Inicialice el repositorio Restic (ejecútelo una vez):


restic init

Agregue el script a Cron para su ejecución diaria (por ejemplo, a las 3:00 de la madrugada):


crontab -e

Agregue la línea:


0 3 * * * /home/mastodonuser/backups/mastodon_backup.sh >> /var/log/mastodon_backup.log 2>&1

Asegúrese de que el usuario mastodonuser tenga permisos de escritura en /var/log/mastodon_backup.log.

Dónde almacenar

  • Almacenamiento de objetos externo compatible con S3: La opción más fiable y escalable. Ideal para almacenar grandes volúmenes de archivos multimedia y copias de seguridad de la base de datos. Ejemplos: Amazon S3, DigitalOcean Spaces, Backblaze B2, MinIO.
  • VPS separado: Se puede utilizar un VPS pequeño y económico con un disco grande para almacenar copias de seguridad a través de SFTP/SCP. Esto proporciona una separación geográfica.
  • Disco local: Si no hay otras opciones, se pueden almacenar las copias de seguridad en el mismo VPS, pero en un volumen lógico separado o en un directorio diferente. Sin embargo, esta es la opción menos fiable, ya que si pierde el VPS, también perderá las copias de seguridad.

Actualizaciones: rolling vs ventana de mantenimiento

La actualización de Mastodon y del software base es una parte importante del mantenimiento. Se recomienda seguir la siguiente estrategia:

  • Actualizaciones del SO y del software del sistema (PostgreSQL, Redis, Caddy): Realícelas durante una "ventana de mantenimiento" (maintenance window) planificada, cuando la actividad de los usuarios sea mínima. Antes de las actualizaciones importantes, siempre haga una copia de seguridad.
  • Actualizaciones de Mastodon:
    • Actualizaciones menores (parches): Generalmente se pueden realizar en modo "rolling", es decir, con un tiempo de inactividad mínimo. A menudo no requieren migración de la base de datos ni cambios de configuración.
    • Actualizaciones mayores (nuevas versiones, por ejemplo, de 4.3 a 4.4): Requieren una preparación más cuidadosa, incluyen migraciones de la base de datos, recompilación de activos y pueden requerir cambios en la configuración. Siempre planifique una ventana de mantenimiento para ellas, haga una copia de seguridad completa y lea atentamente el changelog.

El proceso de actualización de Mastodon generalmente incluye:


cd /var/www/mastodon
git pull origin main # Или git checkout vX.Y.Z для конкретной версии
bundle install --without development test
yarn install --pure-lockfile
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
sudo systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming

Siempre consulte la documentación oficial de Mastodon para obtener instrucciones específicas sobre cómo actualizar a una nueva versión.

Solución de problemas + Preguntas frecuentes

Esta sección recopila respuestas a preguntas frecuentes y soluciones a problemas típicos que pueden surgir durante el despliegue y la operación de Mastodon.

¿Qué configuración mínima de VPS es adecuada?

Para ejecutar Mastodon con un número mínimo de usuarios (hasta 50) y sin grandes volúmenes de contenido multimedia, la configuración mínima debe incluir 2 núcleos de CPU, 4 GB de RAM y 80 GB de SSD NVMe. Sin embargo, se recomienda tener un margen de recursos, especialmente de memoria RAM, para garantizar un funcionamiento estable durante las cargas máximas y el crecimiento futuro. Si planea una instancia más activa, es mejor optar directamente por 4 núcleos de CPU, 8 GB de RAM y 200 GB de SSD NVMe.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de las instancias de Mastodon iniciales y medianas (hasta varios cientos de usuarios activos), un VPS será una solución óptima y rentable. Proporciona suficiente rendimiento y flexibilidad. Un servidor dedicado se vuelve necesario cuando su instancia escala a miles de usuarios activos, genera terabytes de contenido multimedia o requiere el máximo aislamiento de recursos y rendimiento. La transición a un servidor dedicado es un paso lógico con un crecimiento significativo de la comunidad.

¿Por qué Mastodon no se inicia después de la configuración?

La mayoría de las veces esto se debe a una configuración incorrecta en .env.production o problemas con la base de datos/Redis. Verifique los registros de los servicios de Systemd: sudo journalctl -u mastodon-web, sudo journalctl -u mastodon-sidekiq, sudo journalctl -u mastodon-streaming. Asegúrese de que todas las claves secretas estén generadas e insertadas correctamente, y que los parámetros de conexión a PostgreSQL y Redis sean correctos. Verifique que PostgreSQL y Redis estén en ejecución y accesibles.

HTTPS no funciona o el dominio no está disponible.

Asegúrese de que su registro DNS A para el dominio apunte a la dirección IP de su VPS. Verifique que Caddy esté en ejecución (sudo systemctl status caddy) y que su configuración en /etc/caddy/Caddyfile no contenga errores (sudo caddy validate --config /etc/caddy/Caddyfile). Asegúrese de que los puertos 80 y 443 estén abiertos en el firewall (sudo ufw status). A veces, Let's Encrypt puede emitir errores debido a un registro DNS incorrecto o al bloqueo de puertos.

Funcionamiento lento de Mastodon o errores 502/503.

Esto puede indicar una falta de recursos, especialmente RAM. Verifique el uso de memoria con htop. Asegúrese de que mastodon-sidekiq esté funcionando, ya que procesa tareas en segundo plano y colas. Si Sidekiq está sobrecargado, esto puede ralentizar el funcionamiento de toda la instancia. Considere aumentar el número de workers de Sidekiq o actualizar el VPS a un plan más potente. También revise los registros de la aplicación en busca de errores.

¿Cómo actualizar Mastodon a una nueva versión?

El proceso detallado de actualización se describe en la sección "Copias de seguridad y mantenimiento". En resumen: haga una copia de seguridad, detenga los servicios de Mastodon, obtenga la nueva versión de Git, instale nuevas dependencias, aplique las migraciones de la base de datos, compile los activos y luego inicie los servicios. Siempre lea las notas de lanzamiento oficiales para la versión específica, ya que puede haber pasos específicos.

¿Cómo crear un nuevo usuario administrador?

Si desea crear un administrador adicional o ha perdido el acceso al primero, puede hacerlo ejecutando el comando en el directorio de Mastodon: RAILS_ENV=production bundle exec rake mastodon:create_account. Se le pedirá que ingrese un nombre de usuario, correo electrónico y contraseña, y luego que confirme que será una cuenta de administrador.

¿Cómo configurar el envío de correo electrónico?

La configuración SMTP se establece en el archivo .env.production. Asegúrese de haber especificado correctamente SMTP_SERVER, SMTP_PORT, SMTP_LOGIN, SMTP_PASSWORD y SMTP_FROM_ADDRESS. Puede probar el envío de correo electrónico intentando registrar un nuevo usuario o restablecer una contraseña. Si el correo no se envía, verifique los registros del servicio de correo y los registros de Mastodon en busca de errores de conexión al servidor SMTP.

Conclusiones y próximos pasos

¡Felicidades! Ha desplegado con éxito su propia instancia de Mastodon en un VPS, ha configurado todos los componentes necesarios y ha asegurado su funcionamiento con HTTPS automático y un sistema de copia de seguridad. Ahora es el propietario de una plataforma social independiente, lista para recibir usuarios e interactuar con el Fediverso.

Los siguientes pasos para el desarrollo de su instancia pueden incluir:

  • Escalado del almacenamiento de archivos multimedia: Si su instancia crece, considere migrar los archivos multimedia a un almacenamiento de objetos compatible con S3 para liberar espacio en el VPS y aumentar la fiabilidad.
  • Monitoreo del rendimiento: Configure herramientas de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear la carga de CPU, RAM, disco, así como las métricas de Mastodon, para responder a los problemas de manera oportuna.
  • Ajuste fino y optimización: Explore parámetros de configuración adicionales de Mastodon, PostgreSQL y Redis para optimizar el rendimiento según su carga específica.

¿Te fue útil esta guía?

Despliegue de Mastodon en VPS: guía completa de instalación y configuración
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.