Antimatter Docker: Despliegue autogestionado de la plataforma de mensajería
Imagen oficial con servidor y plugins preempaquetados, firmados y listos para producción en arquitecturas amd64 y arm64
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar Antimatter Docker: Despliegue autogestionado de la plataforma de mensajería en el canal GENBYTE:
¿Qué es Antimatter Docker: Despliegue autogestionado de la plataforma de mensajería?
Antimatter Docker es el repositorio oficial que construye la imagen Docker lista para usar de Antimatter, una plataforma de mensajería y colaboración derivada de Mattermost. La imagen incluye el servidor Antimatter y sus plugins oficiales preempaquetados (Agents, Boards, Calls, GitHub, GitLab, Jira, Metrics, Playbooks en la variante stable; además Voice Channels, Polls, Mail, Calendar, Notes, Whiteboard, GIFs, Todo, Memes en la variante next), firmados con la clave de firma de plugins de Antimatter para instalación offline desde el Marketplace. Se publica en GHCR para linux/amd64 y linux/arm64, y el proceso de compilación completo se ejecuta dentro de contenedores para garantizar reproducibilidad entre builds locales y de CI.
Características principales
Variantes stable y next
Imagen stable (ghcr.io/antimatterchat/antimatter) con plugins principales; imagen next (ghcr.io/antimatterchat/antimatter-next) añade plugins experimentales como Voice Channels, Polls, Mail, Calendar, Notes, Whiteboard, GIFs, Todo y Memes.
Plugins firmados y verificables
Todos los plugins se firman con la clave privada de firma de Antimatter; el servidor verifica la firma contra la clave pública embebida, permitiendo instalación offline segura desde el Marketplace.
Compilación reproducible en contenedor
Todo el toolchain (clonado de repos, build de plugins y servidor, firma, empaquetado de imagen) se ejecuta dentro de Docker mediante docker/build.Dockerfile, garantizando idénticos resultados en local y en GitHub Actions.
Arquitectura multi-plataforma
Imágenes publicadas para linux/amd64 y linux/arm64 desde el mismo pipeline; el Dockerfile final usa base distroless (gcr.io/distroless/base-debian12) para superficie de ataque mínima.
Despliegue listo para producción
Incluye docker-compose.yml mínimo y stack completo en deploy/compose/ con PostgreSQL, nginx (TLS, websockets), puerto Calls, servicio GIF opcional, Let's Encrypt, primer admin, actualizaciones y backups.
Compatibilidad con variables MM_*
El servidor sigue leyendo configuración mediante variables de entorno MM_* (MM_SQLSETTINGS_DATASOURCE, MM_SERVICESETTINGS_SITEURL, etc.); los alias AM_* llegarán con el rebranding completo.
Requisitos del sistema
- Docker con plugin buildx (paquete docker-buildx)
- Python 3
- git
- gpg
- Permisos para usar Docker (grupo docker)
- ~16 GB de RAM para la compilación del frontend (BUILD_NODE_OPTIONS en build.env)
- ~30 GB de espacio en disco
Instalación con Docker Compose
Clonar el repositorio
Clona antimatter-docker y opcionalmente los repositorios del servidor y plugins junto a él para builds locales.
cd antimatter-docker
Configurar variables de entorno
Copia el archivo de ejemplo y edita SITE_URL y POSTGRES_PASSWORD como mínimo.
# Edita .env con tu editor preferido
# SITE_URL=https://chat.tu-dominio.org
# POSTGRES_PASSWORD=contraseña-larga-aleatoria
Despliegue mínimo (sin proxy TLS)
Levanta la pila con PostgreSQL y Antimatter en puertos locales. Requiere docker login ghcr.io si el paquete es privado.
Despliegue local de prueba (imagen published latest)
Usa compose.local.yml para probar rápidamente con la imagen latest publicada; expone solo en localhost.
# Abre http://localhost:8065 y crea la primera cuenta (system admin)
Probar imagen construida localmente
Tras construir con scripts/build-image.sh, usa la etiqueta dev en compose.local.yml.
Despliegue producción (stack completo)
Usa el directorio deploy/compose/ documentado en su README para PostgreSQL, nginx, TLS, Let's Encrypt, backups y actualizaciones.
# Seguir instrucciones del README allí presente
Acceder al proyecto
Interfaz web
Accede a http://localhost:8065 (o al SITE_URL configurado) tras levantar la pila. La primera cuenta creada se convierte en administrador del sistema.
Puertos expuestos
8065 TCP: interfaz web y API; 8067 TCP: métricas; 8074 TCP: gossip de clúster; 8443 UDP/TCP: medios de Calls (RTC). En producción, coloca un proxy TLS delante del puerto 8065 y abre 8443 UDP/TCP en el firewall del host.
CLI de administración
El binario amctl está disponible en /antimatter/bin dentro del contenedor para tareas de administración (ej. amctl system status –local).
Casos de uso
- Comunicación interna autogestionada para equipos y organizaciones que requieren control total de datos
- Colaboración con pizarras (Boards), llamadas de voz/vídeo (Calls), gestión de incidencias (Playbooks) y agentes automatizados (Agents)
- Integración con GitHub, GitLab y Jira para flujos de desarrollo
- Entornos air-gapped o con políticas estrictas de firma de plugins
- Despliegue en arquitecturas ARM (ej. Raspberry Pi 4/5, servidores ARM64) gracias a imágenes multi-arquitectura
Configuración avanzada
Build local con fuentes propias
Compila desde checkouts locales situados junto al repo (../antimatter, ../antimatter-plugin-*) usando la rama actual de cada uno.
# Resultado cargado como ghcr.io/antimatterchat/antimatter:dev
Build especificando ramas o tags
Define SERVER_REF, REF_<PLUGIN> o PREFER_REF para compilar ramas concretas en varios repositorios a la vez.
# O por componente:
SERVER_REF=mi-rama REF_CALLS=mi-rama-calls scripts/build-all.sh
Publicar imagen multi-plataforma
Tras build local, etiqueta y sube a GHCR autenticado.
PUSH=1 TAGS="ghcr.io/antimatterchat/antimatter:1.0.0" scripts/build-image.sh
Variante next
Construye la variante next que incluye plugins adicionales.
Firma de plugins
La clave privada nunca entra en el repo; sign-plugins.sh la lee de ANTIMATTER_PLUGIN_SIGNING_KEY, ANTIMATTER_PLUGIN_SIGNING_KEY_FILE o ~/.config/antimatter/plugin-signing/private-key.asc. Mantén backup offline de la clave y del certificado de revocación.
Rebuild nocturno de antimatter-next
Los forks pueden disparar rebuild automático al actualizar su rama main mediante repository_dispatch.
on:
push:
branches: [main]
jobs:
dispatch:
runs-on: ubuntu-latest
steps:
– run: gh api repos/AntimatterChat/antimatter-docker/dispatches -f event_type=main-updated
env:
GH_TOKEN: ${{ secrets.ANTIMATTER_DOCKER_DISPATCH_TOKEN }}
Gestión y mantenimiento
Actualización de imagen
Actualiza la etiqueta en .env (ANTIMATTER_IMAGE) y recrea el contenedor; los datos persisten en volúmenes nombrados.
docker compose up -d
Backup de datos
Los volúmenes postgres, config, data, logs, plugins y client-plugins contienen estado persistente. Realiza snapshots o dumps de PostgreSQL y copia de los volúmenes.
docker compose exec postgres pg_dump -U antimatter antimatter > backup.sql
Limpieza de entorno de prueba
Elimina contenedores, redes y volúmenes de compose.local.yml.
Healthcheck
El contenedor incluye healthcheck nativo cada 30s usando amctl system status –local; PostgreSQL tiene healthcheck pg_isready cada 10s.
# Ver estado healthy/unhealthy
Stack técnico
- Docker / Docker Compose
- Docker Buildx (multi-platform)
- Debian 12 (builder stage)
- Distroless base-debian12 (runtime)
- PostgreSQL 17 Alpine
- Go (servidor Antimatter)
- TypeScript/React (webapp)
- Shell scripts (orquestación de build)
- Python 3 (herramientas de build)
- GPG (firma de plugins)
- nginx (proxy TLS en stack producción)
Referencias oficiales
- Repositorio antimatter-docker: https://github.com/AntimatterChat/antimatter-docker
- Imagen stable en GHCR: https://ghcr.io/antimatterchat/antimatter
- Imagen next en GHCR: https://ghcr.io/antimatterchat/antimatter-next
- Documentación de deploy/compose: https://github.com/AntimatterChat/antimatter-docker/tree/main/deploy/compose
- Licencia Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
