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_ip
bashCrea 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
bashPaso 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
bashNode.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
bashPostgreSQL
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
bashPaquetes de sistema
apt update
bashapt 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
bashYarn
corepack enable
yarn set version classic
bashRuby
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
bashAhora, cambia a la cuenta de usuario recién creada:
su - mastodon
bashInstala 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
bashUna 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
bashVuelve 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
bashMastodon 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
sqlPuedes 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
bashDescarga 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-lockfile
bashEjecuta el asistente de configuración de Mastodon:
RAILS_ENV=production bundle exec rake mastodon:setup
bashAhora 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
bashPaso 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
bashEl 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
bashCrea 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
bashAbre el archivo de configuración de tu servidor Mastodon:
nano /etc/nginx/sites-available/mastodon
bashIntroduce 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 nginx
bashPaso 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-*.service
bashInicia 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
rubyUna vez hechos estos cambios, reinicia los servicios de Mastodon desde el usuario root con el comando:
service mastodon-* restart
bashAhora 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.