Créer son réseau social avec Pleroma

Procédure d'installation

Commençons par installer les dépendances avec le compte root et le compte dédié à l'application :

addgroup pleroma
adduser -S -s /bin/false -h /opt/pleroma -H -G pleroma pleroma
mkdir -p /opt/pleroma
chown -R pleroma:pleroma /opt/pleroma
awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories
apk update ; apk upgrade
apk add postgresql elixir erlang erlang-parsetools erlang-xmerl git nginx build-base erlang erlang-runtime-tools erlang-xmerl elixir postgresql postgresql-contrib postgresql-dev
rc-service postgresql start
rc-service nginx start

Cette section est optionnelle mais pour faire de la recherche dans le contenu des messages, utilisons l'indéxation de RUM qui est une extension de postgres :

su - postgres
git clone https://github.com/postgrespro/rum /tmp/rum
cd /tmp/rum
make USE_PGXS=1
sudo make USE_PGXS=1 install

Puis se connecter avec le compte courrant pour installer pleroma:

sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
cd /opt/pleroma
sudo -Hu pleroma mix deps.get
sudo -Hu pleroma mix pleroma.instance gen
mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu postgres psql -f config/setup_db.psql
sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate

Enfin on vérifie que l'application se lance bien :

sudo -Hu pleroma MIX_ENV=prod mix phx.server

Présenter l'application

On va faire cela avec nginx et adapter si besoin le fichier de conf :

cp installation/pleroma.nginx /etc/nginx/conf.d/default.conf

Déclarer de nouveaux services

Il reste plus qu'a indiquer que ces services doivent se lancer au boot :

cp installation/init.d/pleroma /etc/init.d/pleroma
rc-service pleroma start
rc-update add postgresql
rc-update add nginx
rc-update add pleroma

Gestion des utilisateurs

Créons le compte admin de l'instance :

sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new admin user@domaine.com --password mon-mdp --admin

Puis des comptes classiques :

sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new toto toto@domaine.com --password mon-mdp