Cómo instalar la Red Social Mastodon en Ubuntu 22.04
Mastodon es un software sin cargo y de código rajado para ejecutar servicios de redes sociales autoalojados. Ofrece funciones de microblogging que te permiten seguir a otros usuarios y informar mensajes e imágenes con Mastodon. Está escrito en Ruby y JavaScript y admite publicaciones de audio, vídeo e imágenes, descripciones de accesibilidad, encuestas, avisos de contenido, avatares animados, emojis personalizados y mucho más. Mastodon ofrece una aplicación para varias plataformas como Android e iOS.
En este tutorial, te mostraremos cómo instalar Mastodon en Ubuntu 22.04.
Aggiornamento: La vademécum se actualizó y se volvió a probar con éxito el 30/11/2022 para aclarar la instalación y solucionar los problemas mencionados en los comentarios, ya que algunas versiones de software habían cambiado desde que se escribió la vademécum.
Requisitos previos
- Un servidor que ejecute Ubuntu 22.04.
- Tu servidor tiene configurada una contraseña de root.
- Un nombre de dominio válido apuntando a la dirección IP de tu servidor.
Cómo originarse
En primer circunstancia, se recomienda poner al día todos los paquetes de tu sistema con la última traducción. Puedes hacerlo ejecutando el ulterior comando:
apt update -y apt upgrade -y
Luego de poner al día tu sistema, necesitarás instalar algunas dependencias requeridas por Mastodon. Puedes instalarlas todas con el ulterior comando:
apt install git software-properties-common make apt-transport-https redis-server optipng pngquant jhead jpegoptim gifsicle imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file 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 libidn11-dev libicu-dev libjemalloc-dev -y
Una vez instaladas todas las dependencias, puedes advenir al ulterior paso.
Instalar Node.js
Mastodon requiere que Node.js esté instalado en tu sistema. Para instalar Node.js, añade el repositorio de Node.js a tu servidor utilizando el ulterior comando:
curl -sL https://deb.nodesource.com/setup_16.x | bash -
Una vez añadido el repositorio, instala la traducción 16 de Node.js con el ulterior comando:
apt install nodejs -y
A continuación, descarga y añade la esencia GPG de Yarn y habilita el repositorio con el ulterior comando:
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | tee /etc/apt/sources.list.d/yarn.list
Una vez añadida, actualiza el repositorio e instala Yarn con los siguientes comandos:
apt update -y apt -y install yarn
Cuando hayas terminado, puedes advenir al ulterior paso.
Instalar y configurar PostgreSQL
Mastodon utiliza PostgreSQL como almohadilla de datos. Puedes instalar la última traducción de PostgreSQL con el ulterior comando:
apt install -y postgresql postgresql-contrib
Tras instalar PostgreSQL, inicia el servicio PostgreSQL con el ulterior comando:
systemctl start postgresql
A continuación, inicia sesión en el intérprete de comandos PostgreSQL:
sudo -u postgres -i psql
A continuación, crea una almohadilla de datos para Mastodon:
CREATE DATABASE mastodon;
A continuación, crea un beneficiario de almohadilla de datos con el ulterior comando:
CREATE USER mastodon;
A continuación, establece una contraseña para el beneficiario Mastodon con el ulterior comando:
ALTER USER mastodon WITH ENCRYPTED PASSWORD 'password';
A continuación, establece el permiso adecuado para crear la almohadilla de datos:
ALTER USER mastodon createdb;
A continuación, establece este beneficiario como propietario de la almohadilla de datos Mastodon:
ALTER DATABASE mastodon OWNER TO mastodon;
Por zaguero, sal del intérprete de comandos PostgreSQL con el ulterior comando:
q
Instalar Ruby
Mastodon todavía requiere tener instalada la traducción 2.5+ de Ruby en tu servidor. Si no está instalada, puedes instalarla con el ulterior comando:
apt install -y ruby ruby-dev
Tras la instalación, puedes efectuar la traducción de Ruby con el ulterior comando:
ruby -v
Obtendrás la traducción de Ruby en la ulterior salida:
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
Instalar y configurar Mastodon
A continuación, tendrás que crear un beneficiario dedicado para ejecutar Mastodon. Puedes crearlo con el ulterior comando:
adduser mastodon --system --group --disabled-login
A continuación, descarga la última traducción de Mastodon del repositorio Git:
git clone https://github.com/tootsuite/mastodon.git
A continuación, crea un directorio /var/www/ para Mastodon si no existe.
mkdir -p /var/www/
A continuación, mueve el directorio Mastodon al directorio /var/www:
mv mastodon/ /var/www/
A continuación, cambia la propiedad del directorio Mastodon a mastodon:
chown -R mastodon:mastodon /var/www/mastodon/
A continuación, navega hasta el directorio /var/www/mastodon y comprueba la última rama:
cd /var/www/mastodon/ sudo -u mastodon git checkout v4.0.2
Obtendrás el ulterior resultado:
Note: switching to 'v4.0.2'. You are in 'detached HEAD' state. You can look around, make positivo changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 03b0f3ac8 Bump version to 4.0.2 (#20725)
A continuación, instala todas las dependencias necesarias para Mastodon con el ulterior comando:
gem install bundler sudo -u mastodon bundle config deployment 'true' sudo -u mastodon bundle config without 'development test' sudo -u mastodon bundle install -j$(getconf _NPROCESSORS_ONLN)
Por zaguero, ejecuta el asistente de instalación de Mastodon con el ulterior comando:
sudo -u mastodon RAILS_ENV=production bundle exec rake mastodon:setup
Se te pedirá que indiques tu nombre de dominio:
Type application/netcdf is already registered as a variant of application/netcdf. Your instance is identified by its domain name. Changing it afterward will break things. Domain name: mastodon.linuxbuz.com
Escribe tu nombre de dominio y pulsa la tecla Intro. Se te pedirá que habilites el modo monousuario:
Single user mode disables registrations and redirects the landing page to your public profile. Do you want to enable single user mode? No
Escribe No y pulsa la tecla Intro. Se te pedirá que utilices Docker para ejecutar Mastodon:
Are you using Docker to run Mastodon? no
Escribe no y pulsa la tecla Intro. Se te pedirá que proporciones los detalles de la almohadilla de datos PostgreSQL:
PostgreSQL host: /var/run/postgresql PostgreSQL port: 5432 Name of PostgreSQL database: mastodon Name of PostgreSQL user: mastodon Password of PostgreSQL user:
Proporciona los detalles de tu almohadilla de datos PostgreSQL y pulsa la tecla Intro. Se te pedirán los datos del servidor Redis:
Database configuration works! ???? Redis host: localhost Redis port: 6379 Redis password:
Indica el host y el puerto de Redis, deja en blanco el campo de la contraseña y pulsa la tecla Intro. Se te pedirá que almacenes los archivos en la estrato:
Redis configuration works! ???? Do you want to store uploaded files on the cloud? No
Escribe No y pulsa la tecla Intro. Se te pedirá que envíes un correo electrónico desde localhost:
Do you want to send e-mails from localhost? yes E-mail address to send e-mails "from": Mastodon <[email protected]> Send a test e-mail with this configuration right now? no
Introduce todos los datos necesarios y pulsa la tecla Intro. Se te pedirá que guardes todas las configuraciones:
This configuration will be written to .env.production Save configuration? (Y/n) Y
Escribe Y y pulsa la tecla Intro. Se te pedirá que prepares la almohadilla de datos:
Now that configuration is saved, the database schema must be loaded. If the database already exists, this will erase its contents. Prepare the database now? (Y/n) Y
Escribe Y y pulsa la tecla Intro. Se te pedirá que compiles los activos CSS/JS.
The final step is compiling CSS/JS assets. This may take a while and consume a lot of RAM. Compile the assets now? (Y/n) Y
Escribe Y y pulsa la tecla Intro. Se te pedirá que configures una contraseña de administrador:
All done! You can now power on the Mastodon server ???? Do you want to create an admin user straight away? Yes Username: admin E-mail: [email protected] You can login with the password: 9835fbd5e569ad149610862178580da7 You can change your password merienda you login.
Introduce tu nombre de beneficiario y correo electrónico de administrador y pulsa la tecla Intro para finalizar la instalación.
Crear archivo de servicio Systemd para Mastodon
Mastodon viene con un archivo systemd preconfigurado para mandar los servicios de Mastodon. Tendrás que copiarlos en el directorio /etc/sysetmd/system/.
cp /var/www/mastodon/dist/mastodon*.service /etc/systemd/system/
A continuación, tendrás que cambiar el directorio de trabajo de Mastodon de /home/mastodon/live/ a /var/www/mastodon/ en el archivo de servicio. Puedes hacerlo con el ulterior comando:
sed -i 's/home/mastodon/live/var/www/mastodon/g' /etc/systemd/system/mastodon-*.service
Incluso tendrás que cambiar /home/mastodon/.rbenv/shims/bundle por /usr/locorregional/bin/bundle en los archivos de servicio:
sed -i 's/home/mastodon/.rbenv/shims/usr/locorregional/bin/g' /etc/systemd/system/mastodon-*.service
A continuación, recarga el systemd para aplicar los cambios de configuración:
systemctl daemon-reload
A continuación, inicia y activa todos los servicios de Mastodon:
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
Puedes comprobar el estado de todos los servicios con el ulterior comando:
systemctl status mastodon-web mastodon-sidekiq mastodon-streaming
Salida:
? mastodon-web.service - mastodon-web Loaded: loaded (/etc/systemd/system/mastodon-web.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-11-30 03:07:13 UTC; 19s ago Main PID: 10201 (ruby3.0) Tasks: 29 (limit: 464140) Memory: 249.0M CGroup: /system.slice/mastodon-web.service ??10201 "puma 5.6.5 (tcp://127.0.0.1:3000) [mastodon]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ??10228 "puma: cluster worker 0: 10201 [mastodon]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""> ??10232 "puma: cluster worker 1: 10201 [mastodon]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""> Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Max threads: 5 Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Environment: production Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Master PID: 10201 Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Workers: 2 Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Restarts: (?) hot (?) phased Nov 30 03:07:15 ubuntu22042 bundle[10201]: [10201] * Preloading application Nov 30 03:07:27 ubuntu22042 bundle[10201]: [10201] * Listening on http://127.0.0.1:3000 Nov 30 03:07:27 ubuntu22042 bundle[10201]: [10201] Use Ctrl-C to stop Nov 30 03:07:27 ubuntu22042 bundle[10201]: [10201] - Worker 0 (PID: 10228) booted in 0.04s, phase: 0 Nov 30 03:07:27 ubuntu22042 bundle[10201]: [10201] - Worker 1 (PID: 10232) booted in 0.01s, phase: 0 ? mastodon-sidekiq.service - mastodon-sidekiq Loaded: loaded (/etc/systemd/system/mastodon-sidekiq.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-11-30 03:07:13 UTC; 19s ago Main PID: 10199 (ruby3.0) Tasks: 32 (limit: 464140) Memory: 247.1M CGroup: /system.slice/mastodon-sidekiq.service ??10199 "sidekiq 6.5.7 mastodon [0 of 25 busy]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""> Nov 30 03:07:29 ubuntu22042 bundle[10199]: 2022-11-30T03:07:29.202Z pid=10199 tid=cc7 uniquejobs=upgrade_locks INFO: Start - Converting v6 lo> Nov 30 03:07:29 ubuntu22042 bundle[10199]: 2022-11-30T03:07:29.202Z pid=10199 tid=cc7 uniquejobs=upgrade_locks INFO: Done - Converting v6 loc> Nov 30 03:07:29 ubuntu22042 bundle[10199]: 2022-11-30T03:07:29.202Z pid=10199 tid=cc7 uniquejobs=upgrade_locks INFO: Start - Deleting v6 keys Nov 30 03:07:29 ubuntu22042 bundle[10199]: 2022-11-30T03:07:29.203Z pid=10199 tid=cc7 uniquejobs=upgrade_locks INFO: Done - Deleting v6 keys
Por defecto, Mastodon audición en el puerto 3000. Puedes comprobarlo con el ulterior comando:
ss -lnpt | grep 3000
Salida:
LISTEN 0 1024 127.0.0.1:3000 0.0.0.0:* users:(("ruby3.0",pid=10232,fd=5),("ruby3.0",pid=10228,fd=5),("ruby3.0",pid=10201,fd=5))
Configurar Nginx como proxy inverso
En primer circunstancia, instala el paquete del servidor web Nginx con el ulterior comando:
apt install nginx -y
A continuación, copia el archivo de configuración del host supuesto Nginx en el directorio Nginx:
cp /var/www/mastodon/dist/nginx.conf /etc/nginx/conf.d/mastodon.conf
A continuación, edita el archivo de configuración del host supuesto Mastodon:
nano /etc/nginx/conf.d/mastodon.conf
Rebusca la ulterior itinerario tanto en el agrupación del servidor del puerto 80 como en el agrupación del servidor del puerto 443:
server_name example.com;
Sustitúyelos por la ulterior itinerario:
server_name mastodon.linuxbuz.com;
Rebusca la ulterior itinerario tanto en el agrupación del servidor del puerto 80 como en el agrupación del servidor del puerto 443.
root /home/mastodon/live/public;
Sustitúyela por la ulterior itinerario:
root /var/www/mastodon/public;
Encuentra las dos líneas siguientes.
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Cámbialas por las siguientes, para que Nginx utilice temporalmente un certificado TLS autofirmado. Más delante obtendremos un certificado Let’s Encrypt válido.
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
Escolta y cierra el archivo y, a continuación, crea un directorio de gusto para Nginx:
mkdir -p /var/nginx/cache/
A continuación, comprueba si Nginx tiene algún error de sintaxis:
nginx -t
Obtendrás la ulterior salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
Asegura Mastodon con Let’s Encrypt SSL
Para habilitar HTTPS en el sitio web de Mastodon, necesitarás instalar el paquete Certbot en tu servidor.
Primero, instala el mandatario de paquetes Snap con el ulterior comando:
apt install snapd
A continuación, actualiza el paquete Snap a la última traducción:
snap install core snap refresh core
A continuación, instala el paquete Certbot con el ulterior comando:
snap install --classic certbot
A continuación, crea un enlace simbólico para el binario de Certbot en la ubicación del sistema:
ln -s /snap/bin/certbot /usr/bin/certbot
A continuación, ejecuta el ulterior comando para descargar e instalar los certificados SSL de Let’s Encrypt:
certbot --nginx -d mastodon.linuxbuz.com
Se te pedirá que proporciones tu dirección de correo electrónico y que aceptes las condiciones del servicio:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to biombo): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, merienda your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y
Escribe Y y pulsa la tecla Intro para descargar e instalar los certificados SSL para tu dominio:
Account registered. Requesting a certificate for mastodon.linuxbuz.com Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/mastodon.linuxbuz.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/mastodon.linuxbuz.com/privkey.pem This certificate expires on 2023-02-28. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for mastodon.linuxbuz.com to /etc/nginx/conf.d/mastodon.conf Congratulations! You have successfully enabled HTTPS on https://mastodon.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accede a la Interfaz Web de Mastodon
Ahora, abre tu navegador web y escribe la URL https://mastodon.linuxbuz.com. Serás redirigido a la ulterior página:
Haz clic en el rama Iniciar sesión. Deberías ver la página de inicio de sesión de Mastodon:
Ahora, proporciona tu correo electrónico de administrador y la contraseña que creaste anteriormente, y haz clic en el rama Iniciar sesión. Deberías ver el panel de control de Mastodon en la ulterior página:
Enhorabuena! has instalado y configurado correctamente Mastodon en el servidor Ubuntu 22.04. Ahora puedes crear fácilmente tu propia red social utilizando Mastodon. No dudes en preguntarme si tienes alguna duda.