diff --git a/README.md b/README.md index ea89fc2..898bfb4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,162 @@ -# Service TOOT +# Pleroma -Service de micro-blogging du candidat chaton de Libre en communs. +## Serveur +- RAM: 4Go +- Proc: 4 +- URL: https://toot.chalec.org -Responsable: Cyril L. (@echolib) +## Instance +- Nom: Toot Chalec +- Description: Le Fédivers de Chalec. Instance Pleroma avec Soapbox +- Activation des comptes par courriel: OUI +- Compte automatiquement suivi: admin +- Fédérée: OUI +- Modérée: OUI +- Nom d'utilisateur: 50 caractères maximum +- Limite de caractère par message: 600 +- Limite de caractères des messages distants: 1000 +- Nom des champs: 100 caractres ; Valeur 200 caractères +- Status épinglés: 2 maximum +- Sécurité DM : seul le premier mentionné +- Biographie utilisateur: 2000 caractères + +## Installation +Reprise de la documentation officielle +Installation en version OTP +``` +# Dépendances +sudo apt install imagemagick \ + ffmpeg \ + libimage-exiftool-perl \ + unzip \ + libncurses5 \ + nginx \ + postgresql \ + postgresql-contrib \ + libmagic-dev \ + certbot \ + python3-certbot-nginx + +# Création de l'utilisateur Système: pleroma +sudo adduser --system --shell /bin/false \ + --home /opt/pleroma pleroma + +# Selon le serveur +export FLAVOUR="amd64" + +# Téléchargement, décompression +sudo su pleroma -s $SHELL -lc " +curl 'https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=$FLAVOUR' \ + -o /tmp/pleroma.zip +unzip /tmp/pleroma.zip -d /tmp/ +" + +# Déplacement de la release +sudo su pleroma -s $SHELL -lc " +mv /tmp/release/* /opt/pleroma +rmdir /tmp/release +rm /tmp/pleroma.zip +" + +# Création des Dossiers +sudo mkdir -p /var/lib/pleroma/{uploads,static} +sudo mkdir -p /etc/pleroma +sudo chown -R pleroma /var/lib/pleroma +sudo chown -R pleroma /etc/pleroma + +# Generateur +sudo su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql" + +## Configuration: +What domain will your instance use? (e.g pleroma.soykaf.com) [] toot.chalec.org +What is the name of your instance? (e.g. The Corndog Emporium) [toot.chalec.org] Le Fédivers de Chalec.org +What is your admin email address? [] contact+toot@chalec.org +What email address do you want to use for sending email notifications? [contact+toot@chalec.org] +Do you want search engines to index your site? (y/n) [y] +Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] y +What is the hostname of your database? [localhost] +What is the name of your database? [pleroma] +What is the user used to connect to your database? [pleroma] +What is the password used to connect to your database? [autogenerated] *** +Would you like to use RUM indices? [n] +What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] +What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] +What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] +What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] +Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as installed. (y/n) [y] +Do you want to anonymize the filenames of uploads? (y/n) [n] y +Do you want to deduplicate uploaded files? (y/n) [n] + +# Creattion de la base de donnée Postgresql +sudo su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" + +# Creation du schéma de la base de donnée +sudo su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate" + +# Firewall +sudo ufw allow 443 +sudo ufw allow 80 +sudo ufw allow 4000 + +# Nginx +# Copy example file +sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/toot.chalec.org.conf +# Change tld values +# replace listen 443 ssl http2; with listen 443 ssl proxy_protocol; +sudo nano /etc/nginx/sites-available/toot.chalec.org.conf + +# Let's encrypt +sudo certbot certonly -d toot.chalec.org + +# Service SystemD +# Copy the service into a proper directory +sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service +sudo systemctl start pleroma +sudo systemctl enable pleroma + +# Activattion de nginx +sudo ln -s /etc/nginx/sites-available/toot.chalec.org.conf /etc/nginx/sites-enabled/toot.chalec.org +sudo nginx -t && sudo systemctl restart nginx + +# Creation de l'utilisateur admin +cd /opt/pleroma +sudo su pleroma -s $SHELL -lc "./bin/pleroma_ctl user new admin contact+toot@chalec.org --admin" + +# Installation du front-end soapbox +sudo apt install busybox +cd /tmp +curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v1.3.0/download?job=build-production -o soapbox-fe.zip +sudo busybox unzip soapbox-fe.zip -o -d /var/lib/pleroma + +# Optimisation de Postgresql +sudo nano /etc/postgresql/13/main/postgresql.conf + +# Values to change according to https://pgtune.leopard.in.ua/ +# DB Version: 13 +# OS Type: linux +# DB Type: web +# Total Memory (RAM): 4 GB +# CPUs num: 4 +# Connections num: 100 +# Data Storage: ssd + +max_connections = 100 +shared_buffers = 1GB +effective_cache_size = 3GB +maintenance_work_mem = 256MB +checkpoint_completion_target = 0.9 +wal_buffers = 16MB +default_statistics_target = 100 +random_page_cost = 1.1 +effective_io_concurrency = 200 +work_mem = 5242kB +min_wal_size = 1GB +max_wal_size = 4GB +max_worker_processes = 4 +max_parallel_workers_per_gather = 2 +max_parallel_workers = 4 +max_parallel_maintenance_workers = 2 + +# Redémarrage de la base de donnée postgresql +sudo systemctl restart postgresql +```