OpenArchiver: Plataforma de archivado de correo electrónico autohospedada y legalmente conforme
Solución robusta para archivar, almacenar, indexar y buscar correos de Google Workspace, Microsoft 365, IMAP, PST y más, con cumplimiento normativo y sin dependencia de proveedores.
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar OpenArchiver: Plataforma de archivado de correo electrónico autohospedada y legalmente conforme en el canal GENBYTE:
¿Qué es OpenArchiver: Plataforma de archivado de correo electrónico autohospedada y legalmente conforme?
OpenArchiver es una plataforma de código abierto diseñada para el archivado de correo electrónico con cumplimiento legal. Permite a organizaciones y particulares mantener un registro permanente e inalterable de su historial de comunicaciones, libre de dependencia de proveedores (vendor lock-in). El proyecto está desarrollado por LogicLabs-OU y se distribuye bajo licencia AGPL-3.0. Su arquitectura se basa en contenedores Docker y una pila tecnológica moderna que incluye SvelteKit, Node.js, PostgreSQL, Meilisearch, Redis (Valkey) y Apache Tika para extracción de texto.
Características principales
Ingesta universal
Conexión a múltiples fuentes: IMAP genérico, Google Workspace (Gmail), Microsoft 365, archivos PST, archivos .eml comprimidos y formato mbox. Soporta importación masiva inicial y sincronización continua en tiempo real.
Almacenamiento seguro y eficiente
Los correos se guardan en formato estándar .eml con deduplicación y compresión para reducir costes. Cifrado en reposo opcional mediante AES-256. Backends de almacenamiento intercambiables: sistema de archivos local o almacenamiento de objetos compatible con S3 (AWS S3, MinIO, etc.).
Búsqueda y eDiscovery de alto rendimiento
Motor de búsqueda Meilisearch que indexa el texto completo de correos y adjuntos (PDF, DOCX, etc.). Incluye descubrimiento de hilos (thread discovery) para presentar el contexto de las conversaciones.
Cumplimiento y retención
Políticas de retención granulares para gestionar el ciclo de vida de los datos. Bloqueos legales (legal holds) para impedir la eliminación durante litigios (pendiente de implementación). Hashes de archivo almacenados en base de datos para detectar alteraciones; cada correo archivado dispone de un informe de integridad.
Auditoría completa
Registro inmutable de auditoría que registra todas las actividades del sistema, garantizando trazabilidad de quién accedió a qué y cuándo.
Procesamiento asíncrono robusto
Cola de trabajos BullMQ sobre Redis (Valkey) para ingesta, indexación y planificación de sincronización. Workers configurables con control de concurrencia y límites de memoria.
Requisitos del sistema
- Docker y Docker Compose instalados
- Servidor o máquina local con al menos 4 GB de RAM (2 GB si se usan instancias externas de PostgreSQL, Valkey y Meilisearch)
- Node.js >= 22.0.0 y pnpm 10.13.1 para desarrollo local (opcional, no requerido en despliegue Docker)
Instalación con Docker Compose
Clonar el repositorio
Descarga el código fuente desde GitHub y accede al directorio del proyecto.
cd OpenArchiver
Configurar variables de entorno
Copia el archivo de ejemplo y edita los valores según tu entorno: contraseñas de administrador, claves secretas, URLs públicas, configuración de almacenamiento, claves de cifrado, etc. Lee .env.example para conocer cada variable.
# Edita .env con tu editor preferido
Levantar los servicios con Docker Compose
Inicia todos los contenedores (frontend, backend, PostgreSQL, Valkey, Meilisearch, Apache Tika) en segundo plano usando las imágenes preconstruidas.
Acceder al proyecto
Interfaz web
Una vez que los contenedores estén en marcha, accede a la interfaz en http://localhost:3000 (o el puerto configurado en PORT_FRONTEND).
Configuración de fuentes de ingesta
Tras el primer acceso, configura una o más fuentes de ingesta (Google Workspace, Microsoft 365, IMAP genérico, PST, EML, mbox) siguiendo las guías oficiales de la documentación.
Casos de uso
- Archivado legal y regulatorio de comunicaciones corporativas
- eDiscovery y búsqueda forense de correos y adjuntos
- Migración y consolidación de buzones de múltiples proveedores a un repositorio único y soberano
- Cumplimiento de políticas de retención y bloqueos legales (legal holds)
- Eliminación de dependencia de proveedores de correo (vendor lock-in) manteniendo historial completo
- Auditoría de accesos y acciones sobre el archivo de correo
Configuración avanzada
Almacenamiento S3 compatible
Configura STORAGE_TYPE=s3 y define endpoint, bucket, credenciales, región y STORAGE_S3_FORCE_PATH_STYLE=true para MinIO u otros servicios no AWS.
STORAGE_S3_ENDPOINT=https://s3.example.com
STORAGE_S3_BUCKET=open-archiver
STORAGE_S3_ACCESS_KEY_ID=xxxx
STORAGE_S3_SECRET_ACCESS_KEY=xxxx
STORAGE_S3_REGION=us-east-1
STORAGE_S3_FORCE_PATH_STYLE=true
Cifrado en reposo
Genera una clave de 32 bytes en hexadecimal (openssl rand -hex 32) y asígnala a STORAGE_ENCRYPTION_KEY. Sin esta clave, los archivos no se cifran.
Claves maestras de seguridad
Cambia JWT_SECRET y ENCRYPTION_KEY (para credenciales de fuentes de ingesta) por valores aleatorios seguros. Genera con openssl rand -hex 32.
ENCRYPTION_KEY=clave_hex_32_bytes
Extracción de texto con Apache Tika
El servicio Tika se incluye en docker-compose.yml. Define TIKA_URL=http://tika:9998 para activar la extracción avanzada de texto en adjuntos (PDF, Office, etc.). Si no se define, se usa el extractor PDF interno con límites de tiempo y memoria configurables (PDF_PARSE_TIMEOUT_MS, PDF_PARSE_HEAP_BUDGET_RATIO).
Ajuste de rendimiento de indexación
Controla MEILI_INDEXING_BATCH (granularidad de cola), MEILI_INDEXING_CHUNK (documentos por envío a Meilisearch, afecta a memoria), INDEXING_WORKER_CONCURRENCY (jobs simultáneos) e INDEXING_WORKER_MAX_OLD_SPACE_MB (límite de heap del worker).
MEILI_INDEXING_CHUNK=25
INDEXING_WORKER_CONCURRENCY=4
INDEXING_WORKER_MAX_OLD_SPACE_MB=2048
Journaling SMTP (Enterprise)
Disponible solo en versión Enterprise. Permite recibir correos de journaling vía SMTP en puerto 2525 (SMTP_JOURNALING_PORT) con dominio de enrutamiento (SMTP_JOURNALING_DOMAIN). Incluye backpressure y concurrencia de worker configurable.
SMTP_JOURNALING_DOMAIN=journal.tudominio.com
JOURNAL_QUEUE_BACKPRESSURE_THRESHOLD=10000
JOURNAL_WORKER_CONCURRENCY=3
Gestión y mantenimiento
Actualizar imágenes y reiniciar
Descarga las últimas imágenes y recrea los contenedores manteniendo los volúmenes de datos.
docker compose up -d
Ver logs de servicios
Inspecciona la salida de cualquier contenedor para diagnóstico.
# O cualquier otro servicio: postgres, valkey, meilisearch, tika
Ejecutar migraciones de base de datos (desarrollo)
Si actualizas la versión y hay cambios de esquema, ejecuta las migraciones desde el contenedor backend o en entorno de desarrollo.
Backup de volúmenes persistentes
Los datos residen en volúmenes Docker: pgdata (PostgreSQL), valkeydata (Valkey), meilidata (Meilisearch), archiver-data (archivos .eml). Realiza copias de seguridad de estos volúmenes según tu estrategia de backup.
docker run –rm -v openarchiver_archiver-data:/data -v $(pwd):/backup alpine tar czf /backup/archiver-data-$(date +%F).tar.gz -C /data .
Gestión de workers en desarrollo
Para desarrollo local sin Docker, los workers de ingesta, indexación y planificación se inician con comandos específicos.
# Inicia ingestion-worker, indexing-worker y sync-scheduler en modo desarrollo
Stack técnico
- Frontend: SvelteKit con Svelte 5
- Backend: Node.js con Express.js y TypeScript
- Cola de trabajos: BullMQ sobre Redis (Valkey en Docker Compose)
- Motor de búsqueda: Meilisearch
- Base de datos: PostgreSQL 17 (metadatos, usuarios, auditoría)
- Extracción de texto: Apache Tika 3.2.2 (opcional, activado vía TIKA_URL)
- Despliegue: Docker Compose (imagen logiclabshq/open-archiver:latest)
- Gestor de paquetes: pnpm 10.13.1 (monorepo)
- Lenguaje principal: TypeScript
Referencias oficiales
- Repositorio oficial en GitHub: https://github.com/LogicLabs-OU/OpenArchiver
- Sitio web del proyecto: https://openarchiver.com
- Demo en vivo: https://demo.openarchiver.com
- Documentación oficial: https://docs.openarchiver.com
- Comunidad en Discord: https://discord.gg/MTtD7BhuTQ
- Licencia AGPL-3.0: https://www.gnu.org/licenses/agpl-3.0.html
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
