Mastodon Server: cómo crear un servidor paso por paso

Tener tu propio servidor de Mastodon te permite controlar totalmente tus datos y la moderación de tu comunidad. Es una forma de lograr una experiencia de usuario personalizada, sin publicidad y con protección de datos.

Requisitos para tener un servidor de Mastodon

Puedes empezar con un servidor pequeño e ir ampliando según sea necesario para seguir el ritmo al crecimiento de tu comunidad. Para crear un servidor de Mastodon necesitas:

  • VPS u otro servidor: Puedes operar Mastodon en un servidor local, pero un Virtual Private Server (VPS) es una solución más flexible y fácil de gestionar. Lo ideal sería que el servidor usara Ubuntu 20.04 o Debian 11 como sistema operativo y que te garantice acceso root para aplicar la configuración necesaria.
  • Dominio o subdominio: Necesitas un dominio o subdominio propio para identificar a tu servidor Mastodon. Así, los usuarios podrán encontrar tu instancia y conectarse con ella.
Domain checker
  • Disponibilidad web continua: Tu servidor debe estar conectado constantemente para que otras personas puedan usar tu instancia de Mastodon.
  • Proveedor de correo electrónico: Mastodon envía notificaciones y enlaces de confirmación por email por lo que necesitas un proveedor de correo electrónico. Puedes instalar tu propio servidor SMTP aunque probablemente un software de terceros sea más práctico. Mastodon recomienda por ejemplo Mailgun, Sparkpost o Sendgrid.
  • Object Storage Provider (opcional): Se recomienda usar un proveedor de almacenamiento de objetos compatible con Amazon S3, ya que Mastodon guarda imágenes, vídeos y otros archivos multimedia en el servidor. Si cuentas con espacio de almacenamiento adicional te aseguras de que tu instancia funciona sin problemas y de tener suficiente espacio para los datos de usuarios.

Asimismo, tu servidor debe cumplir con los siguientes requisitos técnicos:

  • CPU/Potencia de cálculo: mín. 2 núcleos
  • RAM/Memoria de trabajo: mín. 2 GB
  • Disco duro: mín. 30 GB

Mastodon usa una base de datos (PostgreSQL) para almacenar los datos de usuario y otra información. Si tienes muchos usuarios, puede haber muchos accesos a la base de datos. Asegúrate de que tu base de datos esté lo suficientemente optimizada y de tener suficientes recursos (CPU y RAM) para procesar estos accesos de manera eficiente.

Alojar un Mastodon Server con un VPS de IONOS

Si quieres iniciar tu propia instancia de Mastodon pero no sabes qué plan de VPS es el idóneo, IONOS te ofrece potentes paquetes de VPS con recursos dedicados y tráfico ilimitado a muy buen precio.

Para un servidor Mastodon sencillo, el paquete VPS Linux S de IONOS es la opción perfecta. Te ofrece 80 GB de espacio y hasta 1 Gbit/s de ancho de banda. Si necesitas más recursos, solo tienes que subir al siguiente paquete de servicio.

Usos de servidores de Mastodon y las tarifas de IONOS correspondientes

Para decidir cuál es el paquete de VPS adecuado debes considerar el posible número de usuarios de tu instancia de Mastodon. Según el tráfico que esperes te recomendamos las siguientes tarifas de IONOS:

Uso de servidor de Mastodon Servidor VPS IONOS adecuado
hasta 100 personas VPS Linux M
100-1000 personas VPS Linux L
1000-10000 personas VPS Linux XL
a partir de 10000 personas VPS Linux XXL

Además, puedes ejecutar tu servidor de Mastodon en paralelo a otros servicios. Por ejemplo, puedes iniciarte con una pequeña base de usuarios con estas tarifas:

Uso de servidor de Mastodon Servidor VPS IONOS adecuado
Operar una página web sencilla en paralelo VPS Linux M
Operar en paralelo un servidor de voz VPS Linux M
Operar en paralelo una tienda web VPS Linux L

Cómo crear un Mastodon Server paso por paso

Paso 1: preparar el servidor

La mayoría de los proveedores de hosting ofrecen la posibilidad de elegir el sistema operativo durante la configuración. Mastodon funciona mejor con Ubuntu 20.04 y Debian 11. Si es posible, decántate por uno de estos sistemas operativos. Cuando tu VPS esté configurado, conéctate a tu servidor por SSH utilizando un terminal (Linux/Mac) o un cliente SSH como PuTTY (Windows).

