Antimatter Docker: Despliegue autogestionado de la plataforma de mensajería

Publicado por


Docker

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.

Dos variantes de imagen (stable y next) con plugins firmados, compilación reproducible en contenedor y despliegue listo para producción con PostgreSQL y proxy TLS.

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.

git clone https://github.com/AntimatterChat/antimatter-docker.git
cd antimatter-docker

Configurar variables de entorno

Copia el archivo de ejemplo y edita SITE_URL y POSTGRES_PASSWORD como mínimo.

cp .env.example .env
# 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.

docker compose up -d

Despliegue local de prueba (imagen published latest)

Usa compose.local.yml para probar rápidamente con la imagen latest publicada; expone solo en localhost.

docker compose -f compose.local.yml up -d
# 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.

ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d

Despliegue producción (stack completo)

Usa el directorio deploy/compose/ documentado en su README para PostgreSQL, nginx, TLS, Let's Encrypt, backups y actualizaciones.

cd deploy/compose
# 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.

SOURCES=local scripts/build-all.sh
# 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.

PREFER_REF=nueva-funcionalidad scripts/build-all.sh
# 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.

docker login ghcr.io
PUSH=1 TAGS="ghcr.io/antimatterchat/antimatter:1.0.0" scripts/build-image.sh

Variante next

Construye la variante next que incluye plugins adicionales.

VARIANT=next scripts/build-all.sh

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.

# En GitHub Actions: secret ANTIMATTER_PLUGIN_SIGNING_KEY con contenido armored de private-key.asc

Rebuild nocturno de antimatter-next

Los forks pueden disparar rebuild automático al actualizar su rama main mediante repository_dispatch.

# En .github/workflows/rebuild-antimatter-next.yml del fork
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 pull
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.

# Ejemplo dump PostgreSQL
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.

docker compose -f compose.local.yml down -v

Healthcheck

El contenedor incluye healthcheck nativo cada 30s usando amctl system status –local; PostgreSQL tiene healthcheck pg_isready cada 10s.

docker compose ps
# 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)

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *