Accueil Installation Fonctionnalités Configuration Conditions Confidentialité Mentions
Langue / Language
v2.2.0

Documentation

Guide d'installation et de déploiement de MILITANT, le réseau social militant autogéré.

Installation & Déploiement

Développement (Local)

Pour contribuer ou tester avec les outils de dev (Mailpit, Hot-reload...) :

git clone https://gitlab.com/militant1/millitant.git
cd millitant
docker compose up -d --build

Auto-hébergement Professionnel (Recommandé)

La méthode la plus simple et la plus rapide. Utilise l'image officielle pré-construite.

1. Télécharger les fichiers :

curl -O https://gitlab.com/militant1/millitant/-/raw/main/docker-compose.hosting.yml
curl -O https://gitlab.com/militant1/millitant/-/raw/main/.env.template

2. Configurer :

cp .env.template .env
nano .env # Remplissez vos accès (DB, SMTP...)

3. Lancer :

docker compose -f docker-compose.hosting.yml up -d

Installation Classique (Source)

Pour ceux qui souhaitent compiler l'image eux-mêmes depuis le code source :

1. Télécharger le fichier :

curl -O https://gitlab.com/militant1/millitant/-/raw/main/docker-compose.prod.yml

2. Lancer :

docker compose -f docker-compose.prod.yml up -d

Configuration Réseau Avancée

Si vous utilisez Cloudflare ou un reverse proxy, MILITANT détecte automatiquement l'IP réelle de vos utilisateurs.

Toute la configuration Apache (`mod_remoteip`) est gérée par notre script de mise à jour à chaud.

# Appliquer la config Cloudflare sur votre serveur
sudo ./hot_update.sh

Installation via CasaOS

  1. Ouvrez App Center puis cliquez sur Custom Install (en haut à droite)
  2. Cliquez sur l'icône Docker Compose (en haut à droite de la modale)
  3. Collez le contenu du fichier docker-compose.casaos.yml
  4. Cliquez sur Install
  5. Accédez à http://IP-CASAOS:8080
  6. Créer le compte admin : http://IP-CASAOS:8080/setup_admin.php

Configuration requise : ~512 Mo RAM minimum, ~5 Go disque (selon uploads)

🛡️ Protection Fail2Ban

Fail2Ban est activé par défaut sur CasaOS pour protéger contre les attaques par force brute en bannissant les IPs après plusieurs tentatives échouées.

Vérifier le statut

# Voir si Fail2Ban tourne
docker ps | grep fail2ban

# Statut des jails
docker exec militant-fail2ban fail2ban-client status

# Détails de la jail militant-auth
docker exec militant-fail2ban fail2ban-client status militant-auth

Configuration par défaut

Paramètre Valeur
Tentatives max 5
Durée du ban 1 heure
Fenêtre de détection 5 minutes

💾 Backup automatique

Sauvegardez automatiquement votre instance (code + base de données) vers Docker Hub.

Lancer un backup manuel

sudo /usr/local/bin/militant-backup.sh

Note : Les backups hebdomadaires sont configurés via cron le dimanche à 3h du matin.

🏥 Health Check Endpoints

MILITANT expose des endpoints de santé pour surveiller l'état des services en temps réel.

Endpoints publics (Page de statut)

Ces endpoints sont accessibles publiquement et ne révèlent aucune information sensible :

https://militant.revlibertaire.com/health-public.php
https://api.militant.revlibertaire.com/health-public.php

Réponse JSON :

{
  "status": "ok",
  "timestamp": 1771206234
}

Valeurs possibles :

  • ok - Service opérationnel ✅
  • degraded - Service dégradé ⚠️
  • partial_outage - Panne partielle 🔴

Endpoints privés (Monitoring interne)

Ces endpoints sont restreints aux accès locaux (localhost et réseaux internes) et fournissent des détails sur l'infrastructure :

https://militant.revlibertaire.com/health.php
https://api.militant.revlibertaire.com/health.php

Réponse détaillée (localhost uniquement) :

{
  "status": "ok",
  "timestamp": 1771206234,
  "services": {
    "database": "ok",
    "storage": "ok",
    "php": "ok"
  }
}

Accès depuis l'extérieur :

{
  "error": "Access denied",
  "status": "forbidden"
}

Sécurité : Les endpoints privés n'acceptent que les connexions depuis 127.0.0.1, ::1 et les réseaux privés (10.x.x.x, 172.16-31.x.x, 192.168.x.x).

