Mastodon est une plate-forme de réseau social open source très similaire à Twitter. Vous pouvez suivre d'autres utilisateurs et poster des messages et des images avec Mastodon. Il est écrit en Ruby et JavaScript, et n'importe qui peut l'utiliser de manière privée et sécurisée. Mastodon fournit également une application pour diverses plateformes comme Android et iOS.
Dans ce tutoriel, nous allons vous montrer comment installer Mastodon sur Debian 10.
Exigences
- Un serveur exécutant Debian 10.
- Un mot de passe root est configuré sur votre serveur.
- Un nom de domaine valide est pointé avec l'adresse IP de votre serveur. Dans ce tutoriel, nous utiliserons test.linuxbuz.com.
Mise en route
Tout d'abord, il est recommandé de mettre à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
apt-get update -y
apt-get upgrade -y
Après la mise à jour de votre système, vous devrez installer certaines dépendances requises par Mastodon. Vous pouvez tous les installer avec la commande suivante :
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
Une fois toutes les dépendances installées, vous pouvez passer à l'étape suivante.
Installer Node.js
Mastodon nécessite Node.js version 8.x et Yarn pour être installés sur votre système. Pour installer Node.js, ajoutez le référentiel Node.js à votre serveur avec la commande suivante :
curl -sL https://deb.nodesource.com/setup_8.x | bash -
Une fois le dépôt ajouté, installez Node.js version 8 avec la commande suivante :
apt-get install nodejs -y
Ensuite, téléchargez et ajoutez la clé GPG de Yarn et activez le référentiel avec la commande suivante :
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
Une fois ajouté, mettez à jour le dépôt et installez Yarn avec les commandes suivantes :
apt-get update -y
apt-get install yarn -y
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer et configurer PostgreSQL
Mastodon utilise PostgreSQL pour stocker ses données. Vous pouvez installer la dernière version de PostgreSQL avec la commande suivante :
apt-get install postgresql postgresql-contrib -y
Une fois installé, connectez-vous à PostgreSQL avec la commande suivante :
su - postgres
[email protected]:~$ psql
psql (11.5 (Debian 11.5-1+deb10u1))
Type "help" for help.
Ensuite, créez un utilisateur pour Mastodon avec la commande suivante :
postgres=# CREATE USER mastodon CREATEDB;
Ensuite, quittez le shell PostgreSQL avec la commande suivante :
postgres=#exit
Installer Ruby
Mastodon utilise Ruby on Rails pour le back-end. Tout d'abord, vous devrez créer un nouvel utilisateur système pour exécuter le serveur Mastodon.
Vous pouvez le créer avec la commande suivante :
adduser --disabled-login --gecos 'Mastodon Server' mastodon
Une fois créé, connectez-vous à l'utilisateur mastodon avec la commande suivante :
su - mastodon
Ensuite, clonez le dépôt rbenv avec la commande suivante :
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
Ensuite, configurez rbenv et ruby-build avec les commandes suivantes :
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
Une fois que vous avez terminé, installez la dernière version de Ruby avec la commande suivante :
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.1
Une fois installé, vous devriez obtenir le résultat suivant :
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
Ensuite, définissez le Ruby disponible globalement avec la commande suivante :
rbenv global 2.6.1
Ensuite, mettez à jour la gemme et installez le bundler avec la commande suivante :
gem update --system
gem install bundler --no-document
Une fois que vous avez terminé, vous pouvez vérifier le Ruby avec la commande suivante :
ruby --version
Configurer Mastodon
Tout d'abord, connectez-vous à l'utilisateur mastodon et téléchargez le référentiel git mastodon avec la commande suivante :
su - mastodon
git clone https://github.com/tootsuite/mastodon.git ~/live
cd ~/live
Ensuite, consultez la dernière branche avec la commande suivante :
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
Vous devriez obtenir le résultat suivant :
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 -bHEAD is now at 06f906aca Bump version to 2.9.3
Ensuite, installez toutes les dépendances requises par ruby et Node.js avec la commande suivante :
bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
yarn install --pure-lockfile
Maintenant, configurez le Mastodon avec la commande suivante :
RAILS_ENV=production bundle exec rake mastodon:setup
Au cours du processus de configuration, plusieurs questions vous seront posées. Répondez à toutes les questions comme indiqué ci-dessous :
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.
Une fois que vous avez terminé, quittez l'utilisateur mastodonte avec la commande suivante :
exit
Configurer Nginx pour Mastodon
Ensuite, vous devrez installer Nginx et Certbot sur votre système. Par défaut, la dernière version de Certbot n'est pas disponible dans le référentiel par défaut de Debian 10. Vous devrez donc ajouter le référentiel Certbot à votre système.
Vous pouvez l'ajouter avec la commande suivante :
add-apt-repository ppa:certbot/certbot
Ensuite, mettez à jour le référentiel et installez Certbot avec Nginx en exécutant la commande suivante :
apt-get update -y
apt-get install nginx python-certbot-nginx -y
Une fois les deux packages installés, copiez le fichier de configuration Nginx du répertoire Mastodon vers Nginx avec la commande suivante :
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon.conf
Ensuite, activez le fichier de configuration de l'hôte virtuel Mastodon avec la commande suivante :
ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/
Par défaut, le fichier de configuration de l'hôte virtuel Mastodon est configuré avec le domaine example.com. Il vous faudra donc remplacer le domaine example.com par votre nom de domaine dans le fichier mastodon.conf. Vous pouvez le remplacer par la commande suivante :
sed -i 's/example.com/test.linuxbuz.com/g' /etc/nginx/sites-enabled/mastodon.conf
Ensuite, redémarrez le service Nginx pour appliquer la configuration :
systemctl restart nginx
Ensuite, téléchargez le certificat SSL gratuit Let's Encrypt et configurez Nginx pour utiliser ce certificat en exécutant la commande certbot :
certbot --nginx -d test.linuxbuz.com
Cela téléchargera un certificat SSL Let's Encrypt gratuit et configurera Nginx pour votre domaine test.linuxbuz.com.
Votre fichier de configuration Nginx pour le Mastodon ressemble maintenant à ceci :
cat /etc/nginx/sites-enabled/mastodon.conf
Sortie :
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 }
Configurer le service Systemd pour Mastodon
Nginx est maintenant installé et configuré pour servir Mastodon. Ensuite, vous devrez configurer le fichier de service systemd pour Mastodon. Pour ce faire, copiez les modèles de service systemd depuis le répertoire 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/
Ensuite, démarrez tous les services et autorisez-les à démarrer après le redémarrage avec la commande suivante :
systemctl start mastodon-web
systemctl start mastodon-sidekiq
systemctl start mastodon-streaming
systemctl enable mastodon-web
systemctl enable mastodon-sidekiq
systemctl enable mastodon-streaming
Accéder à l'interface Web de Mastodon
Maintenant, ouvrez votre navigateur Web et tapez l'URL https://test.linuxbuz.com . Vous serez redirigé vers la page suivante :
Maintenant, fournissez votre adresse e-mail et votre mot de passe administrateur que vous avez créés précédemment et cliquez sur le Journal dans bouton. Vous devriez voir la page suivante :
Maintenant, cliquez sur Allons-y ! bouton. Vous devriez voir la page suivante :
Maintenant, cliquez sur Suivant bouton. Vous devriez voir la page suivante :
Maintenant, cliquez sur TERMINER TUTORIEL ! bouton. Vous devriez voir le tableau de bord Mastodon sur la page suivante :
Toutes nos félicitations! vous avez installé et configuré avec succès Mastodon sur le serveur Debian 10. Vous pouvez maintenant créer facilement votre propre réseau de médias sociaux en utilisant Mastodon. N'hésitez pas à me demander si vous avez des questions.