GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Mastodon Social Network avec Docker sur Ubuntu 18.04 LTS

Mastodon est un réseau social gratuit, décentralisé et open-source. Il a été créé comme une alternative à Twitter. Tout comme Twitter, les gens peuvent se suivre, publier des messages, des images et des vidéos. Mais contrairement à Twitter, il n'y a pas de magasin central ou d'autorité pour le contenu.

Au lieu de cela, Mastodon opère sur des milliers de serveurs différents, chacun exécutant divers membres de la communauté. Les utilisateurs inscrits sur un serveur peuvent facilement se connecter aux utilisateurs de l'autre réseau et se suivre sur plusieurs instances.

N'importe qui peut installer sa propre instance d'un serveur Mastodon. Ce tutoriel vous apprendra comment configurer votre instance de Mastodon sur un serveur avec Ubuntu 18.04 en utilisant Docker.

Prérequis

  • Un serveur basé sur Ubuntu 18.04 avec un utilisateur sudo non root.

  • Assurez-vous que votre système est à jour.

    $ sudo apt update
    $ sudo apt upgrade
    
  • Mastodon envoie des notifications par e-mail aux utilisateurs. Une option pour le faire fonctionner est de configurer votre propre serveur de messagerie. Vous pouvez le faire sur le même serveur que vous allez installer Mastodon ou sur un serveur différent. Le faire sort du cadre de ce guide.

    Nous vous recommanderons d'utiliser un service de messagerie transactionnel tiers comme Mailgun, Sendgrid, Amazon SES ou Sparkpost. Les instructions du guide utiliseront Mailgun comme fournisseur SMTP.

  • Assurez-vous d'avoir un nom de domaine pointant vers le serveur. Pour ce didacticiel, nous utiliserons example.com comme domaine.

Étape 1 - Installation des dépendances

Avant d'installer Mastodon, nous devons nous assurer que notre serveur dispose de certains logiciels qu'il devra installer correctement. Exécutez les commandes suivantes pour installer les dépendances.

$ sudo apt update
$ sudo apt install ca-certificates curl ufw apt-transport-https software-properties-common git -y

Certains des logiciels ci-dessus peuvent être préinstallés pour vous.

Puisque nous avons installé Git, nous devons le configurer avant de continuer.

$ git config --global user.name "Your Name" 
$ git config --global user.email "[email protected]"

Étape 2 - Configuration du pare-feu

Dans notre étape précédente, nous avons installé ufw (pare-feu non compliqué) . Avant de pouvoir procéder à l'installation de Mastodon, nous devons le configurer.

Activez SSH et le port que nous venons de créer afin que nous ne soyons pas bloqués.

$ sudo ufw allow OpenSSH

Activez le pare-feu ufw.

$ sudo ufw enable

Nous devons également activer http et https pour que Mastodon fonctionne.

$ sudo ufw allow http
$ sudo ufw allow https

Vérifiez l'état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie comme celle-ci.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Étape 3 - Installer Docker

Ajoutez la clé GPG de Docker à votre système.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Vérifiez l'empreinte digitale de la clé téléchargée.

$ sudo apt-key fingerprint 0EBFCD88

Vous devriez voir une sortie comme celle-ci.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Ajoutez le référentiel Docker.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Mettez à jour votre base de données de packages.

$ sudo apt update

Installez Docker CE. CE est l'édition communautaire de Docker.

$ sudo apt install docker-ce -y

Docker devrait être installé maintenant. Vérifiez qu'il est en cours d'exécution.

$ sudo systemctl status docker

La sortie doit ressembler à ce qui suit.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-22 18:26:29 UTC; 25min ago
     Docs: https://docs.docker.com
 Main PID: 3574 (dockerd)
    Tasks: 8
   CGroup: /system.slice/docker.service
   ??3574 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Appuyez sur q pour quitter.

Ajoutez votre compte d'utilisateur Linux limité au groupe docker afin de pouvoir exécuter docker sans sudo.

sudo usermod -aG docker $USER

