Cómo instalar la red social Mastodon en Debian 11

Mastodon es una red social gratuita, descentralizada y de código abierto similar a Twitter. En Mastodon, los usuarios pueden seguirse unos a otros y publicar mensajes, imágenes y vídeos. Pero a diferencia de Twitter, no existe un almacén central ni una autoridad para el contenido.

Con la arquitectura descentralizada, Mastodon opera a través de miles de servidores diferentes, cada uno gestionado por varios miembros de la comunidad. Puedes crear tu servidor Mastodon bajo tu dominio. También puedes seguir a otros usuarios con diferentes dominios en los otros servidores.

En este tutorial, instalarás Mastodon, una plataforma descentralizada de microblogging en un servidor Debian 11. Con esta guía, configurarás Mastodon con PostgreSQL como servidor de base de datos y Nginx como proxy inverso. Además, asegurarás la instalación de Mastodon mediante certificados SSL gratuitos de Letsencrypt.

Requisitos previos

Esta guía asume que dispones de los siguientes requisitos:

  • Un servidor Debian 11 – este ejemplo utiliza el último servidor Debian 11 con el nombre de host«mastodon-server» y la dirección IP«192.168.5.40«.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un nombre de dominio apuntado y resuelto a tu servidor Debian público: este ejemplo utiliza el subdominio «mastodon.hwdomain.io«.

Cuando hayas cumplido estos requisitos previos, estarás listo para pasar a la instalación de Mastodon.

Configuración de repositorios e instalación de dependencias

Mastodon es un software gratuito y de código abierto para ejecutar servicios de redes sociales autoalojados similares al servicio Twitter. Está escrito principalmente en Ruby, especialmente con el framework web Ruby on Rails y en JavaScript con Reac.js y el framework Redux.

En este primer paso, configurarás repositorios adicionales en tu sistema e instalarás dependencias de paquetes para la instalación de Mastodon. Esto incluye paquetes como build-essentials para compilar Ruby, PostgreSQL para el servidor de base de datos, Nginx como servidor web y proxy inverso, la herramienta certbot para adquirir certificados SSL a través de Letsencrypt, y el servidor Redis que se utilizará para el almacén de valores clave y la gestión de sesiones para Mastodon.

Antes de empezar, ejecuta el siguiente comando apt para instalar algunas dependencias básicas que se utilizarán para gestionar repositorios y paquetes.

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

Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

instalar paquetes básicos

A continuación, ejecuta el siguiente comando para añadir el repositorio Nodesource de Node.js. El paquete Node.js se utilizará aquí para compilar los activos estáticos de Mastodon. Y en el momento de escribir esto, la última versión de Mastodon requería al menos Node.js v16.

curl -sL https://deb.nodesource.com/setup_16.x | bash -

Entonces recibirás un resultado como el siguiente.

añadir repositorio nodejs

Una vez añadido el repositorio de Node.js, configurarás el repositorio para el gestor de paquetes Yarn. Este repositorio proporciona el paquete Yarn que se utilizará para instalar las dependencias de JavaScript.

Ejecuta el siguiente comando para añadir la clave GPG y el repositorio del gestor de paquetes Yarn.

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

El tercer repositorio que añadirás es el repositorio PostgreSQL. Ejecuta el siguiente comando para añadir el repositorio PostgreSQL a tu servidor Debian.

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

añadir yarn postgresql repo

Con los repositorios de Node.js, Yarn y PostgreSQL añadidos, ejecuta el siguiente comando apt para actualizar tu índice de paquetes.

sudo apt update

Recibirás un resultado como éste.

actualizar y refrescar repo

Por último, ejecuta el siguiente comando apt para instalar las dependencias de los paquetes que se utilizarán para instalar Mastodon.

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

Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.

instalar dependencias

Con esto, habrás instalado las dependencias básicas para Mastodon y añadido algunos repositorios de terceros a tu sistema Debian.

En los siguientes pasos, instalarás Ruby a través de rbenv – El gestor de versiones de Ruby.

Instalación de rbenv y Ruby

rbenv es una herramienta de gestión de versiones para el lenguaje de programación Ruby en sistemas tipo Unix. Es útil para cambiar entre varias versiones de Ruby en la misma máquina y para asegurarte de que cada proyecto en el que trabajas se ejecuta siempre en la versión correcta de Ruby.