ssh root@your_server_ip
bash

Crea your_server_ip mediante la dirección IP de tu VPS.

Para proteger tu sistema operativo usa SSH Keys y configura las normas de cortafuegos con iptables para liberar solo los puertos HTTP(S) y SSH. Luego apunta el registro A de tu dominio o subdominio a la dirección IP del VPS. Para IPv6 añade además un registro AAAA.

Actualiza el gestor de paquetes y los paquetes de sistema:

apt update && apt upgrade -y
bash

Paso 2: instalar paquetes necesarios

Mastodon requiere múltiples paquetes y dependencias para funcionar correctamente, por ejemplo: Node.js, Yarn, PostgreSQL, Redis y Nginx.

Primero instala los paquetes básicos:

apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
bash

Node.js

curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
bash

PostgreSQL

wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
bash

Paquetes de sistema

apt update
bash
apt install -y imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev nginx nodejs redis-server redis-tools postgresql postgresql-contrib certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
bash

Yarn

corepack enable
yarn set version classic
bash

Ruby

Mastodon está escrito en Ruby, por lo que necesita Ruby y Bundler. Primero, crea el usuario bajo el que se ejecutará Mastodon:

adduser --disabled-login mastodon
bash

Ahora, cambia a la cuenta de usuario recién creada:

su - mastodon
bash

Instala rbenv y rbenv-build:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
bash

Una vez terminado, instala la versión correcta de Ruby y Bundler:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.3
rbenv global 3.2.3
gem install bundler --no-document
bash

Vuelve con exit al usuario root.

Paso 3: configurar PostgreSQL

El servidor de Mastodon usa PostgreSQL para almacenar y administrar datos. En el paso anterior ya instalaste el servidor de la base de datos. Pasa ahora al usuario de Postgre para acceder al shell de PostgreSQL:

sudo -u postgres psql
bash

Mastodon inicia sesión en el servidor de la base de datos sin contraseña, por lo que el nombre de usuario del sistema de Linux y el de la base de datos deben coincidir. Ejecuta los siguientes comandos en PostgreSQL para crear la base de datos:

CREATE USER mastodon CREATEDB;
\q
sql

Puedes mejorar el rendimiento de tu base de datos PostgreSQL ajustando los recursos de sistema disponibles. Para ello, una herramienta útil es el generador de configuraciones pgTune, donde introduciendo datos como la cantidad de núcleos de la CPU y el tamaño de la RAM recibes una configuración optimizada PostgreSQL que indicas en postgresql.conf.

Paso 4: instalar Mastodon

Lo siguiente es volver al usuario de Mastodon:

su - mastodon
bash

Descarga la última versión estable de Mastodon:

git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)
bash

Instala las dependencias de Ruby y JavaScript:

bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile
bash

Ejecuta el asistente de configuración de Mastodon:

RAILS_ENV=production bundle exec rake mastodon:setup
bash

Ahora se te pedirán diversos ajustes que finalmente se guardarán en el archivo .env.production.

  • Domain name: indicar nombre de dominio del servidor VPS
  • Do you want to enable single user mode?: N
  • Are you using Docker to run Mastodon?: N
  • PostgreSQL host: default - Enter
  • PostgreSQL port: default - Enter
  • Name of PostgreSQL database: default - Enter
  • Name of PostgreSQL user: default - Enter
  • Password of PostgreSQL user: dejar vacío - Enter
  • Redis host: default - Enter
  • Redis port: default - Enter
  • Redis password: default – Enter
  • Do you want to store uploaded files on the cloud?: N
  • Do you want to send e-mails from localhost?: N
  • SMTP server: indicar servidor SMTP
  • SMTP port: indicar puerto del servidor SMTP
  • SMTP username: nombre de usuario para el inicio de sesión
  • SMTP authentication: plain
  • SMTP OpenSSL verify mode: none
  • E-mail address to send e-mails “from”: normalmente como el login de SMTP
  • Send a test e-mail with this configuration right now?: Y
  • Send test e-mail to: indicar dirección para recibir correos
  • Save configuration?: Y
  • Prepare the database now?: Y
  • Compile the assets now?: Y
  • Do you want to create an admin user straight away?: Y
  • Username: admin
  • E-Mail: correo propio

