Índice
Instalación y Despliegue
Guía paso a paso para desplegar MILITANT en tu servidor.
Desarrollo (Local)
Para contribuir o probar con las herramientas de desarrollo (Mailpit, Hot-reload...) :
git clone https://gitlab.com/militant1/millitant.git
cd millitant
docker compose up -d --build
Sitio web
Emails (Mailpit)
Auto-alojamiento Profesional (Recomendado)
El método más sencillo y rápido. Utiliza la imagen oficial pre-construida.
1. Descargar archivos:
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. Configurar:
cp .env.template .env
nano .env # Completa tus accesos (DB, SMTP...)
3. Iniciar:
docker compose -f docker-compose.hosting.yml up -d
Instalación Clásica (Source)
Para quienes deseen compilar la imagen ellos mismos desde el código fuente:
1. Descargar el archivo:
curl -O https://gitlab.com/militant1/millitant/-/raw/main/docker-compose.prod.yml
2. Iniciar:
docker compose -f docker-compose.prod.yml up -d
Configuración de Red Avanzada
Si utilizas Cloudflare o un proxy inverso, MILITANT detecta automáticamente la IP real de tus usuarios.
Toda la configuración de Apache (`mod_remoteip`) es gestionada por nuestro script de actualización en caliente.
# Aplicar la configuración de Cloudflare en tu servidor
sudo ./hot_update.sh
2. Configurar el entorno : Crea un archivo .env :
DB_PASS=tu_contraseña_sql
SMTP_HOST=smtp.tu-proveedor.com
SMTP_USER=contacto@tu-dominio.com
SMTP_PASS=tu_contraseña_smtp
APP_URL=https://tu-dominio.com
Instalación en CasaOS
MILITANT es compatible con CasaOS para una instalación simplificada en un clic.
- Abre el App Center y haz clic en Custom Install (arriba a la derecha).
- Haz clic en el icono Docker Compose (arriba a la derecha de la ventana modal).
- Pega el contenido del archivo
docker-compose.casaos.yml. - Haz clic en Install.
- Accede a
http://IP-CASAOS:8080. - Crea la cuenta admin:
http://IP-CASAOS:8080/setup_admin.php.
Requisitos del sistema : ~512 Mo RAM mínimo, ~5 Go disco (según subidas)
Protección Fail2Ban
MILITANT incluye protección contra ataques de fuerza bruta mediante Fail2Ban.
Verificar el estado:
docker exec -it militant-fail2ban fail2ban-client status apache-auth
Configuración por defecto: 5 intentos fallidos antes de un baneo de 1 hora.
Copia de Seguridad Automática
Se realiza una copia de seguridad automática de la base de datos y de los archivos (uploads) cada noche a las 02:00.
Las copias de seguridad se almacenan en el directorio backups/. Se recomienda
exportarlas regularmente a un servidor externo.
🏥 Endpoints de Verificación de Salud
MILITANT expone endpoints de salud para monitorear el estado de los servicios en tiempo real.
Endpoints Públicos (Página de Estado)
Estos endpoints son accesibles públicamente y no revelan información sensible:
https://militant.revlibertaire.com/health-public.php
https://api.militant.revlibertaire.com/health-public.php
Respuesta JSON:
{
"status": "ok",
"timestamp": 1771206234
}
Valores Posibles:
ok- Servicio operativo ✅degraded- Servicio degradado ⚠️partial_outage- Interrupción parcial 🔴
Endpoints Privados (Monitoreo Interno)
Estos endpoints están restringidos al acceso local (localhost y redes internas) y proporcionan detalles de infraestructura:
https://militant.revlibertaire.com/health.php
https://api.militant.revlibertaire.com/health.php
Respuesta Detallada (solo localhost):
{
"status": "ok",
"timestamp": 1771206234,
"services": {
"database": "ok",
"storage": "ok",
"php": "ok"
}
}
Acceso Externo:
{
"error": "Access denied",
"status": "forbidden"
}
Seguridad: Los endpoints privados solo aceptan conexiones desde 127.0.0.1, ::1 y redes privadas (10.x.x.x, 172.16-31.x.x, 192.168.x.x).
Página de Estado Pública
Consulta el estado de los servicios en tiempo real:
https://militant.revlibertaire.com/status.html
La página consulta automáticamente los endpoints públicos cada 30 segundos.
Funciones
Seguridad y Cuenta
- Autenticación de doble factor (2FA) mediante TOTP (Google Authenticator, Authy...)
- Passkeys (WebAuthn): Inicio de sesión biométrico (huella, rostro)
- Contraseñas cifradas con Argon2ID
- Fail2Ban integrado (protección anti-fuerza bruta)
- Protección estricta contra CSRF, XSS y Rate Limiting
Publicaciones
- Publicaciones con fotos/vídeos (hasta 500MB)
- Rich Link Previews (vistas previas automáticas de enlaces)
- Reacciones emoji
- Comentarios anidados con respuestas
- @menciones con notificaciones
Social
- Mensajes privados con cifrado básico
- Historias efímeras (24h) con navegación táctil
- Feed "Para ti" / "Seguidos" cronológico
- Sistema de amigos y seguidores
- Búsqueda global unificada
Grupos y Colectivos (Mensajería V2)
Un sistema de mensajería instantánea íntegro y completo, diseñado para la organización colectiva.
- Gobernanza horizontal: Todos los miembros son administradores por defecto. Gestión colegiada de miembros y ajustes.
- Mensajes efímeros: Configura la autodestrucción automática (de 1 minuto a 7 días) para tus discusiones sensibles.
- Audio y Medios: Grabación de voz directa (compatible con iOS/Android), envío de fotos y vídeos con visor integrado.
- Seguridad de los intercambios: Aislamiento estricto de los datos de mensajería y alertas en caso de intentos de secuestro de sesión.
- Solicitudes de adhesión: Sistema de validación para grupos privados con cuestionarios personalizables.
Internacionalización
- Interfaz traducida al Francés, Inglés, Español, Esperanto
- Traducción automática de publicaciones y mensajes (LibreTranslate)
- Detección automática de idioma
📱 Interfaz Móvil
Una experiencia optimizada nativamente para smartphones sin necesidad de aplicaciones adicionales.
- Barra de navegación inferior: Acceso rápido a Inicio, Búsqueda, Mensajes, Perfil.
- Menú Offcanvas: Acceso lateral a todas las funciones avanzadas.
- Encabezado adaptativo: Logo y acciones esenciales siempre visibles.
- Badge PWA: Soporte de notificaciones nativas en Android.
Configuración (.env)
| Variable | Descripción | Por defecto (Dev) |
|---|---|---|
DB_HOST |
Host MySQL | db |
DB_NAME |
Nombre de la base | militant |
DB_USER |
Usuario MySQL | militant |
DB_PASS |
Contraseña MySQL | militant123 |
SMTP_HOST |
Servidor SMTP | mailpit |
SMTP_PORT |
Puerto SMTP | 1025 |
APP_URL |
URL pública | http://localhost:9000 |
HCAPTCHA_SITE_KEY |
Clave del sitio hCaptcha | - |
HCAPTCHA_SECRET_KEY |
Clave secreta hCaptcha | - |
Moderación Comunitaria
Sin jerarquía. Decisiones por consenso.
- Reportes tratados por voto comunitario
- 70% de consenso requerido
- Moderadores elegidos y revocables por todos
Idiomas
Disponible en: Français, English, Español, Esperanto
Añadir un idioma: crear lang/xx.php
Aplicación PWA
MILITANT es una Aplicación Web Progresiva (PWA) instalable en móvil y escritorio. Funciona incluso sin conexión.
En Android
- Abre militant.revlibertaire.com en Chrome
- Pulsa el menú ⋮ (tres puntos arriba a la derecha)
- Selecciona "Instalar aplicación" o "Añadir a pantalla de inicio"
- Confirma pulsando en "Instalar"
- El icono de MILITANT aparecerá en tu pantalla de inicio
En iPhone / iPad
- Abre militant.revlibertaire.com en Safari
- Pulsa el botón Compartir (en la parte inferior de la pantalla)
- Desplázate y selecciona "Añadir a la pantalla de inicio"
- Pulsa "Añadir" arriba a la derecha
- El icono de MILITANT aparecerá en tu pantalla de inicio
En ordenador (Chrome, Edge)
- Abre militant.revlibertaire.com
- Haz clic en el icono de instalación en la barra de direcciones
- O ve al menú ⋮ → "Instalar MILITANT"
- La aplicación se abrirá en su propia ventana
Ventajas de la PWA: Acceso rápido desde la pantalla de inicio, notificaciones push, funciona sin conexión, sin necesidad de pasar por una tienda de aplicaciones.