Para empezar, ejecuta el siguiente comando para crear un nuevo usuario«mastodonte» en tu sistema. Este nuevo usuario se utilizará para ejecutar servicios relacionados con Mastodon, y el código fuente de Mastodon se almacenará en el directorio personal de este usuario.

sudo adduser --disabled-login mastodon

Durante el proceso, se te pedirá que configures los datos de usuario. Introduce tu información de usuario y la entrada y para confirmar y pulsa INTRO.

añadir nuevo usuario

Una vez creado el usuario‘mastodon‘, ejecuta el siguiente comando para iniciar sesión.

su - mastodon

A continuación, descarga el código fuente de rbenv mediante el siguiente comando git.

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

A continuación, ejecuta el siguiente comando para instalar rbenv en tu sistema.

cd ~/.rbenv && src/configure && make -C src

Recibirás una salida como ésta después de instalar rbenv.

descarga e instala rbenv

A continuación, ejecuta el siguiente comando para añadir el directorio ‘bin’ de rbenv al PATH del sistema y cargar rbenv cada vez que el usuario inicie una nueva sesión.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Ahora recarga tu shell actual recargando el archivo de configuración bashrc. A continuación, introduce el comando ‘rbenv’ en tu shell y pulsa TAB.

source ~/.bashrc
rbenv TAB

En la siguiente captura de pantalla, el rbenv está instalado y ahora puedes ejecutar el comando rbenv para instalar Ruby.

configuración rbenv

Antes de instalar Ruby, tienes que instalar el plugin rbenv llamado ‘ruby-build’. Este plugin proporciona herramientas de línea de comandos que simplifican la instalación de Ruby desde el código fuente, especialmente para sistemas operativos tipo UNIX.

Descarga el plugin ‘ ruby-build ‘ mediante el comando git.

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

descargar ruby_plugin

Una vez añadido el plugin ‘ruby-build’, ejecuta el siguiente comando para instalar Ruby v3.0.4, necesario para la versión actual de Mastodon.

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.4

Una vez finalizada la instalación, recibirás una salida similar a ésta.

instalar ruby

Ahora ejecuta el siguiente comando para establecer la versión de Ruby por defecto en 3.0.4. A continuación, verifícalo utilizando el comando ruby como se indica a continuación. Verás que Ruby v3.0.4 está instalado en tu sistema Debian.

rbenv global 3.0.4
ruby --version

verificar rubí

Por último, debes instalar un bundler como gestor de paquetes de Ruby. Ejecuta el comando gem que aparece a continuación para instalar ‘bundler’.

gem install bundler --no-document

Llegados a este punto, habrás finalizado la instalación de las dependencias de paquetes Mastodon en tu sistema. Has instalado Ruby 3.0.4 mediante el gestor de versiones de Ruby rbenv y has instalado bundler, la herramienta de gestión de paquetes de Ruby.

En los siguientes pasos, configurarás el usuario PostgreSQL que se utilizará para la instalación de Mastodon.

Configurar el servidor de base de datos PostgreSQL

En este paso, verificarás el servicio PostgreSQL para asegurarte de que está habilitado y en funcionamiento. A continuación, crearás un nuevo usuario/role PostgreSQL ‘mastodon’ a través del shell PostgreSQL.

Asegúrate de ejecutar estos comandos con usuario/privilegios de root.

Antes de empezar, ejecuta el siguiente comando systemctl para asegurarte de que el servicio PostgreSQL se está ejecutando y está habilitado.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Deberías recibir una salida similar a ésta.

verificar postgresql

Con PostgreSQL en ejecución, ejecuta el siguiente comando para acceder al shell de PostgreSQL.

cd /etc/postgresql
sudo -u postgres psql

Tras acceder al shell PostgreSQL, ejecuta la siguiente consulta PostgreSQL para crear un nuevo rol/usuario«mastodonte«. Asegúrate también de cambiar la contraseña por defecto por una nueva contraseña segura.

CREATE USER mastodon CREATEDB;
ALTER USER mastodon PASSWORD 'p4ssw0rd';

A continuación, ejecuta la siguiente consulta para asegurarte de que se crea el nuevo usuario/rol PostgreSQL. A continuación, introduce‘\q‘ para salir del intérprete de comandos PostgreSQL.

\du
\q

La siguiente salida muestra que se ha creado el nuevo usuario/rol PostgreSQL «mastodonte».

configurar rol/usuario postgresql

Una vez creado el usuario/rol PostgreSQL, estarás listo para instalar Mastodon en tu sistema Debian.

Instalar Mastodon

En este paso instalarás y configurarás Mastodon en tu servidor Debian. También instalarás las dependencias de Ruby y JavaScript para Mastodon. Y por último, empezarás a configurar Mastodon para su despliegue, lo que incluye la configuración del dominio, la configuración de la base de datos y redis, la configuración SMTP y también la configuración del usuario administrador de Mastodon.

Antes de empezar, inicia sesión con el usuario ‘mastodon’ mediante el siguiente comando.

su - mastodon

Ahora descarga el código fuente de Mastodon mediante el comando git y cambia la rama a la última versión estable de Mastodon. En el momento de escribir esto, la versión estable de Mastodon es la v4.0.2.

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

descargar mastodonte

A continuación, ejecuta el siguiente comando para configurar el despliegue de Mastodon e instalar las dependencias de Ruby.

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

La instalación de las dependencias Ruby de Mastodon llevará su tiempo. A continuación se muestra la salida similar que recibirás en tu terminal.

configurar el despliegue e instalar las dependencias

Una vez que hayas instalado las dependencias Ruby de Mastodon, ejecuta el siguiente comando yarn para instalar las dependencias JavaScript de Mastodon.

yarn install --pure-lockfile

Entonces recibirás una salida similar a ésta.

instalar dependencias javascript

Con las dependencias de Ruby y JavaScript instaladas, podrás configurar tu instalación de Mastodon.

Ejecuta el siguiente comando para configurar Mastodon para el entorno de producción.

RAILS_ENV=production bundle exec rake mastodon:setup

Se te preguntarán algunas configuraciones de Mastodon.

  • ¿El nombre de dominio de Mastodon? Este ejemplo utiliza el dominio «mastodon.hwdomain.io».
  • ¿Habilitar el modo monousuario? Introduce y.
  • ¿Usar Docker para ejecutar Mastodon? Introduce n para no.
  • Introduce el usuario y la contraseña de PostgreSQL y asegúrate de que aparece el mensaje ‘La configuración de la base de datos funciona’.
  • Configuración de Redis? déjala por defecto pulsando ENTER.
  • ¿Activar la subida de archivos a la nube? Introduce n para no.
  • ¿Permitir el envío de correos electrónicos desde localhost? Introduce y para sí confirmar o n para no. Esto depende de tu entorno, también puedes utilizar un servidor SMTP de terceros.
  • ¿Guardar la configuración? Introduce y para sí.
  • Para crear la base de datos. Introduce y para crear la base de datos Mastodon.
  • Introduce y para compilar activos y archivos estáticos para Mastodon.
  • ¿Crear usuario administrador? Introduce el nuevo usuario administrador y el correo electrónico para tu instalación de Mastodon. A continuación, recibirás la contraseña generada automáticamente en tu pantalla.

Configuración de Mastodon para el nombre de dominio, PostgreSQL, servidor Redis y servidor de correo SMTP.

configuración mastodóntica

Mastodon genera activos y archivos estáticos.

generar activos

Se crea el usuario mastodon admin y también se genera la contraseña a la pantalla del terminal.

configurar usuario administrador

Llegados a este punto, ya has terminado la instalación y configuración de Mastodon en Debian 11. En los siguientes pasos, configurarás Mastodon como un servicio systemd.

Ejecutar Mastodon como servicio Systemd

Por defecto, Mastodon proporciona una muestra de archivos de servicio systemd que están disponibles en el directorio‘/home/mastodon/live/dist/‘.

Ejecuta el siguiente comando para copiar los archivos de servicio de Mastodon en el directorio ‘/etc/systemd/system‘.

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

Ahora recarga el gestor systemd para aplicar los cambios en systemd.

sudo systemctl daemon-reload

Después, inicia y activa los servicios de Mastodon mediante la utilidad de comandos systemctl que se indica a continuación.

