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.
- 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_ipbashCrea 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 -ybashPaso 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-certificatesbashNode.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.listbashPostgreSQL
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.listbashPaquetes de sistema
apt updatebashapt 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-devbashYarn
corepack enable
yarn set version classicbashRuby
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 mastodonbashAhora, cambia a la cuenta de usuario recién creada:
su - mastodonbashInstala 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-buildbashUna 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-documentbashVuelve 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 psqlbashMastodon 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;
\qsqlPuedes 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 - mastodonbashDescarga 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)bashInstala las dependencias de Ruby y JavaScript:
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfilebashEjecuta el asistente de configuración de Mastodon:
RAILS_ENV=production bundle exec rake mastodon:setupbashAhora 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:
exitbashPaso 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.combashEl 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/mastodonbashCrea 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/defaultbashAbre el archivo de configuración de tu servidor Mastodon:
nano /etc/nginx/sites-available/mastodonbashIntroduce 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;bashUna vez hechos los cambios en la configuración, reinicia Nginx para aplicarlos:
systemctl reload nginxbashPaso 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/bashSi 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-*.servicebashInicia y activa los servicios Systemd:
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streamingbash- 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.jsen el directorio~/live/app/javascript/mastodon/features/compose/components/status_length_validator.rben~/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
endrubyUna vez hechos estos cambios, reinicia los servicios de Mastodon desde el usuario root con el comando:
service mastodon-* restartbashAhora 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.
¡Prueba tu servidor virtual durante 30 días! Si lo solicitas, te reembolsaremos todos los gastos incurridos.