Vuelve a cambiar al usuario root:

exit
bash

Paso 5: instalar el certificado SSL

Los servidores VPS de IONOS ya incluyen por defecto un certificado SSL. Si el paquete que has elegido no tiene certificado, puedes instalarlo fácilmente.

Let’s Encrypt ofrece certificados SSL de manera gratuita, que además se instalan y renuevan fácilmente.

certbot certonly --nginx -d example.com
bash

El certificado se guardará en la carpeta /etc/letsencrypt/live/example.com/ de tu Mastodon Server.

Paso 6: configurar Nginx

Copia la plantilla de configuración de Nginx del directorio de Mastodon y pégala en el directorio sites-available de Nginx:

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
bash

Crea un enlace simbólico del archivo de configuración en sites-enabled para activarlo y elimina la configuración estándar:

ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
rm /etc/nginx/sites-enabled/default
bash

Abre el archivo de configuración de tu servidor Mastodon:

nano /etc/nginx/sites-available/mastodon
bash

Introduce tu nombre de dominio en example.com.

Descomenta las líneas ssl_certificate y ssl_certificate_key y sustituye las rutas con las de tu certificado SSL. Si usas el certificado de autofirma estándar, no se modifican las rutas:

ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
bash

Una vez hechos los cambios en la configuración, reinicia Nginx para aplicarlos:

systemctl reload nginx
bash

Paso 7: configurar los servicios de Systemd

Cuando actives los servidores de Systemd, la aplicación web de Mastodon y las funciones de streaming en tiempo real se activarán automáticamente cuando se inicie el servidor. Esto garantiza que tu servidor de Mastodon esté permanentemente disponible.

Copia las plantillas de servicio de Systemd de Mastodon en el directorio correspondiente:

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
bash

Si en algún momento has cambiado los valores predeterminados, comprueba que el nombre de usuario y la ruta de las plantillas de servicio son correctas:

$EDITOR /etc/systemd/system/mastodon-*.service
bash

Inicia y activa los servicios Systemd:

systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
bash
  • systemctl daemon-reload: actualiza la configuración de Systemd para tener en cuenta las nuevas plantillas de servicio.
  • systemctl enable –now mastodon-web mastodon-sidekiq mastodon-streaming: estos servicios se encargan de la aplicación web, el procesamiento en segundo plano y las funciones de streaming en tiempo real.

Paso 8: modificar las restricciones de caracteres

Al operar tu propio servidor de Mastodon tienes la libertad de hacer cambios que normalmente no son posibles en los servidores públicos. Un ejemplo es la modificación de la limitación de caracteres de los mensajes. Normalmente está fijada en 500 caracteres, pero puede aumentarse o reducirse.

Primero debes cambiar al usuario de Mastodon en la consola, y luego editar dos archivos.

En los siguientes archivos introduce el valor al que quieres limitar los caracteres:

  • compose_form.js en el directorio ~/live/app/javascript/mastodon/features/compose/components/
  • status_length_validator.rb en ~/live/app/validators/

En el archivo instance_serializer.rb del directorio ~/live/app/serializers/rest/ verás que está en las líneas de :languages, :registrations,: añade después :max_toot_chars,.

Bajo la línea que empieza por private introduce el siguiente código donde escribes el valor deseado:

def max_toot_chars
    1000
end
ruby

Una vez hechos estos cambios, reinicia los servicios de Mastodon desde el usuario root con el comando:

service mastodon-* restart
bash

Ahora podrás escribir mensajes con hasta 1000 caracteres.

Paso 9: función de moderación

La función de moderación en “Configuración > Moderación” de tu Mastodon Server te permite como administrador controlar el contenido y las actividades de usuarios en tu instancia con el fin de cumplir con las normas de la comunidad y eliminar contenido no deseado.

Puedes bloquear o desbloquear cuentas, dominios, direcciones IP o servidores de correo electrónico o eliminar cuentas de usuario. Además, puedes moderar el contenido publicado por los usuarios eliminando o editando mensajes inapropiados u ofensivos.

VPS gratis
Prueba un servidor virtual de forma gratuita durante 30 días

¡Prueba tu servidor virtual durante 30 días! Si lo solicitas, te reembolsaremos todos los gastos incurridos.

¿Le ha resultado útil este artículo?
Page top