Cómo instalar la plataforma de redes sociales Mastodon en Debian 10

Mastodonte Iniciar sesión

Mastodon es una plataforma de redes sociales de código abierto muy similar a Twitter. Puedes seguir a otros usuarios y publicar mensajes e imágenes con Mastodon. Está escrito en Ruby y JavaScript, y cualquiera puede usarlo de forma privada y segura. Mastodon también proporciona una aplicación para varias plataformas como Android e iOS.

En este tutorial, le mostraremos cómo instalar Mastodon en Debian 10.

Requisitos

  • Un servidor que ejecuta Debian 10.
  • Una contrase√Īa de root est√° configurada en su servidor.
  • Un nombre de dominio v√°lido se apunta con la direcci√≥n IP de su servidor. En este tutorial, usaremos test.linuxbuz.com.

Empezando

Primero, se recomienda actualizar su sistema con la √ļltima versi√≥n. Puedes hacerlo ejecutando el siguiente comando:

apt-get update -y
apt-get upgrade -y

Después de actualizar su sistema, deberá instalar algunas dependencias requeridas por Mastodon. Puede instalarlos todos con el siguiente comando:

apt-get install software-properties-common dirmngr apt-transport-https ca-certificates curl gcc g++ make imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core libprotobuf-dev protobuf-compiler pkg-config autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev libidn11-dev libicu-dev libjemalloc-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev -y

Una vez que todas las dependencias estén instaladas, puede continuar con el siguiente paso.

Instalar Node.js

Mastodon requiere que Node.js versión 8.x e Yarn estén instalados en su sistema. Para instalar Node.js, agregue el repositorio de Node.js a su servidor con el siguiente comando:

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

Una vez que se haya agregado el repositorio, instale Node.js versión 8 con el siguiente comando:

apt-get install nodejs -y

A continuación, descargue y agregue la clave GPG de Yarn y habilite el repositorio con el siguiente comando:

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

Una vez agregado, actualice el repositorio e instale Yarn con los siguientes comandos:

apt-get update -y
apt-get install yarn -y

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar PostgreSQL

Mastodon usa PostgreSQL para almacenar sus datos. Puede instalar la √ļltima versi√≥n de PostgreSQL con el siguiente comando:

apt-get install postgresql postgresql-contrib -y

Una vez instalado, inicie sesión en PostgreSQL con el siguiente comando:

su - postgres
[email protected]:~$ psql 
psql (11.5 (Debian 11.5-1+deb10u1))
Type "help" for help.

A continuación, cree un usuario para Mastodon con el siguiente comando:

postgres=# CREATE USER mastodon CREATEDB;

A continuación, salga del shell de PostgreSQL con el siguiente comando:

postgres=#exit

Instalar rubí

Mastodon usa Ruby on Rails para el propósito de back-end. Primero, deberá crear un nuevo usuario del sistema para ejecutar el servidor Mastodon.

Puedes crearlo con el siguiente comando:

adduser --disabled-login --gecos 'Mastodon Server' mastodon

Una vez creado, inicie sesión en el usuario mastodon con el siguiente comando:

su - mastodon

A continuación, clone el repositorio rbenv con el siguiente comando:

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

A continuación, configure rbenv y ruby-build con los siguientes comandos:

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

Una vez que haya terminado, instale la √ļltima versi√≥n de Ruby con el siguiente comando:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.1

Una vez instalado, debería obtener el siguiente resultado:

Downloading ruby-2.6.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.bz2
Installing ruby-2.6.1...

Installed ruby-2.6.1 to /home/mastodon/.rbenv/versions/2.6.1

A continuación, configure el Ruby disponible globalmente con el siguiente comando:

rbenv global 2.6.1

A continuación, actualice la gema e instale el paquete con el siguiente comando:

gem update --system
gem install bundler --no-document

Una vez hayas terminado, puedes comprobar el Ruby con el siguiente comando:

ruby --version

Configurar mastodonte

Primero, inicie sesión en el usuario mastodon y descargue el repositorio git de mastodon con el siguiente comando: Publicidad

su - mastodon
git clone https://github.com/tootsuite/mastodon.git ~/live
cd ~/live

A continuación, echa un vistazo a la rama más reciente con el siguiente comando:

git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

Deberías obtener el siguiente resultado:

Note: checking out 'v2.9.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b 

HEAD is now at 06f906aca Bump version to 2.9.3

A continuación, instale todas las dependencias requeridas por Ruby y Node.js con el siguiente comando:

bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
yarn install --pure-lockfile

Ahora, configure Mastodon con el siguiente comando:

RAILS_ENV=production bundle exec rake mastodon:setup

Durante el proceso de configuración, se le harán varias preguntas. Responda todas las preguntas como se muestra a continuación:

Your instance is identified by its domain name. Changing it afterward will break things.
Domain name: test.linuxbuz.com

Single user mode disables registrations and redirects the landing page to your public profile.
Do you want to enable single user mode? No

Are you using Docker to run Mastodon? no

