/ 11 de junio de 2025

INTRODUCCIÓN

Mastodon es una red social libre y descentralizada, es decir puedes crear tu propio servidor de Mastodon y conectarte con las instancias(servidores) de otro usuarios e interaccionar con ellos. Es muy similar a Twitter pero de código abierto.

Requisitos para una instancia de mastodon:
SO:
Ubuntu 20.04
Ubuntu 24.04
Debian 12
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.

Paso 1: preparar el servidor

Actualizar el gestor de paquetes:
sudo apt update

Paso 2: instalar paquetes necesarios

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

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

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

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

Paquetes de sistema
apt update

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

Yarn
corepack enable
yarn set version classic

Ruby
sudo adduser mastodon

Añadir mastodon a sudo

sudo visudo

mastodon ALL=(ALL:ALL) ALL

reboot

su – mastodon


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


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

Vuelve con exit al usuario root.

Paso 3: configurar PostgreSQL

  sudo -u postgres psql

  CREATE USER mastodon CREATEDB;
  \q

Paso 4: instalar Mastodon

  su - 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)

  bundle config deployment 'true'

  bundle config without 'development test'

  bundle install -j$(getconf _NPROCESSORS_ONLN)

  yarn install --pure-lockfile

Ejecuta el asistente de configuración de Mastodon:

  RAILS_ENV=production bundle exec rake mastodon:setup

  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

Paso 5: instalar el certificado SSL

Para este paso es necesario tener ya creado un subdominio o tener un dominio además de abrir los puerto 80 y 443

  certbot certonly --nginx -d example.com

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


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


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

  nano /etc/nginx/sites-available/mastodon

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/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;


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

  sudo systemctl reload nginx

Paso 7: permisos

Agregar www-data al grupo mastodon:
sudo usermod -aG mastodon www-data

Asignar el grupo correctamente y dar permisos:

sudo chgrp -R mastodon /home/mastodon/live
sudo chmod -R g+rx /home/mastodon/live/public

Permitir acceso a directorios padres:

chmod g+x /home
chmod g+x /home/mastodon
chmod g+x /home/mastodon/live

Reinicia:

sudo systemctl restart nginx

sudo systemctl rest

Paso 8: 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/

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

Inicia y activa los servicios Systemd:

  systemctl daemon-reload
  systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Web Campus Infantil
Logo y enlace Web Campus Infantil 2024
Web SereIngeniera
Logo y enlace Web SereIngeniera 2024
PyconES 2022
Logo y enlace PyconES 2022
Comentarios recientes
Humor
Humor
Archivos
Categorías