Sommaire
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
Site web
Emails (Mailpit)
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
- Ouvrez App Center puis cliquez sur Custom Install (en haut à droite)
- Cliquez sur l'icône Docker Compose (en haut à droite de la modale)
- Collez le contenu du fichier
docker-compose.casaos.yml - Cliquez sur Install
- Accédez à
http://IP-CASAOS:8080 - 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
- Ouvrez militant.revlibertaire.com dans Chrome
- Appuyez sur le menu ⋮ (trois points en haut à droite)
- Sélectionnez "Ajouter à l'écran d'accueil"
- Confirmez en appuyant sur "Ajouter"
- L'icône MILITANT apparaît sur votre écran d'accueil
Sur iPhone / iPad
- Ouvrez militant.revlibertaire.com dans Safari
- Appuyez sur le bouton Partager (en bas de l'écran)
- Faites défiler et sélectionnez "Sur l'écran d'accueil"
- Appuyez sur "Ajouter" en haut à droite
- L'icône MILITANT apparaît sur votre écran d'accueil
Sur ordinateur (Chrome, Edge)
- Ouvrez militant.revlibertaire.com
- Cliquez sur l'icône d'installation dans la barre d'adresse
- Ou allez dans le menu ⋮ → "Installer MILITANT"
- 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.