FreeSpeech

Héberger ses serveurs

Un serveur FreeSpeech ne stocke aucun message. Le faire tourner est simple, et l'administrer ne demande ni interface web ni redémarrage : une ligne de commande suffit. Une console web est proposée dans l'édition Pro.

Trois rôles

RôleÀ quoi il sertQui peut s'y connecter
Relais publicTransmet les messages entre appareils connectés. Peut s'associer à d'autres relais publics par un secret partagé (liste blanche administrée à la main).Tout le monde, sauf les identités bannies.
Relais privéPour une famille, une association, une entreprise. N'apparaît chez personne d'autre et refuse toute communication entre serveurs.Seulement les identités autorisées ou invitées par l'administrateur.
Passerelle pushRéveille l'application d'un appareil hors ligne. Ne reçoit jamais de contenu : seulement un jeton d'appareil.Les relais auxquels l'exploitant a donné une clé propre.

Un même appareil peut utiliser autant de relais, publics ou privés, qu'il le souhaite : l'identité ne dépend d'aucun serveur.

Démarrer

Le serveur est une application ASP.NET Core 10. Derrière nginx (qui termine le TLS), il écoute sur la machine locale :

Admin__Secret="une longue valeur secrète" \
dotnet FreeSpeech.Server.dll --urls http://127.0.0.1:5290

Le guide pas à pas (nginx, systemd, certificat, pare-feu, mises à jour) est dans le dépôt : sources/SERVER_INSTALLATION.fr.md et sources/DEPLOYMENT.fr.md, en français et en anglais.

Administrer en ligne de commande libre

La commande admin parle à l'API d'administration du serveur en marche. Tout s'applique tout de suite et est enregistré : aucun redémarrage, donc aucune connexion coupée.

# Relais privé : n'accepter que des personnes invitées
dotnet FreeSpeech.Server.dll admin access allowlist
dotnet FreeSpeech.Server.dll admin invite "Anna" --days 7   # jeton à usage unique, affiché une fois
dotnet FreeSpeech.Server.dll admin clients                  # autorisés, bannis, invitations
dotnet FreeSpeech.Server.dll admin ban <identifiant> "motif" # coupe aussi ses connexions en cours

# Relais public : serveurs voisins et passerelles push (l'autre administrateur accepte)
dotnet FreeSpeech.Server.dll admin add relay https://autre.exemple.net
dotnet FreeSpeech.Server.dll admin add push https://push.exemple.net
dotnet FreeSpeech.Server.dll admin server-ban https://mauvais.exemple.net "abus"
dotnet FreeSpeech.Server.dll admin drain 50                 # inviter 50 clients à passer sur un voisin avant une maintenance

# Passerelle push : accepter les relais qui le demandent
dotnet FreeSpeech.Push.dll admin requests                   # demandes reçues, avec l'empreinte du relais
dotnet FreeSpeech.Push.dll admin accept <id>
dotnet FreeSpeech.Push.dll admin ban <id>
dotnet FreeSpeech.Push.dll admin maintenance on             # répond « occupé » : les relais utilisent une autre passerelle

Côté utilisateur, on ajoute l'adresse du serveur dans Réglages → Serveurs : c'est le serveur qui dit à l'appli s'il est privé, et l'appli propose alors de saisir une invitation ou de demander l'accès.

Journaux et suivi, façon console

dotnet FreeSpeech.Server.dll admin log level relay debug    # plus de détail, tout de suite
dotnet FreeSpeech.Server.dll admin log tail -f              # flux en direct
dotnet FreeSpeech.Server.dll admin trace 3fa9c1d2e4 --minutes 15   # suivre une seule identité, s'arrête seul
dotnet FreeSpeech.Server.dll admin log reset

Règle de confidentialité : un journal ne contient que des métadonnées. Jamais le contenu d'un message, jamais de clé, jamais un jeton d'appareil, et les identifiants y sont raccourcis à 8 caractères. Qui écrit à qui n'apparaît pas au niveau normal ; un suivi précis doit être demandé, il est limité à une heure et laisse une ligne dans le journal.

Une administration peu exposée

Édition Pro Pro

Pour exploiter plusieurs serveurs sans ligne de commande.

Console d'administration web

Une seule page pour tous vos relais et passerelles : clients et invitations, serveurs voisins, passerelles push, limites, journaux en direct et suivi. Comptes avec rôles (lecteur, opérateur, administrateur), double authentification, blocage des essais répétés et journal d'audit des actions.

Installation toute prête

Une image Docker et une machine virtuelle contenant nginx, le serveur, la console et les mises à jour : vous démarrez, vous ajoutez vos serveurs, c'est fini. En préparation.

Sans rien cacher dans le libre

Le serveur libre reste complet et administrable en ligne de commande. La console Pro n'utilise que les mêmes API publiques et ne change rien au protocole.

Intéressé, ou une question ? contact@rebisway.com