Servidor dedicado: Instalación de Mastodon
Esta guía fue creada con los siguientes productos:
(Los detalles pueden variar según los productos de diferentes proveedores, pero los conceptos principales permanecen igual)
Introducción
Mastodon es un software libre y de código abierto para ejecutar servicios de redes sociales autoalojados.
Cuenta con funciones de microblogging similares al servicio X (antes Twitter), que son ofrecidas por una gran cantidad de nodos independientes, conocidos como instancias,
cada una con su propio código de conducta, términos de servicio, política de privacidad, opciones de privacidad y políticas de moderación.
Esta guía se centra en la instalación en una distro basada en Debian. Ejemplos son Debian y Ubuntu. Esta guía varía según el sistema operativo que uses.
Requisitos del sistema
Si quieres montar una instancia de Mastodon en tu servidor, debes cumplir algunos requisitos:
- Dominio
- Servidor Linux
- Servidor de correo electrónico
Preparando tu sistema
Se recomienda desactivar el inicio de sesión por contraseña en SSH antes, ya que usar contraseña para acceder a servidores accesibles desde Internet es un riesgo de seguridad.
Puedes hacerlo en el panel web de tu servidor bajo Información -> Acceso y Seguridad -> Desactivar inicio de sesión por contraseña
Después, actualiza tus paquetes con el siguiente comando:
apt update && apt upgrade -y
A continuación, instala las dependencias de Mastodon:
# Repositorios del sistema
apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates
# Node.JS
curl -sL https://deb.nodesource.com/setup_16.x | bash -
# 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
Después de instalar las dependencias para Mastodon, instalamos los paquetes necesarios del sistema con estos dos comandos:
apt update
apt install -y \
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 redis-server redis-tools postgresql postgresql-contrib \
certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev
Deja que se instalen los paquetes, puede tardar un poco. Luego configuramos yarn, que es un gestor de paquetes para el Node.JS instalado previamente:
corepack enable
yarn set version stable
Instalando Ruby
Crearemos un usuario diferente, ya que facilita la gestión de versiones de Ruby. Primero crea un usuario llamado mastodon, con inicio de sesión deshabilitado. Luego cambia al usuario mastodon con estos comandos:
# Puedes dejar los campos vacíos
adduser --disabled-login mastodon
su - mastodon
Ahora instalamos el gestor de Ruby rbenv
, que facilita la gestión de versiones de Ruby. Instálalo con estos comandos:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
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
Cuando termines, instala Ruby y bundler con este comando:
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3
rbenv global 3.0.3
gem install bundler --no-document
Esto puede tardar, así que paciencia y aprovecha para tomarte un té o café. Cuando termines, vuelve al usuario root con exit
.
Configurando PostgreSQL
Mastodon usa PostgreSQL como sistema de base de datos. Configúralo así:
sudo -u postgres psql
Dentro del prompt de PostgreSQL, escribe:
CREATE USER mastodon CREATEDB;
\q
Configurando Mastodon
Cambia otra vez al usuario mastodon:
su - mastodon
Descarga la versión más reciente de Mastodon con git usando estos comandos:
git clone https://github.com/tootsuite/mastodon.git live && cd live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
Ahora instala las últimas dependencias para Ruby y Javascript con estos comandos:
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile
Crea el archivo de configuración de Mastodon con:
RAILS_ENV=production bundle exec rake mastodon:setup
Si la configuración de la base de datos falla, inicia sesión en postgres con sudo -u postgres psql
y sigue esta documentación:
Luego vuelve al usuario root con exit
.
Configurando el servidor web
Aquí viene la parte más delicada. Primero crea un registro A y/o AAAA en tu DNS que apunte directamente a tu servidor. Alternativamente, puedes apuntar el registro raíz a tu servidor.
Luego copia y habilita la configuración del servidor web de Mastodon con estos comandos:
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
Edita el archivo /etc/nginx/sites-available/mastodon
con un editor como vim o nano y cambia example.com por tu dominio.
Después, consigue un certificado SSL para tu dominio con este comando:
certbot --nginx -d <tu dominio>
Introduce tu dominio. Te pedirá varios datos. Al final te preguntará si quieres redirigir automáticamente las peticiones http a https, te recomendamos activarlo.
Creando un servicio Mastodon
Por último, creamos un servicio del sistema para Mastodon. Es bastante sencillo.
Copia la configuración del servicio por defecto al directorio de servicios de tu distribución con:
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
Ahora habilita y arranca los nuevos servicios con estos comandos:
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
Después de reiniciar, tu setup debería estar listo. ¡Disfruta tu instancia!