Tener tu propio servidor de Mastodon te permite controlar to­ta­l­me­n­te tus datos y la mo­de­ra­ción de tu comunidad. Es una forma de lograr una ex­pe­rie­n­cia de usuario pe­r­so­na­li­za­da, sin pu­bli­ci­dad y con pro­te­c­ción de datos.

Re­qui­si­tos 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 cre­ci­mie­n­to 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 co­n­fi­gu­ra­ción necesaria.
  • Dominio o su­b­do­mi­nio: Necesitas un dominio o su­b­do­mi­nio propio para ide­n­ti­fi­car a tu servidor Mastodon. Así, los usuarios podrán encontrar tu instancia y co­ne­c­tar­se con ella.
Dominios di­s­po­ni­bles
  • Di­s­po­ni­bi­li­dad web continua: Tu servidor debe estar conectado co­n­s­ta­n­te­me­n­te para que otras personas puedan usar tu instancia de Mastodon.
  • Proveedor de correo ele­c­tró­ni­co: Mastodon envía no­ti­fi­ca­cio­nes y enlaces de co­n­fi­r­ma­ción por email por lo que necesitas un proveedor de correo ele­c­tró­ni­co. Puedes instalar tu propio servidor SMTP aunque pro­ba­ble­me­n­te un software de terceros sea más práctico. Mastodon re­co­mie­n­da por ejemplo Mailgun, Sparkpost o Sendgrid.
  • Object Storage Provider (opcional): Se re­co­mie­n­da usar un proveedor de al­ma­ce­na­mie­n­to de objetos co­m­pa­ti­ble con Amazon S3, ya que Mastodon guarda imágenes, vídeos y otros archivos mu­l­ti­me­dia en el servidor. Si cuentas con espacio de al­ma­ce­na­mie­n­to adicional te aseguras de que tu instancia funciona sin problemas y de tener su­fi­cie­n­te espacio para los datos de usuarios.
IONOS Cloud Object Storage
Al­ma­ce­na­mie­n­to seguro, escalable y rentable

Obtén el mejor precio en Object Storage de alta gama. Reduce costos sin co­m­pro­me­ter la potencia, al tiempo que proteges tus datos con se­r­vi­do­res de alta seguridad y control de acceso in­di­vi­dual.

Asimismo, tu servidor debe cumplir con los si­guie­n­tes re­qui­si­tos 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 (Po­s­t­gre­S­QL) para almacenar los datos de usuario y otra in­fo­r­ma­ción. Si tienes muchos usuarios, puede haber muchos accesos a la base de datos. Asegúrate de que tu base de datos esté lo su­fi­cie­n­te­me­n­te op­ti­mi­za­da y de tener su­fi­cie­n­tes 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 se­r­vi­do­res de Mastodon y las tarifas de IONOS co­rre­s­po­n­die­n­tes

Para decidir cuál es el paquete de VPS adecuado debes co­n­si­de­rar el posible número de usuarios de tu instancia de Mastodon. Según el tráfico que esperes te re­co­me­n­da­mos las si­guie­n­tes 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 pro­vee­do­res de hosting ofrecen la po­si­bi­li­dad de elegir el sistema operativo durante la co­n­fi­gu­ra­ción. Mastodon funciona mejor con Ubuntu 20.04 y Debian 11. Si es posible, decántate por uno de estos sistemas ope­ra­ti­vos. Cuando tu VPS esté co­n­fi­gu­ra­do, conéctate a tu servidor por SSH uti­li­za­n­do 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 co­r­ta­fue­gos con iptables para liberar solo los puertos HTTP(S) y SSH. Luego apunta el registro A de tu dominio o su­b­do­mi­nio 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 ne­ce­sa­rios

Mastodon requiere múltiples paquetes y de­pe­n­de­n­cias para funcionar co­rre­c­ta­me­n­te, por ejemplo: Node.js, Yarn, Po­s­t­gre­S­QL, 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

Po­s­t­gre­S­QL

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: co­n­fi­gu­rar Po­s­t­gre­S­QL

El servidor de Mastodon usa Po­s­t­gre­S­QL para almacenar y ad­mi­ni­s­trar datos. En el paso anterior ya in­s­ta­la­s­te el servidor de la base de datos. Pasa ahora al usuario de Postgre para acceder al shell de Po­s­t­gre­S­QL:

sudo -u postgres psql
bash

Mastodon inicia sesión en el servidor de la base de datos sin co­n­tra­se­ña, por lo que el nombre de usuario del sistema de Linux y el de la base de datos deben coincidir. Ejecuta los si­guie­n­tes comandos en Po­s­t­gre­S­QL para crear la base de datos:

CREATE USER mastodon CREATEDB;
\q
sql

Puedes mejorar el re­n­di­mie­n­to de tu base de datos Po­s­t­gre­S­QL ajustando los recursos de sistema di­s­po­ni­bles. Para ello, una he­rra­mie­n­ta útil es el generador de co­n­fi­gu­ra­cio­nes pgTune, donde in­tro­du­cie­n­do datos como la cantidad de núcleos de la CPU y el tamaño de la RAM recibes una co­n­fi­gu­ra­ción op­ti­mi­za­da Po­s­t­gre­S­QL 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 de­pe­n­de­n­cias de Ruby y Ja­va­S­cri­pt:

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