$USER La variable choisira et ajoutera l'utilisateur actuellement connecté au groupe docker. Remplacez $USER avec le nom d'utilisateur réel si vous n'êtes pas actuellement connecté avec cet utilisateur.

Passez à l'utilisateur que nous venons d'ajouter. Même si vous étiez déjà connecté, vous devrez toujours y revenir pour recharger les autorisations.

$ su - ${USER}

Vérifiez que tout fonctionne correctement en exécutant le "Hello World" intégré programme.

$ docker run hello-world

Vous devriez voir la sortie suivante qui indiquera que Docker est installé et fonctionne correctement.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Étape 4 - Installer Docker Compose

Il est possible d'ignorer cette étape et de continuer, mais l'installation de Docker Compose facilitera grandement l'exécution de Mastodon, surtout si vous souhaitez le faire sur plusieurs serveurs.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Au moment de la rédaction de ce didacticiel, 1.24.1 est la version stable actuelle de Docker Compose. Vous pouvez vérifier la dernière version sur leur page Github.

Appliquez les autorisations exécutables au binaire de composition docker.

$ sudo chmod +x /usr/local/bin/docker-compose

Ajouter l'achèvement de la commande à Docker Compose.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Vérifiez si votre installation a réussi.

$ docker-compose --version

Il imprimera la sortie suivante.

docker-compose version 1.24.1, build 4667896b

Étape 5 - Installer Mastodon

Clonez le dépôt de Mastodon sur votre serveur.

$ git clone https://github.com/tootsuite/mastodon

Accédez au répertoire dans lequel nous venons de copier les fichiers.

$ cd mastodon

Mastodon est livré avec un exemple de fichier de configuration. Nous devons le renommer pour que Mastodon fonctionne.

$ cp .env.production.sample .env.production

Nous devons générer des clés secrètes pour notre fichier de configuration. Mais avant cela, nous devons créer l'image Docker.

$ docker-compose build

Maintenant que l'image est construite avec succès, vous devez créer plusieurs clés nécessaires à la configuration de Mastodon.

Générer SECRET_KEY_BASE d'abord.

$ SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)

Insérez la clé ci-dessus dans le fichier de configuration.

$ sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production

Générez et insérez le OTP_SECRET dans le fichier de configuration.

$ OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production

Générez et insérez le PAPERCLIP_SECRET dans le fichier de configuration.

$ PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production

Générer des valeurs pour VAPID_PRIVATE_KEY et VAPID_PUBLIC_KEY .

$ docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key

Ouvrez le fichier .env.production fichier.

$ sudo nano ./.env.production

Recherchez VAPID_PRIVATE_KEY et VAPID_PUBLIC_KEY dans le fichier et copiez la sortie de la commande précédente.

Trouvez le LOCAL_DOMAIN variable et modifiez sa valeur depuis example.com au nom de domaine que vous avez choisi pour votre installation Mastodon.

Entrez les valeurs que vous avez obtenues de votre fournisseur SMTP.

SMTP_SERVER = smtp.mailgun.org
SMTP_PORT = 587
SMTP_LOGIN = username
SMTP_PASSWORD = password
SMTP_FROM_ADDRESS = [email protected]

Appuyez sur Ctrl + X et enregistrez le fichier lorsque vous avez terminé.

Vous devez reconstruire l'image Docker pour implémenter toutes les modifications apportées ci-dessus.

$ docker-compose build

Configurez la base de données.

$ docker-compose run --rm web rails db:migrate

Pré-compiler les assets de Mastodon.

$ docker-compose run --rm web rails assets:precompile

Exécutez la commande suivante pour exécuter le conteneur.

$ docker-compose up -d

Étape 6 - Installer et configurer Nginx

La prochaine étape de notre guide consiste à installer le serveur Nginx pour faire fonctionner le site Web de Mastodon.

Exécutez la commande suivante pour installer le serveur Nginx.

$ sudo apt install nginx -y

Nginx est livré avec un site par défaut configuré. Supprimez cela.