PostgreSQL host: /var/run/postgresql
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user: 
Database configuration works! ????

Redis host: localhost
Redis port: 6379
Redis password: 
Redis configuration works! ????

Do you want to store uploaded files on the cloud? No

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

This configuration will be written to .env.production
Save configuration? Yes

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? Yes

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: a9a78a4c2eb442d72eb946f94ebe9a00
You can change your password once you login.

Una vez que haya terminado, salga del usuario mastodon con el siguiente comando:

exit

Configurar Nginx para mastodonte

A continuaci√≥n, deber√° instalar Nginx y Certbot en su sistema. De forma predeterminada, la √ļltima versi√≥n de Certbot no est√° disponible en el repositorio predeterminado de Debian 10. Por lo tanto, deber√° agregar el repositorio de Certbot a su sistema.

Puedes agregarlo con el siguiente comando:

add-apt-repository ppa:certbot/certbot

A continuación, actualice el repositorio e instale Certbot con Nginx ejecutando el siguiente comando:

apt-get update -y
apt-get install nginx python-certbot-nginx -y

Una vez que ambos paquetes estén instalados, copie el archivo de configuración de Nginx del directorio de Mastodon a Nginx con el siguiente comando:

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon.conf

A continuación, habilite el archivo de configuración del host virtual de Mastodon con el siguiente comando:

ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/

De forma predeterminada, el archivo de configuración del host virtual de Mastodon se configura con el dominio ejemplo.com. Por lo tanto, deberá reemplazar el dominio example.com con su nombre de dominio en el archivo mastodon.conf. Puede reemplazarlo con el siguiente comando:

sed -i 's/example.com/test.linuxbuz.com/g' /etc/nginx/sites-enabled/mastodon.conf

A continuación, reinicie el servicio Nginx para aplicar la configuración:

systemctl restart nginx

A continuaci√≥n, descargue el certificado SSL gratuito de Let’s Encrypt y configure Nginx para usar este certificado ejecutando el comando certbot:

certbot --nginx -d test.linuxbuz.com

Esto descargar√° un certificado SSL gratuito de Let’s Encrypt y configurar√° el Nginx para su dominio test.linuxbuz.com.

Su archivo de configuración de Nginx para Mastodon ahora tiene el siguiente aspecto:

cat /etc/nginx/sites-enabled/mastodon.conf

Producción:

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;

server {
    if ($host = test.linuxbuz.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  listen [::]:80;
  server_name test.linuxbuz.com;
  root /home/mastodon/live/public;
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }


}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name test.linuxbuz.com;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  # Uncomment these lines once you acquire a certificate:
  # ssl_certificate     /etc/letsencrypt/live/test.linuxbuz.com/fullchain.pem;
  # ssl_certificate_key /etc/letsencrypt/live/test.linuxbuz.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/mastodon/live/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    add_header Strict-Transport-Security "max-age=31536000";
    try_files $uri @proxy;
  }

  location /sw.js {
    add_header Cache-Control "public, max-age=0";
    add_header Strict-Transport-Security "max-age=31536000";
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering on;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    proxy_cache CACHE;
    proxy_cache_valid 200 7d;
    proxy_cache_valid 410 24h;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    add_header X-Cached $upstream_cache_status;
    add_header Strict-Transport-Security "max-age=31536000";

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;

    ssl_certificate /etc/letsencrypt/live/test.linuxbuz.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/test.linuxbuz.com/privkey.pem; # managed by Certbot
}

Configurar el servicio Systemd para Mastodon

Nginx ahora está instalado y configurado para servir a Mastodon. A continuación, deberá configurar el archivo de servicio systemd para Mastodon. Para hacerlo, copie las plantillas de servicio de systemd del directorio de Mastodon:

cp /home/mastodon/live/dist/mastodon-web.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-sidekiq.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-streaming.service /etc/systemd/system/

A continuación, inicie todos los servicios y habilítelos para que se inicien después de reiniciar con el siguiente comando:

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

Acceder a la interfaz web de Mastodon

Ahora, abra su navegador web y escriba la URL https://prueba.linuxbuz.com. Ser√° redirigido a la siguiente p√°gina:

Mastodonte Iniciar sesión

Ahora, proporcione su correo electr√≥nico de administrador y la contrase√Īa que cre√≥ anteriormente y haga clic en el Tronco en bot√≥n. Deber√≠as ver la siguiente p√°gina:

Primeros pasos al usar Mastodon

Ahora, haga clic en el ¡VAMOS! botón. Deberías ver la siguiente página:

Vamos

Ahora, haga clic en el próximo botón. Deberías ver la siguiente página:

Tutorial Mastodonte

Ahora, haga clic en el FINALIZAR TUTORIAL! botón. Debería ver el tablero de Mastodon en la siguiente página:

Tablero de mastodonte

¡Felicidades! ha instalado y configurado con éxito Mastodon en el servidor Debian 10. Ahora puede crear fácilmente su propia red de medios sociales usando Mastodon. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

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