Mastodon es una red social gratuita de código abierto basada en un protocolo web abierto. Usó Ruby on Rails para el back-end y React.js y Redux para el front-end. En este tutorial, le mostraremos cómo instalar Mastodon en un servidor CentOS 7.
1. Actualice su servidor CentOS 7 e instale los paquetes necesarios
Inicie sesión en su VPS a través de SSH como usuario sudo:
ssh userame@IP_Address
Una vez que haya iniciado sesión, emita los siguientes comandos para asegurarse de que todos los paquetes instalados estén actualizados:
sudo yum update
A continuación, instale los paquetes de requisitos previos necesarios para construir Mastodon con el siguiente comando:
sudo yum install curl git gpg gcc git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make autoconf automake libtool bison curl sqlite-devel ImageMagick libxml2-devel libxslt-devel gdbm-devel ncurses-devel glibc-headers glibc-devel libicu-devel libidn-devel protobuf-devel protobuf
2. Instale Node.js y Yarn
Instalaremos Node.js v8 LTS desde el repositorio de NodeSource, que depende de que el repositorio de EPEL esté habilitado.
Para habilitar el repositorio EPEL en su CentOS 7 VPS, emita el siguiente comando:
sudo yum install epel-release curl
Una vez que el repositorio EPEL esté habilitado, ejecute el siguiente comando para agregar el repositorio Node.js v8 LTS:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
Una vez que el repositorio de NodeSource esté habilitado, instale Node.js con el siguiente comando:
sudo yum install nodejs
Habilite el repositorio de Yarn RPM con:
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
Instale la última versión de Yarn con:
sudo yum install yarn
3. Instalar PostgreSQL
Habilite el repositorio de PostgreSQL:
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Para instalar el servidor PostgreSQL ejecute el siguiente comando:
sudo yum install postgresql96-server postgresql96-contrib postgresql96-devel
Una vez completada la instalación, cree un nuevo clúster de base de datos con:
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Inicie el servicio PostgreSQL y habilítelo para que se inicie en el arranque:
sudo systemctl enable postgresql-9.6 sudo systemctl start postgresql-9.6
Inicie sesión en el shell de PostgreSQL:
sudo -u postgres psql
Cree un nuevo usuario para la instancia de Mastodon:
CREATE USER mastodon CREATEDB;
4. Instalar Redis
Instalar Redis es bastante sencillo, simplemente ejecute el siguiente comando:
sudo yum install redis
5. Crear un nuevo usuario del sistema
Para crear un nuevo usuario del sistema para Mastodon, ejecute el siguiente comando:
sudo adduser mastodon
6. Instalar Rubí
Instalaremos Ruby usando el script Rbenv.
Antes de clonar el repositorio rbenv cambie al nuevo usuario mastodon:
sudo su - mastodon
Configure rbenv y ruby-build con los siguientes comandos:
cd git clone git://github.com/sstephenson/rbenv.git .rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_profile exec $SHELL git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile exec $SHELL
Una vez que tanto rbenv como ruby-build estén configurados, instale la última versión de Ruby con”
rbenv install 2.5.1 rbenv global 2.5.1
Para verificar que todo se haya hecho correctamente, use el comando ruby --version
.
El resultado debe ser similar al siguiente:
ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
7. Clone el repositorio git de Mastodon e instale las dependencias
Los siguientes comandos también se ejecutan como usuario mastodon.
Clone el repositorio git de mastodon en el ~/live
directorio y salida a la última rama estable de Mastodon:
cd 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)
Instale las dependencias de bundler y ruby con los siguientes comandos:
gem install bundler bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
Instale las dependencias de node.js con:
yarn install --pure-lockfile
8. Configurar mastodonte
Los siguientes comandos se ejecutan como usuario mastodon.
Cambie al directorio de instalación de Mastodon y ejecute el siguiente comando para iniciar la instalación:
cd ~/live RAILS_ENV=production bundle exec rake mastodon:setup
El instalador le hará varias preguntas, generará un nuevo secreto de aplicación, configurará el esquema de la base de datos y compilará los recursos.
Your instance is identified by its domain name. Changing it afterward will break things. Domain name: your-domain.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 Running `RAILS_ENV=production rails db:setup` ... Created database 'mastodon_production' ... Done! The final step is compiling CSS/JS assets. This may take a while and consume a lot of RAM. Compile the assets now? Yes Running `RAILS_ENV=production rails assets:precompile` ... yarn install v1.9.4 ... Using /home/mastodon/live/config/webpacker.yml file for setting up webpack paths Compiling… Compiled all packs in /home/mastodon/live/public/packs Rendering errors/500.html.haml within layouts/error Rendered errors/500.html.haml within layouts/error (2596.9ms) Done! 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: 80b4aA233adaeS86d095Scbf79302f81 You can change your password once you login.
9. Crear unidades del sistema Mastodon
Los siguientes comandos se ejecutan como usuario root o sudo.
Abra su editor de texto y cree los siguientes archivos de unidad systemd:
sudo nano /etc/systemd/system/mastodon-web.service
[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
sudo nano /etc/systemd/system/mastodon-sidekiq.service
[Unit] Description=mastodon-sidekiq After=network.target [Service] Type=simple User=mastodon WorkingDirectory=/home/mastodon/live Environment="RAILS_ENV=production" Environment="DB_POOL=5" ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q push -q mailers -q pull TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
sudo nano /etc/systemd/system/mastodon-streaming.service
[Unit] Description=mastodon-streaming After=network.target [Service] Type=simple User=mastodon WorkingDirectory=/home/mastodon/live Environment="NODE_ENV=production" Environment="PORT=4000" ExecStart=/usr/bin/npm run start TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
Habilite e inicie todos los servicios:
sudo systemctl enable mastodon-web.service sudo systemctl enable mastodon-sidekiq.service sudo systemctl enable mastodon-streaming.service sudo systemctl start mastodon-web.service sudo systemctl start mastodon-sidekiq.service sudo systemctl start mastodon-streaming.service
10. Instalar y configurar Nginx
Para instalar Nginx, ejecute el siguiente comando:
sudo yum install nginx
Una vez que nginx esté instalado, cree un bloque de servidor para su dominio. No olvide establecer la ruta correcta al certificado SSL y la clave privada.
sudo nano /etc/nginx/conf.d/your-domain.com.conf
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; listen [::]:80; server_name your-domain.com; root /home/mastodon/live/public; # Useful for Let's Encrypt 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; ssl_certificate /etc/ssl/certs/certificate.crt; ssl_certificate_key /etc/ssl/private/certificate.key; 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"; try_files $uri @proxy; } location /sw.js { add_header Cache-Control "public, max-age=0"; 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 off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; 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; }
Guarde el archivo y reinicie el servicio nginx:
sudo systemctl restart nginx
Ahora puede abrir su navegador, escribir su dominio y se le presentará el formulario de inicio de sesión de Mastodon.
Por supuesto, no es necesario que instale Mastodon en CentOS 7 si utiliza uno de nuestros servicios de alojamiento gestionado, en cuyo caso simplemente puede solicitar a nuestros administradores expertos de Linux que instalen Mastodon por usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.
PD . Si le gustó esta publicación, en Cómo instalar Mastodon en CentOS 7 compártalo con sus amigos en las redes sociales utilizando los botones de la izquierda o simplemente deje una respuesta a continuación. Gracias.