Ejecuta el asistente de co­n­fi­gu­ra­ción de Mastodon:

RAILS_ENV=production bundle exec rake mastodon:setup
bash

Ahora se te pedirán diversos ajustes que fi­na­l­me­n­te 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
  • Po­s­t­gre­S­QL host: default - Enter
  • Po­s­t­gre­S­QL port: default - Enter
  • Name of Po­s­t­gre­S­QL database: default - Enter
  • Name of Po­s­t­gre­S­QL user: default - Enter
  • Password of Po­s­t­gre­S­QL 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 au­the­n­ti­ca­tion: plain
  • SMTP OpenSSL verify mode: none
  • E-mail address to send e-mails “from”: no­r­ma­l­me­n­te como el login de SMTP
  • Send a test e-mail with this co­n­fi­gu­ra­tion right now?: Y
  • Send test e-mail to: indicar dirección para recibir correos
  • Save co­n­fi­gu­ra­tion?: 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 ce­r­ti­fi­ca­do SSL

Los se­r­vi­do­res VPS de IONOS ya incluyen por defecto un ce­r­ti­fi­ca­do SSL. Si el paquete que has elegido no tiene ce­r­ti­fi­ca­do, puedes in­s­ta­lar­lo fá­ci­l­me­n­te.

Let’s Encrypt ofrece ce­r­ti­fi­ca­dos SSL de manera gratuita, que además se instalan y renuevan fá­ci­l­me­n­te.

certbot certonly --nginx -d example.com
bash

El ce­r­ti­fi­ca­do se guardará en la carpeta /etc/letsencrypt/live/example.com/ de tu Mastodon Server.

Paso 6: co­n­fi­gu­rar Nginx

Copia la plantilla de co­n­fi­gu­ra­ción de Nginx del di­re­c­to­rio de Mastodon y pégala en el di­re­c­to­rio 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 co­n­fi­gu­ra­ción en sites-enabled para activarlo y elimina la co­n­fi­gu­ra­ció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 co­n­fi­gu­ra­ción de tu servidor Mastodon:

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

Introduce tu nombre de dominio en example.com.

De­s­co­me­n­ta las líneas ssl_certificate y ssl_certificate_key y sustituye las rutas con las de tu ce­r­ti­fi­ca­do SSL. Si usas el ce­r­ti­fi­ca­do 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 co­n­fi­gu­ra­ción, reinicia Nginx para apli­car­los:

systemctl reload nginx
bash

Paso 7: co­n­fi­gu­rar los servicios de Systemd

Cuando actives los se­r­vi­do­res de Systemd, la apli­ca­ción web de Mastodon y las funciones de streaming en tiempo real se activarán au­to­má­ti­ca­me­n­te cuando se inicie el servidor. Esto garantiza que tu servidor de Mastodon esté pe­r­ma­ne­n­te­me­n­te di­s­po­ni­ble.

Copia las pla­n­ti­llas de servicio de Systemd de Mastodon en el di­re­c­to­rio co­rre­s­po­n­die­n­te:

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

Si en algún momento has cambiado los valores pre­de­te­r­mi­na­dos, comprueba que el nombre de usuario y la ruta de las pla­n­ti­llas 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 co­n­fi­gu­ra­ción de Systemd para tener en cuenta las nuevas pla­n­ti­llas de servicio.
  • systemctl enable –now mastodon-web mastodon-sidekiq mastodon-streaming: estos servicios se encargan de la apli­ca­ción web, el pro­ce­sa­mie­n­to en segundo plano y las funciones de streaming en tiempo real.

Paso 8: modificar las re­s­tri­c­cio­nes de ca­ra­c­te­res

Al operar tu propio servidor de Mastodon tienes la libertad de hacer cambios que no­r­ma­l­me­n­te no son posibles en los se­r­vi­do­res públicos. Un ejemplo es la mo­di­fi­ca­ción de la li­mi­ta­ción de ca­ra­c­te­res de los mensajes. No­r­ma­l­me­n­te está fijada en 500 ca­ra­c­te­res, pero puede au­me­n­tar­se o reducirse.

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

En los si­guie­n­tes archivos introduce el valor al que quieres limitar los ca­ra­c­te­res:

  • compose_form.js en el di­re­c­to­rio ~/live/app/javascript/mastodon/features/compose/components/
  • status_length_validator.rb en ~/live/app/validators/

En el archivo instance_serializer.rb del di­re­c­to­rio ~/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 ca­ra­c­te­res.

Paso 9: función de mo­de­ra­ción

La función de mo­de­ra­ción en “Co­n­fi­gu­ra­ción > Mo­de­ra­ción” de tu Mastodon Server te permite como ad­mi­ni­s­tra­dor controlar el contenido y las ac­ti­vi­da­des de usuarios en tu instancia con el fin de cumplir con las normas de la comunidad y eliminar contenido no deseado.

Puedes bloquear o de­s­blo­quear cuentas, dominios, di­re­c­cio­nes IP o se­r­vi­do­res de correo ele­c­tró­ni­co o eliminar cuentas de usuario. Además, puedes moderar el contenido publicado por los usuarios eli­mi­na­n­do o editando mensajes inapro­pia­dos u ofensivos.

VPS gratis
Servidor virtual 30 días gratis

Co­n­vé­n­ce­te por ti mismo y elige un servidor virtual.

Ir al menú principal