Installation

difuzio s'installe par paquet Debian, sur Debian 13 ou Ubuntu 24.04. Cette page donne le chemin le plus court jusqu'à un service qui tourne. Le manuel d'exploitation reprend chaque étape en détail, y compris l'installation manuelle sans paquet.

Choisir son backend

Le moteur se compile avec l'un ou l'autre backend, et le choix se fait une fois pour toutes : une base n'est pas convertible de l'un vers l'autre.

Les deux paquets serveur posent le même exécutable et s'excluent donc mutuellement.

Prérequis

Obtenir les paquets

Le plus court est le dépôt de paquets signé : les mises à jour suivent alors apt upgrade. La page Téléchargement donne les quelques lignes qui déclarent le dépôt et sa clé.

Les paquets se construisent aussi depuis le dépôt public. La construction demande un accès réseau et une chaîne Go 1.23 ou plus récente.

git clone https://inligit.fr/cap-rel/difuzio.git
cd difuzio
make deb

Trois paquets sont produits dans dist/ : difuzio-mariadb, difuzio-sqlite et difuzio-webui, la console d'administration.

Installer

 SQLite

Avec SQLite, une seule commande met le service en route :

apt install difuzio-sqlite difuzio-webui

Depuis des fichiers construits localement, ce sont les mêmes paquets :

apt install ./difuzio-sqlite_<version>_amd64.deb
apt install ./difuzio-webui_<version>_all.deb

L'installation crée le compte système, les répertoires, les clés de signature générées une fois et jamais régénérées, la base et son schéma, puis démarre les services.

MariaDB

Avec MariaDB, créez d'abord la base et ses deux comptes : un compte applicatif sans droit de modification du schéma, et un compte de migration qui seul touche au schéma. Ce bloc se colle tel quel dans phpMyAdmin ou dans un client mariadb, après avoir remplacé les deux mots de passe :

-- utf8mb4 explicite : les migrations ne déclarent pas de jeu de caractères et
-- hériteraient sinon de celui du serveur.
CREATE DATABASE difuzio CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Compte applicatif : lecture et écriture des données, jamais du schéma.
CREATE USER 'difuzio'@'127.0.0.1' IDENTIFIED BY 'MOT_DE_PASSE_APPLICATIF';
GRANT SELECT, INSERT, UPDATE, DELETE
    ON difuzio.* TO 'difuzio'@'127.0.0.1';

-- Compte de migration : le schéma, utilisé seulement quand les migrations
-- s'appliquent.
CREATE USER 'difuzio_migrate'@'127.0.0.1' IDENTIFIED BY 'MOT_DE_PASSE_MIGRATION';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX, REFERENCES
    ON difuzio.* TO 'difuzio_migrate'@'127.0.0.1';

FLUSH PRIVILEGES;

127.0.0.1 est l'hôte depuis lequel difuzio se connecte. Si la base tourne sur une autre machine, mettre à la place l'adresse du serveur difuzio ; en connexion par socket Unix, mettre localhost.

Renseignez ensuite la chaîne de connexion du compte applicatif dans /etc/difuzio/config.yaml :

difuzio:MOT_DE_PASSE_APPLICATIF@tcp(127.0.0.1:3306)/difuzio?parseTime=true&loc=UTC&time_zone=%27%2B00%3A00%27&clientFoundRows=true

Ces quatre paramètres ne sont pas décoratifs : difuzio vérifie le fuseau de la session à l'ouverture et refuse de démarrer si l'un d'eux manque. Puis :

apt install ./difuzio-mariadb_<version>_amd64.deb
apt install ./difuzio-webui_<version>_all.deb
systemctl enable --now difuzio-web.service difuzio-lmtp.service \
    difuzio-worker@1.service difuzio.target

Premier administrateur, premier domaine

Aucun paquet ne crée d'administrateur : c'est une décision d'exploitant.

export CREDENTIALS_DIRECTORY=/etc/difuzio/secrets

difuzio bootstrap-admin --config /etc/difuzio/config.yaml \
    --email vous@example.org --password-stdin

difuzio add-domain --config /etc/difuzio/config.yaml \
    --name listes.example.org --base-url https://listes.example.org

difuzio create-list --config /etc/difuzio/config.yaml \
    --domain listes.example.org --name annonces \
    --owner vous@example.org --type newsletter

Le mot de passe est lu sur l'entrée standard : il n'apparaît donc pas dans l'historique du shell. Tant qu'aucun administrateur n'existe, la page /setup de la console permet aussi d'en créer un ; dès qu'il y en a un, cette page disparaît.

Raccorder le serveur de messagerie

difuzio mta-config --domain listes.example.org

La commande imprime les lignes à reporter dans la configuration de Postfix. Le domaine entier - messages, adresses de rebond, plaintes - est routé vers la socket LMTP. Vérifiez ensuite la zone DNS :

difuzio check-dns --domain listes.example.org

Vérifier

difuzio doctor --config /etc/difuzio/config.yaml

doctor affiche la version installée, le backend lié, l'accès à la base et l'état du schéma. La console signale de son côté un déploiement dépareillé, quand le serveur et l'interface n'ont pas la même révision.

Ensuite