GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

Cómo instalar Mastodon en Ubuntu 18.04

En este artículo, instalaremos Mastodon en un Ubuntu 18.04 VPS.

Mastodon es una plataforma de red gratuita y de código abierto que es muy similar a la famosa plataforma de redes sociales conocida como Twitter. Sin embargo, a diferencia de Twitter, no existe una autoridad central única y no hay publicidad. Mastodon está escrito en Ruby y JavaScript y su naturaleza de código abierto garantiza que permanezca abierto para que cualquiera lo use de forma privada y segura. Cualquiera puede crear un servidor Mastodon y construir sus propias comunidades con amigos. Además, Mastodon es compatible y está disponible a través de múltiples aplicaciones para iOS, Android y otras plataformas, lo que le permitirá mantenerse en contacto con sus amigos donde quiera que vaya. Comencemos con la instalación de Mastodon.

Requisitos previos:

Antes de comenzar la instalación, debemos cumplir con los requisitos previos:

  • Un servidor que ejecuta Ubuntu 18.04
  • acceso root o usuario con privilegios sudo
  • Un nombre de dominio (o un subdominio) para el servidor Mastodon, p. su_nombre_de_dominio.com

Comience iniciando sesión en su VPS usando el protocolo SSH.

Ejecutaremos todos los comandos como root en este tutorial, así que si no está usando la cuenta de root, cambie a root o use el comando sudo delante de los comandos. Alternativamente, asegúrese de ejecutar cada comando con el prefijo 'sudo'.

sudo -i

Paso 1:Agregar repositorios requeridos

En este paso, agregaremos los repositorios requeridos a nuestro sistema.

Para asegurarse de que curl esté instalado en su sistema, ejecute el comando:

apt install -y curl

Habilite el repositorio de NodeSource con el siguiente comando curl:

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

Usando los siguientes comandos importaremos la clave GPG del repositorio. Luego de esto, habilitaremos el repositorio Yarn APT:

curl -sS 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

Paso 2:Instalación de paquetes

Ahora instalaremos los paquetes de sistema necesarios para Mastodon:

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 libgdbm5 libgdbm-dev \
nginx redis-server redis-tools postgresql postgresql-contrib \
certbot yarn libidn11-dev libicu-dev libjemalloc-dev

Aquí hay una breve explicación de las dependencias que acabamos de instalar:

  • imagen mágica – Mastodon usa ImageMagick para operaciones relacionadas con imágenes
  • ffmpeg – Mastodon usa FFmpeg para la conversión de GIF a MP4
  • libprotobuf-dev y compilador protobuf – Mastodon los usa para detectar el idioma
  • nginx – Nginx se utiliza como servidor web
  • redis-* – Mastodon usa Redis para su almacén de estructura de datos en memoria
  • postgresql-* – Mastodon usa PostgreSQL como su base de datos SQL
  • nodos – El nodo se usa para la API de transmisión de Mastodon
  • hilo – Yarn es un administrador de paquetes de Node.js
  • Otros paquetes -dev, g++ – estos son necesarios para la compilación de Ruby usando ruby-build.

Paso 3:Instalación de Ruby

Ruby también es uno de los requisitos para Mastodon y lo instalaremos en este paso. Usaremos 'rbenv' para administrar las versiones de Ruby. Pero dado que rbenv debe instalarse para un usuario de Linux específico, lo primero que debemos hacer es crear un nuevo usuario de Mastodon. Para crear el usuario Mastodon ejecutaremos el comando:

adduser --disabled-login mastodon

Luego cambia al usuario mastodonte con el comando:

su - mastodon

Y con los siguientes comandos instalaremos rbenv y rbenv-build:

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

Después de terminar la instalación de rbenv y rbenv-build, podemos instalar la versión exacta de Ruby que necesitamos:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.0
rbenv global 2.6.0

Debido a que ruby_2.6.0 viene con un paquete que no es compatible con la versión predeterminada de la gema, necesitaremos actualizar la gema:

gem update --system

Además de esto, necesitamos instalar el paquete:

gem install bundler --no-document

Una vez que se han procesado todos los pasos, podemos volver al usuario raíz:

exit

Paso 4:Configuración de PostgreSQL

Crearemos un usuario de PostgreSQL que puede ser utilizado por el usuario de Linux con el mismo nombre de usuario sin requerir una contraseña separada. Este es un método muy simple que utiliza la autenticación de "identificación" que permite una fácil configuración y permite que los usuarios locales accedan a la base de datos sin contraseña.

Puede abrir el aviso de Postgres cambiando al usuario de Postgres y luego ejecutando psql comando, o puede ejecutar el siguiente comando:

sudo -u postgres psql

Ejecute el comando:

CREATE USER mastodon CREATEDB;

Salga del indicador de Postgres con:

\q

Paso 5:Configuración de Mastodon

Ya que hemos preparado el servidor para instalar Mastodon, ahora podemos continuar con la descarga del código de Mastodon. Cambia al usuario mastodonte con el comando:

su - mastodon

Usaremos git para clonar la última versión estable de Mastodon ejecutando los 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)

Paso 6:Instalación de las dependencias de Ruby y JavaScript

Estas son las últimas dependencias que necesitamos instalar. Usaremos bundler para instalar el resto de las dependencias de Ruby:

bundle install \
-j$(getconf _NPROCESSORS_ONLN) \
--deployment --without development test

y usa yarn para instalar las dependencias de Node.js:

yarn install --pure-lockfile

Paso 7:Generación de un archivo de configuración

