Pleroma est une plate-forme de réseau social fédérée open-source, compatible avec Mastodon et d'autres plates-formes ActivityPub. Il fait partie du Fediverse, un réseau fédéré d'instances qui peuvent communiquer à l'aide d'un protocole commun. Un seul compte sur une instance peut communiquer avec l'ensemble du réseau Fediverse.
Ce guide vous montrera comment créer votre propre instance Pleroma en l'installant sur un serveur basé sur Ubuntu 20.04.
Prérequis
-
Un serveur exécutant Ubuntu 20.04.
-
Un utilisateur sudo non root.
-
Assurez-vous que tout est mis à jour.
$ sudo apt update $ sudo apt upgrade
-
Quelques packages et dépendances dont vous avez besoin avant d'installer Pleroma.
$ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
Étape 1 - Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (pare-feu non compliqué) par défaut.
Vérifiez si le pare-feu est en cours d'exécution.
$ sudo ufw status
Vous devriez obtenir le résultat suivant.
Status: inactive
Autorisez le port SSH afin que le pare-feu n'interrompe pas la connexion actuelle en l'activant.
$ sudo ufw allow OpenSSH
Autorisez également les ports HTTP et HTTPS.
$ sudo ufw allow 80
$ sudo ufw allow 443
Activer le pare-feu
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Vérifiez à nouveau l'état du pare-feu.
$ sudo ufw status
Vous devriez voir une sortie similaire.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Étape 2 - Installer PostgreSQL
Ajoutez le référentiel PostgreSQL officiel à la liste des sources d'Ubuntu.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Ajoutez la clé GPG du dépôt.
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Mettre à jour la liste des packages système.
$ sudo apt update
Étape 3 - Installer Nginx
Ubuntu 20.04 est livré avec la version stable Nginx 18 par défaut.
$ sudo apt install nginx
Étape 4 - Installer Pleroma
Ce guide installe Pleroma à partir d'une version OTP. La première étape consiste à créer un utilisateur Pleroma sans capacité de connexion. Il créera également son répertoire personnel à /opt/pleroma
.
$ sudo adduser --system --shell /bin/false --home /opt/pleroma pleroma
Passez à l'utilisateur Pleroma. Mais d'abord, nous devons passer à l'utilisateur root.
$ sudo su
$ su pleroma -s $SHELL -l
Téléchargez Pleroma dans un emplacement temporaire.
$ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip
Décompressez l'archive.
$ unzip /tmp/pleroma_amd64.zip -d /tmp/
Installez Pleroma.
$ mv /tmp/release/* /opt/pleroma
Supprimez les fichiers temporaires.
$ rm -rf /tmp/pleroma_amd64.zip /tmp/release
Basculez vers l'utilisateur root.
$ exit
Créez des répertoires pour les téléchargements et les fichiers publics.
$ mkdir -p /var/lib/pleroma/{uploads,static}
Créez le répertoire pour la configuration de Pleroma.
$ mkdir -p /etc/pleroma
Changez la propriété des répertoires Pleroma en l'utilisateur Pleroma.
$ chown -R pleroma /var/lib/pleroma /etc/pleroma
Étape 5 - Configurer Pleroma
Revenez à l'utilisateur Pleroma.
$ su pleroma -s /bin/bash -l
Exécutez la commande suivante pour générer le fichier de configuration de l'instance Pleroma.
$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
On vous posera plusieurs questions sur la configuration de Pleroma. Si vous recevez un avertissement indiquant que le fichier de configuration est introuvable, ignorez-le.
[email protected]:~$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
!!! /etc/pleroma/config.exs not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file
What domain will your instance use? (e.g pleroma.soykaf.com) [] example.com
What is the name of your instance? (e.g. The Corndog Emporium) [nspeaks.com] Howtoforge Pleroma
What is your admin email address? [] [email protected]
What email address do you want to use for sending email notifications? [[email protected]] <Press Enter>
Do you want search engines to index your site? (y/n) [y] y
Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] n
What is the hostname of your database? [localhost] localhost
What is the name of your database? [pleroma] pleroma
What is the user used to connect to your database? [pleroma] pleroma
What is the password used to connect to your database? [autogenerated] yourpassword
Would you like to use RUM indices? [n] n
What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] <Press Enter>
What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] <Press Enter>
What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] <Press Enter>
What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] <Press Enter>
Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as not installed, please install it if you answer yes. (y/n) [n] n
Do you want to anonymize the filenames of uploads? (y/n) [n] n
Do you want to deduplicate uploaded files? (y/n) [n] y
Writing config to /etc/pleroma/config.exs.
Writing the postgres script to /tmp/setup_db.psql.
Writing /var/lib/pleroma/static/robots.txt.
All files successfully written! Refer to the installation instructions for your platform for next steps.
Vous pouvez choisir un ensemble d'options différent en fonction de vos besoins. Choisissez un mot de passe fort pour votre base de données. Si vous souhaitez configurer votre instance à partir du panneau d'administration, sélectionnez y
pour la question sur le stockage de la configuration dans la base de données.
Passez à l'utilisateur PostgreSQL par défaut qui a été créé lors de l'installation de PostgreSQL.
$ exit
$ su postgres -s /bin/bash -l
Créez la base de données à l'aide du fichier SQL fourni par Pleroma.
$ psql -f /tmp/setup_db.psql
Revenez à l'utilisateur Pleroma.
$ exit
$ su pleroma -s /bin/bash -l
Initialisez la base de données que nous venons de créer.
$ ./bin/pleroma_ctl migrate
Quittez pour l'utilisateur racine.
$ exit
Étape 6 - Installer SSL avec Let's Encrypt
Pour installer un certificat SSL avec Let's Encrypt, nous devons télécharger l'outil Certbot.
Pour installer Certbot, nous utiliserons le programme d'installation du package Snapd. Le référentiel officiel de Certbot est obsolète et le package Certbot d'Ubuntu a plus d'un an. Snapd propose toujours la dernière version stable de Certbot et vous devez l'utiliser. Heureusement, Ubuntu 20.04 est livré avec Snapd préinstallé.
Assurez-vous que votre version de Snapd est à jour.
$ snap install core
$ snap refresh core
Supprimez toutes les anciennes versions de Certbot.
$ apt remove certbot
Installez Certbot.
$ snap install --classic certbot
Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers /usr/bin
répertoire.
$ ln -s /snap/bin/certbot /usr/bin/certbot
Arrêtez le service Nginx.
$ systemctl stop nginx
Générez un certificat SSL.
$ certbot certonly --standalone --preferred-challenges http -d example.com
La commande ci-dessus téléchargera un certificat sur /etc/letsencrypt/live/example.com
répertoire sur votre serveur.
Créez un répertoire racine Web de défi pour le renouvellement automatique de Let's Encrypt.
$ mkdir -p /var/lib/letsencrypt
Créez une tâche Cron pour renouveler le SSL. Il s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d'abord le fichier /etc/cron.daily/certbot-renew
et ouvrez-le pour le modifier.
$ nano /etc/cron.daily/certbot-renew
Collez le code suivant.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Modifiez les autorisations sur le fichier de tâche pour le rendre exécutable.
$ chmod +x /etc/cron.daily/certbot-renew
Étape 7 - Configurer Nginx
Pleroma est livré avec un fichier de configuration Nginx par défaut. Installez-le en le déplaçant vers le /etc/nginx/sites-available
répertoire.
$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
Remplacer toutes les occurrences de example.tld
avec votre domaine.
$ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf
Ouvrez le fichier de configuration pour le modifier.
$ nano /etc/nginx/sites-available/pleroma.conf
Décommentez le location ~ /\.well-known/acme-challenge
bloc. Le server
bloc de votre fichier de configuration devrait ressembler à ce qui suit.
server {
server_name example.com;
listen 80;
listen [::]:80;
location ~ /\.well-known/acme-challenge {
root /var/lib/letsencrypt/;
}
location / {
return 301 https://$server_name$request_uri;
}
}
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Activez la configuration de Pleroma Nginx en créant un lien symbolique.
$ ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
Activez le serveur Nginx pour le démarrer au démarrage.
$ systemctl enable nginx.
Démarrez le serveur Nginx.
$ systemctl start nginx
Installez le fichier d'unité de service Pleroma systemd fourni dans la distribution.
$ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
Activez et démarrez le service Pleroma.
$ systemctl enable pleroma
$ systemctl start pleroma
Cela peut prendre environ 30 secondes pour que le site Pleroma soit disponible. Maintenant, vous pouvez ouvrir https://example.com
dans votre navigateur Web pour visiter Pleroma. Cela devrait ressembler à ceci.
Étape 8 - Configurer Pleroma
Créer un utilisateur administrateur
Vous pouvez créer un utilisateur administratif via la ligne de commande. Passez d'abord à l'utilisateur Pleroma.
$ su pleroma -s /bin/bash -l
Créez un utilisateur administrateur. Remplacer example
avec votre nom d'utilisateur, [email protected]
avec votre adresse e-mail et password123
avec un mot de passe fort.
$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin
Revenez à l'utilisateur root une fois que vous avez terminé.
$ exit
Modification des paramètres
Si vous avez sélectionné non comme réponse pour stocker la configuration dans la base de données , cela signifie que vous ne pouvez pas modifier les paramètres depuis le panneau d'administration de Pleroma. Pour changer les paramètres, vous devrez modifier le /etc/pleroma/config.exs
fichier.
$ nano /etc/pleroma/config.exs
Une fois que vous avez terminé de modifier le fichier, vous devrez également redémarrer le service Pleroma. Vous devrez peut-être attendre un certain temps avant que le service ne reprenne.
$ systemctl restart pleroma
Mise à jour de Pleroma
Pour mettre à jour Pleroma, la première étape consiste à télécharger la nouvelle version. Exécutez la commande suivante pour télécharger la nouvelle version de Pleroma.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"
Arrêtez l'instance Pleroma.
$ systemctl stop pleroma
L'étape suivante consiste à migrer la base de données.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Démarrez l'instance Pleroma.
$ systemctl start pleroma
Sauvegarder Pleroma
Arrêtez le service Pleroma.
$ systemctl stop pleroma
Basculez vers le répertoire de Pleroma.
$ cd /opt/pleroma
Exécutez la commande suivante pour sauvegarder la base de données.
$ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>
Copiez les fichiers pleroma.pgdump
, config/prod.secret.exs
, config/setup_db.sql
et les uploads
dossier vers votre destination de sauvegarde.
Redémarrez le service Pleroma.
$ systemctl start pleroma
Restauration du plérome
Pour restaurer Pleroma, vous devez réinstaller Pleroma et vous assurer que le service Pleroma ne fonctionne pas.
Copiez ensuite les fichiers sauvegardés à leur emplacement d'origine.
Supprimez la base de données et l'utilisateur existants à l'aide de la commande suivante.
$ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'
Restaurer le schéma de la base de données et le rôle Pleroma Postgres avec le fichier setup_db.sql
sauvegardé fichier.
$ sudo -Hu postgres psql -f config/setup_db.psql
Ensuite, restaurez les données de l'instance Pleroma.
$ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>
Migrez la base de données s'il reste des migrations à effectuer au cas où vous passeriez à une version plus récente.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Redémarrez le service Pleroma.
$ systemctl restart pleroma
Générez les statistiques afin que Postgres puisse planifier correctement les requêtes.
$ sudo -Hu postgres vacuumdb --all --analyze-in-stages
Conclusion
Ceci conclut notre tutoriel sur l'installation de la plate-forme de réseau social Pleroma sur un serveur alimenté par Ubuntu 20.04. Si vous avez des questions ou des commentaires, postez-les dans les commentaires ci-dessous.