$ sudo rm /etc/nginx/sites-available/default

Supprimez également le lien symbolique du site par défaut.

$ sudo rm /etc/nginx/sites-enabled/default

Créez un fichier de configuration Nginx pour Mastodon.

$ sudo touch /etc/nginx/sites-available/mastodon

Créez un lien symbolique pour la configuration de Mastodon.

$ sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

Ouvrez la configuration de Mastodon dans l'éditeur Nano. (Vous pouvez choisir n'importe quel éditeur que vous voulez)

$ sudo nano /etc/nginx/sites-available/mastodon

Copiez-collez-y le texte suivant.

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

server {
  listen 80;
  listen [::]:80;
  server_name example.com;
  root /home/user/mastodon/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 example.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/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/user/mastodon/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;
}

La configuration ci-dessus suppose que vous utilisez Let's encrypt comme fournisseur SSL. Si vous utilisez un autre service SSL, vous devez modifier l'emplacement des clés et ignorer la section suivante du didacticiel.

Étape 7 - Installer et configurer Let's Encrypt

Assurez-vous que Nginx est arrêté.

$ sudo systemctl stop nginx

Ajouter un référentiel Certbot.

$ sudo add-apt-repository ppa:certbot/certbot

Mettre à jour les packages système.

$ sudo apt update

Installez l'outil Certbot.

$ sudo apt install certbot

Vous devez créer le certificat deux fois - une fois avec la méthode TLS SNI et la deuxième fois avec la méthode webroot.

sudo certbot certonly --standalone -d example.com

Maintenant, créez le certificat en utilisant la méthode webroot. Cela nécessitera que Nginx soit en cours d'exécution.

sudo systemctl start nginx
sudo certbot certonly --webroot -d example.com -w /home/user/mastodon/public/

L'outil vous demandera si vous souhaitez conserver le certificat ou le renouveler. Choisissez l'option de renouvellement.

Configurer le renouvellement automatique des certificats SSL

Les certificats Let's Encrypt ont une validité de 90 jours. Après cela, vous devez les renouveler à nouveau. Pour cela, vous pouvez créer une tâche cron pour le faire automatiquement pour vous.

Créez une tâche cron.

$ sudo nano /etc/cron.daily/letsencrypt-renew

Copiez et collez ce qui suit dans le fichier.

#!/usr/bin/env bash
certbot renew
systemctl reload nginx

Enregistrez et quittez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Rendez le script exécutable et redémarrez le démon cron afin que notre script s'exécute quotidiennement.

$ sudo chmod +x /etc/cron.daily/letsencrypt-renew
$ sudo systemctl restart cron

Étape 8 - Créez votre utilisateur Mastodon

Visitez votre site mastodonte dans un navigateur. Vous devriez voir l'écran suivant.

Entrez votre nom d'utilisateur, votre adresse e-mail et votre mot de passe souhaités pour créer un nouveau compte sur votre instance Mastodon. Votre nom d'utilisateur complet dont vous aurez besoin pour vous connecter aux utilisateurs d'autres serveurs Mastodon est howtoforge@example.com.

Mastodon vous enverra un e-mail de confirmation pour vérifier l'inscription.

Vous pouvez également confirmer manuellement l'inscription. Pour cela, vous devrez vous connecter en SSH à votre instance Docker. Lister toutes les instances Docker actuelles.

$ docker ps

Vous verrez une sortie comme ci-dessous.

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                  PORTS                      NAMES
32f2c4cd2598        tootsuite/mastodon    "/tini -- bash -c 'r…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:3000->3000/tcp   mastodon_web_1
76beca2b858d        tootsuite/mastodon    "/tini -- node ./str…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:4000->4000/tcp   mastodon_streaming_1
08f7a42b75ac        tootsuite/mastodon    "/tini -- bundle exe…"   16 hours ago        Up 16 hours                                        mastodon_sidekiq_1
bacaa8c09a85        redis:5.0-alpine      "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_redis_1
62e9b2175a53        postgres:9.6-alpine   "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_db_1