Podemos ejecutar el asistente de configuración interactivo para generar el archivo de configuración:

RAILS_ENV=production bundle exec rake mastodon:setup

Ahora podemos volver a la cuenta raíz porque eso es todo lo que teníamos que hacer con el usuario mastodon.

exit

Paso 8:Configuración de Nginx

Mastodon viene por defecto con una plantilla de configuración de Nginx. En el próximo paso, usaremos una copia de esta plantilla de configuración y la ajustaremos a nuestras necesidades.

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

Luego edite /etc/nginx/sites-available/mastodon.conf y reemplace your_domain.com con su nombre de dominio real.

nano /etc/nginx/sites-available/mastodon.conf

Necesitamos recargar Nginx para que los cambios surtan efecto:

systemctl reload nginx

Si por alguna razón accidentalmente no tiene el archivo Nginx en esa ubicación, puede usar la siguiente configuración de Nginx y modificarla según sus necesidades.

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 {
listen 80;
listen [::]:80;
server_name your_domain.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 your_domain.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/your_domain.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/your_domain.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_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;
}

Recuerde guardar y salir del archivo, y reinicie Nginx como se muestra arriba para reconocer el nuevo archivo.

Paso 9:Adquirir un certificado SSL

Usaremos Let's Encrypt para generar un certificado SSL gratuito:

certbot certonly --webroot -d your_domain.com -w /home/mastodon/live/public/

No olvide reemplazar your_domain.com con su nombre de dominio real. Ahora podemos editar el /etc/nginx/sites-available/mastodon.conf archivo de configuración con:

nano /etc/nginx/sites-available/mastodon.conf

Descomente y modifique el ssl_certificate y ssl_certificate_key líneas. Una vez que terminemos de editar el archivo de configuración, debemos recargar Nginx una vez más para que nuestros cambios surtan efecto:

systemctl reload nginx

En este punto, si intenta acceder a su dominio en su navegador web preferido, no podrá ver Mastodon. Esto se debe a que nuestro proceso Mastodon aún no ha comenzado.

Paso 10:Configurar los servicios de systemd

En este paso, iniciaremos y habilitaremos el servicio Mastodon en el servidor. Simplemente podemos copiar las plantillas de servicio de systemd desde el directorio de Mastodon:

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

Podemos verificar dos veces y asegurarnos de que el nombre de usuario y las rutas sean correctos en estos archivos:

  • /etc/systemd/system/mastodon-web.service
  • /etc/systemd/system/mastodon-sidekiq.service
  • /etc/systemd/system/mastodon-streaming.service

Finalmente, podemos iniciar y habilitar los servicios systemd de Mastodon:

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

Si por casualidad faltan los archivos systemd, puede usar las siguientes configuraciones. Debe crear tres archivos de servicio systemd Mastodon.

Para el servicio de trabajadores web de Mastodon, ingrese lo siguiente:

nano /etc/systemd/system/mastodon-web.service

Coloca el siguiente código:

[Unit]
Description=mastodon-web
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Luego guarde y salga.

Para el servicio de cola en segundo plano de Mastodon:

nano /etc/systemd/system/mastodon-sidekiq.service

Pegue el siguiente código:

[Unit]
Description=mastodon-sidekiq
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=25"
Environment="MALLOC_ARENA_MAX=2"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 25
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Luego guarde y salga del archivo.

Para el servicio API de transmisión Mastodon:

nano /etc/systemd/system/mastodon-streaming.service

Coloca el siguiente código:

[Unit]
Description=mastodon-streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="NODE_ENV=production"
Environment="PORT=4000"
Environment="STREAMING_CLUSTER_NUM=1"
ExecStart=/usr/bin/node ./streaming
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Guardar y salir.

Deberá volver a cargar la lista de demonios de systemctl para que los cambios surtan efecto:

systemctl daemon-reload

Ahora debería poder iniciar y habilitar los servicios systemd de Mastodon como lo hicimos anteriormente.

¡Felicidades! Ha instalado correctamente Mastodon en su servidor. Puede acceder a él yendo a https://your_domain.com/.

En este artículo, le mostramos cómo instalar Mastodon en Ubuntu 18.04. Ahora puedes usar este conocimiento y crear tu red social privada con esta maravillosa aplicación.

Por supuesto, si usted es uno de nuestros clientes de Managed Ubuntu Hosting, no tiene que instalar Mastodon en su Ubuntu 18.04 VPS, simplemente pregúntele a nuestros administradores, siéntese y relájese. Nuestros administradores instalarán Mastodon en Ubuntu 18.04 inmediatamente.

PD. Si te gustó esta publicación sobre cómo instalar Mastodon en un Ubuntu 18.04 VPS, compártela con tus amigos en las redes sociales usando los botones a continuación, o simplemente deja un comentario en la sección de comentarios. Gracias.


Panels
  1. Cómo instalar ISPConfig 3 en Ubuntu 18.04

  2. Cómo instalar Webmin en Ubuntu 18.04

  3. Cómo instalar Panda3D en Ubuntu 10.04

  4. Cómo instalar Zabbix en Ubuntu

  5. Cómo instalar Observium en Ubuntu 14.04

Cómo instalar R en Ubuntu 20.04

Cómo instalar Go en Ubuntu 18.04

Cómo instalar R en Ubuntu 18.04

Cómo instalar qt en Ubuntu 20.04

Cómo instalar Go en Ubuntu 20.04

Cómo instalar Go en Ubuntu 22.04