Archive d’étiquettes pour : Mastodon



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.