Pour apporter les modifications requises, nous devons accéder au conteneur de diffusion en continu. SSH dans le mastodon_streaming_1 conteneur.

$ docker exec -it mastodon_streaming_1 /bin/bash

Cela lancera un shell Bash à l'intérieur de votre conteneur.

Exécutez la commande suivante pour approuver votre nouveau nom d'utilisateur.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm

Exécutez la commande suivante pour faire de votre compte nouvellement créé un administrateur.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin

Quittez le conteneur.

[email protected]:~$ exit

Connectez-vous à votre instance avec votre nom d'utilisateur et votre mot de passe et vous serez accueilli avec l'écran suivant.

Cliquez sur Allons-y et vous passerez aux pages suivantes qui vous permettront de connaître quelques notions de base sur le fonctionnement de Mastodon.

Cliquez sur Terminer le didacticiel pour être accueilli avec la page d'accueil de votre Mastodon où vous pouvez commencer à publier à votre guise.

Vous pouvez accéder aux paramètres et à la zone d'administration à partir du menu Préférences.

Étape 9 - Entretien

Pour afficher les performances et les journaux de votre instance Mastodon, rendez-vous sur https://example.com/sidekiq/

Ici, vous pouvez voir une liste de divers processus et tâches planifiées liés à votre instance Mastodon. Vous pouvez également vérifier les tâches ayant échoué dans la section Dead ou Retries. Il vous indiquera également l'utilisation de la mémoire de votre instance.

Vous pouvez vérifier l'état de la base de données de votre instance à partir de https://example.com/pghero/

Vous pouvez effectuer la maintenance de votre base de données, exécuter des requêtes SQL et supprimer les index inutilisés.

Si votre site ne se charge pas du tout pour une raison quelconque, vous pouvez consulter les journaux générés par Docker.

Pour cela, fermez d'abord vos conteneurs.

$ docker-compose down

Exécutez Docker compose dans un état attaché afin de pouvoir afficher les journaux générés par chaque conteneur.

$ docker-compose up

Étape 10 Mise à jour de votre Mastodon

Basculez vers votre répertoire mastodonte.

$ cd /home/user/mastdon

Télécharger les mises à jour depuis le référentiel

$ git fetch

Si vous avez changé votre docker-compose.yml fichier pour une raison quelconque, vous devez d'abord exécuter la commande suivante.

$ git status

Cela vous indiquera toutes les modifications apportées. Si le fichier est modifié, stockez d'abord vos modifications.

$ git stash

Découvrez la dernière version de Mastodon. Vérifiez la dernière version sur la page des versions.

$ git checkout <version/tag>

Si vous avez exécuté git stash plus tôt, exécutez la commande suivante pour refaire vos modifications sur docker-compose.yml fichier.

$ git stash pop

Créez l'image Docker.

$ docker-compose build

Effectuer des migrations de base de données.

$ docker-compose run --rm web rails db:migrate

Pré-compiler les assets de Mastodon.

$ docker-compose run --rm web rails assets:precompile

Exécutez la commande suivante pour exécuter le conteneur.

$ docker-compose up -d

C'est tout pour ce tutoriel. Pour en savoir plus sur Mastodon, suivez leur documentation.


Ubuntu
  1. Comment installer Docker sur Ubuntu 18.04

  2. Comment installer Docker sur Ubuntu 16.04

  3. Comment installer R sur Ubuntu 18.04 LTS

  4. Comment installer R sur Ubuntu 20.04 LTS

  5. Comment installer Docker sur Ubuntu 20.04 LTS

Comment installer la plate-forme de réseau social Pleroma sur Ubuntu 20.04

Comment installer Docker sur Ubuntu 16.04 LTS

Comment installer WordPress avec Docker sur Ubuntu 16.04 LTS

Comment installer Docker sur Ubuntu 18.04 LTS

Comment installer Docker sur Ubuntu 20.04 LTS

Comment installer Wiki.js sur Ubuntu 20.04 LTS