Mastodon est un réseau social gratuit open source basé sur un protocole Web ouvert. Il a utilisé Ruby on Rails pour le back-end et React.js et Redux pour le front-end. Dans ce tutoriel, nous allons vous montrer comment installer Mastodon sur un serveur CentOS 7.
1. Mettez à jour votre serveur CentOS 7 et installez les packages nécessaires
Connectez-vous à votre VPS via SSH en tant qu'utilisateur sudo :
ssh userame@IP_Address
Une fois connecté, exécutez les commandes suivantes pour vous assurer que tous les packages installés sont à jour :
sudo yum update
Ensuite, installez les packages prérequis nécessaires à la construction de Mastodon avec la commande suivante :
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. Installez Node.js et Yarn
Nous installerons Node.js v8 LTS à partir du référentiel NodeSource qui dépend du référentiel EPEL activé.
Pour activer le référentiel EPEL sur votre VPS CentOS 7, exécutez la commande suivante :
sudo yum install epel-release curl
Une fois le référentiel EPEL activé, exécutez la commande suivante pour ajouter le référentiel Node.js v8 LTS :
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
Une fois le référentiel NodeSource activé, installez Node.js avec la commande suivante :
sudo yum install nodejs
Activez le référentiel Yarn RPM avec :
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
Installez la dernière version de Yarn avec :
sudo yum install yarn
3. Installer PostgreSQL
Activez le dépôt 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
Pour installer le serveur PostgreSQL, exécutez la commande suivante :
sudo yum install postgresql96-server postgresql96-contrib postgresql96-devel
Une fois l'installation terminée, créez un nouveau cluster de base de données avec :
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Démarrez le service PostgreSQL et activez-le pour qu'il démarre au démarrage :
sudo systemctl enable postgresql-9.6 sudo systemctl start postgresql-9.6
Connectez-vous au shell PostgreSQL :
sudo -u postgres psql
Créez un nouvel utilisateur pour l'instance Mastodon :
CREATE USER mastodon CREATEDB;
4. Installer Redis
L'installation de Redis est assez simple, il suffit d'exécuter la commande suivante :
sudo yum install redis
5. Créer un nouvel utilisateur système
Pour créer un nouvel utilisateur système pour Mastodon, exécutez la commande suivante :
sudo adduser mastodon
6. Installer Ruby
Nous allons installer Ruby en utilisant le script Rbenv.
Avant de cloner le référentiel rbenv, passez au nouvel utilisateur mastodonte :
sudo su - mastodon
Configurez rbenv et ruby-build avec les commandes suivantes :
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
Une fois que rbenv et ruby-build sont configurés, installez la dernière version de Ruby avec "
rbenv install 2.5.1 rbenv global 2.5.1
Pour vérifier que tout est fait correctement, utilisez la commande ruby --version
.
Le résultat doit ressembler à ce qui suit :
ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
7. Clonez le dépôt git de Mastodon et installez les dépendances
Les commandes suivantes sont également exécutées en tant qu'utilisateur Mastodon.
Clonez le dépôt mastodon git dans le ~/live
répertoire et paiement vers la dernière branche stable 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)
Installez les dépendances bundler et ruby avec les commandes suivantes :
gem install bundler bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
Installez les dépendances node.js avec :
yarn install --pure-lockfile
8. Configurer Mastodonte
Les commandes suivantes sont exécutées en tant qu'utilisateur Mastodon.
Accédez au répertoire d'installation de Mastodon et exécutez la commande suivante pour démarrer l'installation :
cd ~/live RAILS_ENV=production bundle exec rake mastodon:setup
Le programme d'installation vous posera plusieurs questions, générera un nouveau secret d'application, configurera le schéma de la base de données et compilera les actifs.
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. Créer des unités systemd Mastodon
Les commandes suivantes sont exécutées en tant qu'utilisateur root ou sudo.
Ouvrez votre éditeur de texte et créez les fichiers unitaires systemd suivants :
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
Activer et démarrer tous les services :
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. Installer et configurer Nginx
Pour installer Nginx, exécutez la commande suivante :
sudo yum install nginx
Une fois nginx installé, créez un bloc serveur pour votre domaine. N'oubliez pas de définir le chemin d'accès correct au certificat SSL et à la clé privée.
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; }
Enregistrez le fichier et redémarrez le service nginx :
sudo systemctl restart nginx
Vous pouvez maintenant ouvrir votre navigateur, saisir votre domaine et le formulaire de connexion Mastodon vous sera présenté.
Bien sûr, vous n'êtes pas obligé d'installer Mastodon sur CentOS 7, si vous utilisez l'un de nos services d'hébergement géré, auquel cas vous pouvez simplement demander à nos administrateurs Linux experts d'installer Mastodon pour vous. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.
PS . Si vous avez aimé cet article, sur Comment installer Mastodon sur CentOS 7 partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons à gauche ou laissez simplement une réponse ci-dessous. Merci.