sudo systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
sudo systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming

configurar mastodon systemd

Los servicios de Mastodon deberían estar ahora en marcha y también habilitados. Verifícalo utilizando el siguiente comando systemctl.

sudo systemctl status mastodon-web mastodon-sidekiq mastodon-streaming

Recibirás una salida similar a las siguientes capturas de pantalla.

El servicio mastodon-web se está ejecutando y está habilitado.

mastodon-web service

El servicio mastodon-sidekiq también se está ejecutando y está habilitado.

mastodon sidekiq service

El servicio mastodon-streaming también se está ejecutando y está habilitado.

mastodonte streaming sertvice

Con todos los servicios de Mastodon en ejecución y activados, a continuación configurarás Nginx como proxy inverso para Mastodon y genera SSL Letsencrypt.

Configurar Nginx como proxy inverso

En este paso, configurarás el servidor web Nginx como proxy inverso para Mastodon. También generarás SSL Letsencrypt mediante el comando certbot y asegurarás el Mastodon mediante una conexión segura HTTPS.

Copia la configuración por defecto del bloque de servidores Nginx de Mastodon en ‘/etc/nginx/sites-available/mastodon’. A continuación, activa la nueva configuración del bloque del servidor ‘/etc/nginx/sites-available/mastodon‘.

sudo cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

A continuación, abre el archivo de configuración del bloque del servidor Mastodon ‘ /etc/nginx/sites-available/mastodon ‘ utilizando el comando nano del editor que aparece a continuación.

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

Cambia el nombre de dominio por defecto por tu dominio de Mastodon. En este ejemplo, el dominio para Mastodon es‘mastodon.hwdomain.io‘.

```ini

change domain

«`

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para generar certificados SSL desde Letsencrypt. Asegúrate de cambiar el nombre de dominio por tu dominio.

sudo certbot --nginx -d mastodon.hwdomain.io

configurar nginx

Una vez generados los certificados SSL, ejecuta el siguiente comando para verificar la configuración de Nginx. Si recibes un mensaje de salida como ‘test successful – syntax ok‘, significa que la configuración es correcta. A continuación, reinicia el servicio Nginx para aplicar los nuevos cambios.

sudo nginx -t
sudo systemctl restart nginx

verificar la configuración de nginx

Por último, ejecuta la siguiente utilidad de comandos systemctl para verificar el servicio Nginx y asegurarte de que el servicio se está ejecutando y está habilitado.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Recibirás una salida similar a ésta: El servicio Nginx se está ejecutando y está habilitado. El servicio Nginx se ejecutará automáticamente al arrancar.

verificar nginx

Una vez completada toda la configuración, ya puedes acceder a tu Mastodon a través del navegador web.

Acceder a la instalación de Mastodon

Abre tu navegador web y visita el nombre de dominio de tu instalación de Mastodon (es decir: https://mastodon.hwdomain.io/). Ahora verás la página de inicio por defecto de Mastodon.

página de mastodonte

Haz clic en el botón«Iniciar sesión» para verificar tu usuario.

Ahora introduce tu usuario admin y la contraseña generada para Mastodon. A continuación, haz clic en Iniciar sesión.

página de inicio de sesión de mastodonte

A continuación verás la página de inicio de usuario de Mastodon.

panel de usuario de mastodon

A continuación, haz clic en el menú Preferencias para acceder a la página de preferencias de usuario. A continuación, haz clic en el menú Administración de la parte izquierda. Y deberías obtener la página de administración de Mastodon que aparece a continuación.

Puedes ver los detalles de la pila de software que estás utilizando actualmente en tu instalación de Mastodon.

administración mastodóntica

Conclusión

¡Enhorabuena! Ya has terminado la instalación de la plataforma de microblogging Mastodon en un servidor Debian 11. Has instalado Mastodon con PostgreSQL como servidor de base de datos y Nginx como proxy inverso. También has asegurado el despliegue de Mastodon mediante conexiones HTTPS seguras.

Después de toda la instalación, ahora puedes configurar la regla de Mastodon para que admita la federación. También puedes añadir una capa de seguridad adicional a tu instalación de Mastodon.

Scroll al inicio