Page de statut publique

Consultez l'état des services en temps réel :

https://militant.revlibertaire.com/status.html

La page interroge automatiquement les endpoints publics toutes les 30 secondes.

Fonctionnalités

Sécurité & Compte

  • Authentification double facteur (2FA) via TOTP (Google Authenticator, Authy...)
  • Passkeys (WebAuthn) : Connexion biométrique (empreinte, visage)
  • Mots de passe hachés avec Argon2ID
  • Fail2Ban intégré (protection anti-bruteforce)
  • Protection CSRF, XSS, et Rate Limiting stricts

Publications

  • Posts avec photos/vidéos (jusqu'à 500MB)
  • Rich Link Previews (aperçus automatiques des liens)
  • Réactions emoji
  • Commentaires imbriqués avec réponses
  • @mentions avec notifications

Social

  • Messages privés avec chiffrement de base
  • Stories éphémères (24h) avec navigation tactile
  • Fil "Pour toi" / "Abonnements" chronologique
  • Système d'amis et followers
  • Recherche globale unifiée

Groupes & Collectifs (Messagerie V2)

Une messagerie instantanée complète intégrée, conçue pour l'organisation collective.

  • Gouvernance horizontale : Tous les membres sont admins par défaut. Gestion collégiale des membres et des paramètres.
  • Messages éphémères : Configurez une auto-destruction automatique (de 1 minute à 7 jours) pour vos discussions sensibles.
  • Audio & Médias : Enregistrement vocal direct (compatible iOS/Android), envoi de photos et vidéos avec lightbox intégrée.
  • Sécurité des échanges : Isolation stricte des données de messagerie et alertes en cas de tentative de détournement de session.
  • Demandes d'adhésion : Système de validation pour les groupes privés avec questionnaire personnalisable.

Internationalisation

  • Interface traduite en Français, Anglais, Espagnol, Espéranto
  • Traduction automatique des posts et messages (LibreTranslate)
  • Détection automatique de la langue

📱 Interface Mobile

Une expérience optimisée nativement pour les smartphones sans application supplémentaire.

  • Barre de navigation basse : Accès rapide Home, Search, Messages, Profil.
  • Menu Offcanvas : Accès latéral à toutes les fonctionnalités avancées.
  • Header adaptatif : Logo et actions essentielles toujours visibles.
  • Badge PWA : Support des notifications natives sur Android.

Configuration (.env)

Variable Description Défaut (Dev)
DB_HOST Hôte MySQL db
DB_NAME Nom de la base militant
DB_USER Utilisateur MySQL militant
DB_PASS Mot de passe MySQL militant123
SMTP_HOST Serveur SMTP mailpit
SMTP_PORT Port SMTP 1025
APP_URL URL publique http://localhost:9000
HCAPTCHA_SITE_KEY Clé site hCaptcha -
HCAPTCHA_SECRET_KEY Clé secrète hCaptcha -

Modération communautaire

Pas de hiérarchie. Décisions par consensus.

  • Signalements traités par vote communautaire
  • 70% de consensus requis
  • Modérateurs élus et révocables par tous

Langues

Disponible en : Français, English, Español

Ajouter une langue : créer lang/xx.php

Application PWA

MILITANT est une Progressive Web App (PWA) installable sur mobile et desktop. Elle fonctionne même hors ligne.

Sur Android

  1. Ouvrez militant.revlibertaire.com dans Chrome
  2. Appuyez sur le menu (trois points en haut à droite)
  3. Sélectionnez "Ajouter à l'écran d'accueil"
  4. Confirmez en appuyant sur "Ajouter"
  5. L'icône MILITANT apparaît sur votre écran d'accueil

Sur iPhone / iPad

  1. Ouvrez militant.revlibertaire.com dans Safari
  2. Appuyez sur le bouton Partager (en bas de l'écran)
  3. Faites défiler et sélectionnez "Sur l'écran d'accueil"
  4. Appuyez sur "Ajouter" en haut à droite
  5. L'icône MILITANT apparaît sur votre écran d'accueil

Sur ordinateur (Chrome, Edge)

  1. Ouvrez militant.revlibertaire.com
  2. Cliquez sur l'icône d'installation dans la barre d'adresse
  3. Ou allez dans le menu "Installer MILITANT"
  4. L'application s'ouvre dans sa propre fenêtre

Avantages de la PWA : Accès rapide depuis l'écran d'accueil, notifications push, fonctionne hors ligne, pas besoin de passer par un store.