Instalación de Antimatter
Instala Antimatter con el archivo compose preconfigurado, desde el paquete .deb o .rpm de una versión, o desde un archivo de versión. Luego, crea la primera cuenta de administrador.
Instalación con Docker Compose
Esta es la forma recomendada. Un solo archivo compose ejecuta Antimatter, PostgreSQL, el almacenamiento de archivos y el servicio de GIF. Necesita un servidor Linux con Docker Engine y su plugin Compose (docker compose), 2 núcleos de CPU y 4 GB de memoria o más.
1. Descargar el archivo compose
mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml
2. Crear el archivo .env
El archivo compose lee su configuración desde un archivo .env en el mismo directorio. Créelo con secretos aleatorios:
cat > .env <<EOF
SITE_URL=http://localhost:8065
POSTGRES_PASSWORD=$(openssl rand -hex 24)
S3_SECRET_KEY=$(openssl rand -hex 24)
GIFS_API_KEY=$(openssl rand -hex 24)
AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)
EOF
chmod 600 .env
Establece SITE_URL en la dirección que las personas escribirán en su navegador, por ejemplo, http://192.168.1.20:8065 en una red local o https://chat.example.com con un dominio. Conserva el archivo .env: la base de datos y el almacenamiento usan estas contraseñas desde el primer inicio, las claves API de las conexiones de modelos de IA se cifran con AM_AI_ENCRYPTION_KEY, y necesitas el mismo archivo para restaurar una copia de seguridad.
3. Iniciar
docker compose up -d
docker compose ps
El primer inicio tarda uno o dos minutos: PostgreSQL crea la base de datos, un servicio de un solo uso bucket crea el contenedor de almacenamiento, un servicio de un solo uso gifs-stickers importa el paquete de pegatinas inicial y Antimatter crea sus tablas. Sígalo con docker compose logs -f antimatter.
Para usar un nombre de dominio y HTTPS desde el inicio, consulte Dominio y HTTPS: con el archivo compose, son dos líneas más en .env y el perfil https.
Variables del archivo .env
| Variable | Predeterminado | Qué hace |
|---|---|---|
SITE_URL | obligatorio | La dirección pública de Antimatter (ServiceSettings.SiteURL). |
POSTGRES_PASSWORD | obligatorio | Contraseña del usuario de base de datos antimatter. |
S3_SECRET_KEY | obligatorio | Clave secreta del almacenamiento de archivos. |
GIFS_API_KEY | obligatorio | Clave que Antimatter usa para llamar al servicio de GIF. |
AM_AI_ENCRYPTION_KEY | vacío | La clave que cifra las claves API de las conexiones de modelos de IA (openssl rand -base64 32). Si está vacía, el servidor crea un archivo de clave en el volumen data. Consulta La clave de cifrado. |
GIFS_UPLOAD_KEY | vacío | Permite que las personas añadan sus propios GIFs y stickers desde el selector, y los eliminen. Si está vacío, se desactivan las subidas. |
DOMAIN | vacío | Su nombre de dominio, para el perfil https. |
HTTP_PORT | 8065 | Puerto del host del servidor web de Antimatter. |
CALLS_PORT | 8443 | Puerto UDP y TCP del audio y video de las llamadas. |
EDGE_SUBNET | 172.29.71.0/28 | Subred de la red entre Caddy y Antimatter. Cámbiela si se superpone con una de sus redes. |
TZ | UTC | Zona horaria de los contenedores. |
ANTIMATTER_IMAGE | ghcr.io/antimatterchat/antimatter-next:latest | La imagen de Antimatter a ejecutar (ver abajo). |
Lo que se ejecuta
| Servicio | Imagen | Rol |
|---|---|---|
antimatter | ghcr.io/antimatterchat/antimatter-next | El servidor, la aplicación web y las aplicaciones incluidas. Publica HTTP_PORT y CALLS_PORT. Su directorio de datos es el volumen data. |
postgres | postgres:17-alpine | La base de datos, en el volumen postgres. |
files | rustfs/rustfs | Almacenamiento compatible con S3 para los archivos subidos y las aplicaciones instaladas, en el volumen files. |
bucket | amazon/aws-cli | Crea el bucket antimatter y luego termina. |
gifs | ghcr.io/antimatterchat/gifs-server | El servicio de GIF y pegatinas, en el volumen gifs. |
gifs-stickers | ghcr.io/antimatterchat/gifs-server | Importa el pack de pegatinas inicial la primera vez y luego termina. |
https | caddy:2-alpine | Solo con el perfil https: HTTPS en los puertos 80 y 443. |
PostgreSQL, el almacenamiento y el servicio de GIF están en una red interna (private) sin acceso a Internet, a la que solo se une Antimatter. Ninguno de ellos publica un puerto.
El contenedor de Antimatter no guarda nada en el disco: su configuración está en la base de datos (AM_CONFIG apunta a ella) y sus archivos y aplicaciones están en el servicio de almacenamiento. Puedes eliminar y recrear el contenedor en cualquier momento. Su volumen data solo contiene el archivo de clave de cifrado de IA, que el servidor crea cuando AM_AI_ENCRYPTION_KEY está vacío. Todo lo que debes respaldar está en los volúmenes postgres, files, gifs y data, además de tu archivo .env.
Elegir una imagen
Se publican dos imágenes de Antimatter, ambas para linux/amd64 y linux/arm64, y ambas construidas desde la rama main de cada repositorio:
| Imagen | Aplicaciones incluidas | Etiquetas |
|---|---|---|
ghcr.io/antimatterchat/antimatter | Chat de IA, Llamadas, GitHub, GitLab, Jira y Métricas. | latest, X.Y.Z para las versiones, sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | Lo mismo, más Canales de voz, Encuestas, Correo, Calendario, Notas, Pizarra, GIF, Por hacer y Memes. Se reconstruye cada noche. | latest, nightly, nightly-<YYYYMMDD>, sha-<commit> |
Ninguna imagen incluye ya Kanban o Playbooks: instala cualquiera de ellos desde su propia versión de GitHub (consulta más abajo) si lo deseas. Un servidor que ya tenga uno instalado lo conservará tras una actualización.
El archivo compose del sitio usa antimatter-next, porque el servicio de GIF y la mayoría de las aplicaciones descritas en este sitio solo están en esa imagen. Para cambiar la imagen, configura ANTIMATTER_IMAGE en .env y ejecuta docker compose up -d.
latest cambia bajo tus pies. En producción, fija una etiqueta como nightly-20261015 o sha-<commit>, y cámbiala deliberadamente al actualizar. El servidor actualiza su base de datos al iniciarse, por lo que no puedes volver a una imagen anterior, ni pasar de antimatter-next a antimatter, sin restaurar una copia de seguridad tomada antes. Consulta Copias de seguridad y actualizaciones.Dentro de la imagen
- El servidor está en
/antimatter, con los binariosantimatteryamctlen/antimatter/bin(en elPATH). - Se ejecuta como el usuario sin privilegios
antimatter(uid 2000) sobre una base distroless mínima, sin shell. - Puertos: 8065 (web y API), 8067 (métricas), 8074 (clúster), 8443 UDP y TCP (llamadas).
- El modo local (
ServiceSettings.EnableLocalMode) está activado, por lo queamctl --localfunciona dentro del contenedor. La comprobación de estado ejecutaamctl system status --local. - Las aplicaciones incluidas se encuentran en
/antimatter/prepackaged_pluginsy están firmadas con la clave de firma de aplicaciones de Antimatter. - Se incluyen herramientas de extracción de texto (
pdftotext,wvText,unrtf,tidy), de modo que se pueda buscar en el contenido de los documentos subidos.
Otros archivos de compose
El repositorio antimatter-docker incluye una configuración de producción en deploy/compose/: nginx con tus propios certificados o Let's Encrypt (certbot), PostgreSQL, el servicio opcional de GIF (perfil gifs) y volúmenes con nombre para la configuración, los datos y los registros del servidor, todo documentado en su README. Utiliza la imagen estable por defecto y almacena los archivos en un volumen local en lugar de almacenamiento S3. Úsalo si prefieres nginx a Caddy o si ya tienes certificados.
Crear el primer administrador
Abre SITE_URL en tu navegador y crea una cuenta. La primera cuenta creada en un servidor nuevo se convierte en el administrador del sistema, y la configuración te guiará a continuación para crear tu primera comunidad (el nombre que Antimatter da a un equipo o espacio de trabajo).
Hazlo inmediatamente después del primer inicio: hasta entonces, cualquiera que acceda al servidor primero se convertirá en su administrador. Para crear la cuenta desde la línea de comandos en su lugar, antes de que el servidor sea accesible desde el exterior:
docker compose exec antimatter amctl --local user create --system-admin --email-verified \
--email admin@example.com --username admin --password 'a-long-password'
docker compose exec antimatter amctl --local team create --name main --display-name "Main"
docker compose exec antimatter amctl --local team users add main admin
Después, inicia sesión en SITE_URL. Comienza el comando con un espacio para mantener la contraseña fuera del historial de tu shell (con HISTCONTROL=ignorespace), o cambia la contraseña una vez que hayas iniciado sesión.
Próximos pasos una vez que estés dentro:
- Para una empresa u organización, establece Tipo de nuevas comunidades en Espacio de trabajo, y cambia el tipo de una comunidad que ya hayas creado en su configuración: Gremio o espacio de trabajo.
- Decide quién puede crear cuentas: Inicio de sesión y cuentas.
- Configura el correo electrónico para que las invitaciones y los restablecimientos de contraseña funcionen: Correo electrónico y notificaciones push.
- Abre el puerto de las llamadas en tu cortafuegos: Llamadas y voz.
- Comprueba qué aplicaciones están activas: Aplicaciones incluidas.
Descargar una versión
Sin Docker, instale Antimatter desde los archivos de una versión en GitHub: github.com/AntimatterChat/antimatter/releases. Cada versión tiene un número de versión como 0.9.0, y su etiqueta es el mismo número con una v delante (v0.9.0).
0.9.0-rc.1, está marcada como Pre-release en GitHub. Es una versión de prueba, publicada antes de la versión final.Cada versión incluye estos archivos, para servidores amd64 y arm64:
| Archivo | Descripción |
|---|---|
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.deb | El paquete para Debian, Ubuntu y las distribuciones basadas en ellas. |
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpm | El paquete para Fedora, RHEL y las distribuciones compatibles con RHEL. |
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gz | El archivo de la versión, para cualquier distribución Linux, configurado manualmente. |
SHA256SUMS | La suma de comprobación SHA-256 de cada archivo de la versión. |
Los paquetes y el archivo contienen el mismo programa: el servidor (antimatter), la herramienta de línea de comandos (amctl), ambas aplicaciones web (la interfaz predeterminada y la clásica), las aplicaciones incluidas, las plantillas de correo electrónico y las traducciones. Los paquetes añaden un servicio systemd y un archivo de configuración, por lo que cada uno es una instalación todo en uno: solo debe añadir una base de datos PostgreSQL. No hay descargas separadas de binarios: los binarios están en el archivo, en antimatter/bin/. Son estáticos, por lo que se ejecutan en cualquier distribución Linux de su arquitectura.
En los nombres de los paquetes, el guion de una versión previa a la final se convierte en una tilde, para que el gestor de paquetes ordene la versión previa antes de la versión final: la versión 0.9.0-rc.1 da como resultado antimatter_0.9.0~rc.1-1_amd64.deb y antimatter-0.9.0~rc.1-1.x86_64.rpm. El archivo mantiene el guion.
antimatter version muestra el número de versión como Número de compilación, junto con el commit del que se compiló como Hash de compilación. Su línea Versión corresponde a la versión de la línea de Mattermost en la que se basa Antimatter.
Verificar la descarga
Descargue el archivo necesario y SHA256SUMS en el mismo directorio, desde la página de la versión o con curl, y luego verifique el archivo:
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/antimatter_<version>-1_amd64.deb
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
Cada archivo descargado debe aparecer en la lista con OK. Cualquier otro resultado indica que el archivo está dañado o incompleto: descárguelo de nuevo y no lo instale. SHA256SUMS no está firmado: detecta descargas dañadas y no demuestra nada más que la propia descarga HTTPS desde GitHub.
Instalar el paquete .deb o .rpm
El paquete instala Antimatter como un servicio systemd, que solo necesita una base de datos para iniciarse. Utilícelo en un servidor de 64 bits con Debian, Ubuntu, Fedora o compatible con RHEL, que use systemd.
Qué instala el paquete
| Ruta | Contenido |
|---|---|
/opt/antimatter | El programa: bin/antimatter, bin/amctl, las aplicaciones web (client/, client-fusion/), las aplicaciones incluidas (prepackaged_plugins/), las plantillas, las traducciones y las fuentes. Cada actualización lo reemplaza. |
/etc/antimatter/antimatter.env | La configuración del servicio, como variables AM_: la base de datos, la URL del sitio, el servicio de GIF. Solo legible por root. Las actualizaciones la conservan. |
/etc/antimatter/config/config.json | El archivo de configuración, donde el servidor guarda los cambios realizados en la Consola de sistema. Se crea a partir de /opt/antimatter/defaults/config.json en la primera instalación y nunca se reemplaza después. |
/var/lib/antimatter | Archivos subidos (data/) y aplicaciones instaladas (plugins/, client-plugins/). |
/var/log/antimatter | Archivos de registro, si activa el registro en archivos. Está desactivado: los registros van al journal. |
/usr/lib/systemd/system/antimatter.service | El servicio. |
/usr/bin/amctl | Un enlace a /opt/antimatter/bin/amctl. |
Los directorios en los que el servidor escribe dentro de /opt/antimatter (config, data, plugins, client/plugins y logs) son enlaces a /etc/antimatter, /var/lib/antimatter y /var/log/antimatter. Así, una actualización, que reemplaza /opt/antimatter, nunca afecta a sus datos. El paquete también crea el usuario del sistema antimatter, que ejecuta el servidor y es propietario de estos directorios.
El paquete depende de ca-certificates. Recomienda PostgreSQL (postgresql en Debian y Ubuntu, postgresql-server en Fedora y RHEL), media-types (mailcap para el .rpm) y gifs-server, el servicio de GIF, que tiene su propia versión (consulte más abajo). apt y dnf instalan los paquetes recomendados cuando los encuentran. Sugiere poppler-utils, wv, unrtf y tidy (sin wv para el .rpm): extraen el texto de los documentos subidos, para que la búsqueda encuentre palabras dentro de ellos. Instálelos usted mismo si desea esta función.
1. Instalar los paquetes
Descarga el paquete de Antimatter y el paquete del servicio de GIF para tu arquitectura, compruébalos como se muestra arriba e instálalos ambos con un solo comando, para cumplir con la recomendación de gifs-server (no está en los repositorios de las distribuciones):
# Debian, Ubuntu
sudo apt install ./antimatter_<version>-1_amd64.deb ./gifs-server_*_amd64.deb
# Fedora, RHEL
sudo dnf install ./antimatter-<version>-1.x86_64.rpm ./gifs-server-*.x86_64.rpm
Mantén el ./: indica a apt y dnf que instalen un archivo local. Para instalar sin el servicio de GIF, omite su paquete. El paquete habilita el servicio antimatter, pero no lo inicia, e imprime los siguientes pasos.
2. Crear la base de datos
Antimatter necesita PostgreSQL 15 o superior, en este servidor o en otro. Comprueba la versión de PostgreSQL de tu distribución con psql --version. Si es anterior, instala una versión más reciente desde los repositorios propios del proyecto PostgreSQL, o utiliza una base de datos en otro servidor. En Debian y Ubuntu, el paquete postgresql inicia la base de datos. En Fedora y RHEL, créala e iníciala primero:
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
Después, crea un usuario y una base de datos para Antimatter:
sudo -u postgres psql -c "CREATE USER antimatter WITH PASSWORD 'a-long-password'"
sudo -u postgres psql -c "CREATE DATABASE antimatter OWNER antimatter"
PostgreSQL debe aceptar conexiones por contraseña desde 127.0.0.1: las líneas host de su archivo pg_hba.conf, con el método scram-sha-256.
3. Configurar la base de datos y la URL del sitio
Edita /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Elimina el # al principio de las líneas que uses y establece la base de datos y la dirección que abrirán las personas:
AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com
Any setting of the configuration can go in this file, as AM_<SECTION>_<SETTING>: for example, SqlSettings.DataSource is AM_SQLSETTINGS_DATASOURCE. A setting set here can't be changed in the System Console. See Configuration. Restart the server after each change: sudo systemctl restart antimatter.
El servicio también establece algunos valores predeterminados, que una línea en antimatter.env sobrescribe: el registro en archivos está desactivado (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false) y el modo local está activado (AM_SERVICESETTINGS_ENABLELOCALMODE=true), para que amctl --local funcione en el servidor.
4. Iniciar
sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status
En el primer arranque, el servidor crea sus tablas y luego escucha en el puerto 8065. Abre http://<server>:8065 o tu dominio una vez que tengas un proxy inverso configurado (consulta Dominio y HTTPS) y crea la primera cuenta de inmediato: se convertirá en el administrador del sistema. Para crearla desde la línea de comandos, utiliza los comandos amctl de Crear el primer administrador, sustituyendo docker compose exec antimatter amctl --local por sudo -u antimatter amctl --local.
5. Activar GIFs
La aplicación de GIFs viene incluida y activada, y antimatter.env ya la apunta al servicio de GIFs en el mismo servidor (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Aún necesita la clave de API del servicio. El paquete gifs-server generó una durante su instalación:
sudo systemctl start gifs-server-stickers # imports the sticker pack, about a minute and a half
sudo systemctl start gifs-server
sudo grep -v '^#' /etc/gifs-server/api-keys
Coloca la clave en antimatter.env como AM_GIFS_API_KEY=<key> y reinicia Antimatter, o introdúcela como Clave de API en Consola de sistema › Plugins › GIFs. Si el servicio de GIFs se ejecuta en otro servidor, establece AM_GIFS_SERVICE_URL en su dirección. Para permitir que las personas añadan sus propios GIFs y stickers, consulta GIFs.
El servicio
- Se ejecuta como el usuario
antimatter, en/opt/antimatter, y lee/etc/antimatter/antimatter.env. systemd reinicia el servidor cada vez que este finaliza y le otorga hasta una hora para iniciar, ya que las migraciones de base de datos de una nueva versión pueden tardar. - Sus registros están en el journal:
journalctl -u antimatter. - Está endurecido:
/usry/etcson de solo lectura para el servidor, excepto/etc/antimatter/config, y no puede ver/home,/rootni/run/user. Si mueves el almacenamiento de archivos (FileSettings.Directory), elige un directorio fuera de estos, propiedad deantimatter. - Las actualizaciones reemplazan el archivo del servicio. Para modificarlo, utiliza
sudo systemctl edit antimatter, lo que mantiene tus cambios en un archivo separado.
Actualizar un paquete
- Realiza una copia de seguridad (consulta Copias de seguridad y actualizaciones).
- Descarga el nuevo paquete y
SHA256SUMS, y verifícalos. - Detén el servidor, instala el nuevo paquete sobre el anterior y vuelve a iniciarlo:
sudo systemctl stop antimatter sudo apt install ./antimatter_<new version>-1_amd64.deb # or: sudo dnf install ./antimatter-<new version>-1.x86_64.rpm sudo systemctl start antimatter journalctl -u antimatter -f
El paquete no reinicia el servidor por sí mismo. Después de una actualización, muestra Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: si no detuviste el servidor antes, reinícialo de inmediato. La actualización reemplaza /opt/antimatter y el archivo de servicio, y conserva antimatter.env, config.json, /var/lib/antimatter y los registros. Al iniciarse, el servidor actualiza la base de datos e instala las versiones más recientes de las aplicaciones incluidas.
Si una nueva versión cambia el antimatter.env predeterminado, apt pregunta si deseas conservar tu versión: consérvala. dnf conserva la tuya y guarda la nueva como /etc/antimatter/antimatter.env.rpmnew. Las actualizaciones solo avanzan: no instales una versión anterior sobre una más reciente.
Quitar un paquete
sudo apt remove antimatter o sudo dnf remove antimatter detienen y deshabilitan el servicio, y eliminan el programa. Conservan los datos (/var/lib/antimatter), la configuración (/etc/antimatter), la base de datos y el usuario antimatter: elimínalos tú mismo para borrar Antimatter por completo.
Aplicaciones en los paquetes y en el archivo
Los paquetes y el archivo incluyen la última versión firmada de estas aplicaciones, en prepackaged_plugins/: AI chat, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels y Whiteboard. Las aplicaciones que no tenían una versión publicada cuando se creó la versión del servidor se omiten: ls /opt/antimatter/prepackaged_plugins muestra lo que incluye tu versión. Memes y Todo están incluidos pero no activados: Aplicaciones incluidas explica cómo instalarlas y activarlas.
Kanban y Playbooks ya no se incluyen con el servidor ni con ninguna de las imágenes de Docker: un servidor que ya tenga una instalada la conserva tras una actualización, y los demás usuarios deben instalarla desde su propia versión, igual que las aplicaciones siguientes. Las otras aplicaciones de las imágenes de Docker tampoco están en los paquetes ni en el archivo: Mail, Calendar, GitHub, GitLab, Jira y Metrics. Instala cada una, incluidas Kanban y Playbooks, desde sus propias versiones:
| Aplicación | Versiones | Id de la aplicación |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Playbooks | antimatter-plugin-playbooks | playbooks |
| Correo | antimatter-plugin-mail | com.antimatterchat.mail |
| Calendario | antimatter-plugin-calendar | com.antimatterchat.calendar |
| GitHub | antimatter-plugin-github | github |
| GitLab | antimatter-plugin-gitlab | com.github.manland.mattermost-plugin-gitlab |
| Jira | antimatter-plugin-jira | jira |
| Métricas | Antimatter-plugin-metrics | com.mattermost.mattermost-plugin-metrics |
Cada versión de una aplicación incluye el paquete de la aplicación (un archivo .tar.gz), su firma (el mismo nombre con .sig añadido) y un archivo SHA256SUMS. Para instalar una aplicación, permite las subidas y luego añade el paquete con amctl:
# 1. In /etc/antimatter/antimatter.env, add this line, then restart Antimatter
AM_PLUGINSETTINGS_ENABLEUPLOADS=true
sudo systemctl restart antimatter
# 2. Download the bundle where the antimatter user can read it, and install it
cd /tmp
curl -fLO https://github.com/AntimatterChat/antimatter-plugin-boards/releases/download/v<version>/<bundle>.tar.gz
sudo -u antimatter amctl --local plugin add <bundle>.tar.gz
sudo -u antimatter amctl --local plugin enable focalboard
Para actualizar una aplicación instalada de esta manera, añade el nuevo paquete con plugin add --force: las actualizaciones de paquetes solo actualizan las aplicaciones incluidas. Puedes eliminar de nuevo la línea AM_PLUGINSETTINGS_ENABLEUPLOADS después. Consulta Instalar otras aplicaciones para conocer las otras formas de instalar aplicaciones.
Firmas de aplicaciones
Los paquetes de aplicaciones están firmados con la clave de firma de aplicaciones de Antimatter: cada archivo .tar.gz.sig es una firma GPG desasociada de su paquete. El servidor comprueba estas firmas antes de instalar una aplicación incluida. Para comprobar un paquete tú mismo:
curl -fsSLO https://raw.githubusercontent.com/AntimatterChat/antimatter-docker/main/keys/antimatter-plugin-signing.asc
gpg --import antimatter-plugin-signing.asc
gpg --verify <bundle>.tar.gz.sig <bundle>.tar.gz
gpg debe informar de una firma válida de Antimatter Plugin Signing, con la huella digital 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. También advierte de que la clave no está certificada con una firma de confianza: esto es normal para una clave que no hayas firmado tú mismo. Una versión de la aplicación sin archivos .sig no está firmada, y sus notas de la versión lo indican.
Instalar desde un archivo de liberación
El archivo antimatter-<version>-linux-<arch>.tar.gz (por ejemplo, antimatter-0.9.0-linux-amd64.tar.gz) es adecuado para una distribución sin paquetes .deb o .rpm, o para una estructura propia. Contiene un único directorio antimatter/ con bin/antimatter, bin/amctl, config/config.json, las aplicaciones web (client/ y client-fusion/), las aplicaciones incluidas (prepackaged_plugins/, consulta arriba), las plantillas de correo electrónico y las traducciones.
1. Preparar PostgreSQL
Antimatter solo admite PostgreSQL, versión 15 o posterior (las versiones anteriores se inician, pero generan un error en el registro). Crea un usuario y una base de datos:
sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF
2. Descomprimir y configurar
sudo tar -xzf antimatter-<version>-linux-amd64.tar.gz -C /opt
sudo useradd --system --user-group antimatter
sudo mkdir -p /opt/antimatter/data
sudo chown -R antimatter:antimatter /opt/antimatter
Indica al servidor la base de datos, ya sea en /opt/antimatter/config/config.json (SqlSettings.DataSource) o mediante variables de entorno, y establece la URL del sitio:
AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com
El config.json del archivo es una configuración predeterminada completa: los ajustes que cambies en la Consola de sistema se guardan en él. Para mantener la configuración en la base de datos en su lugar, consulta Configuración.
3. Ejecutarlo como un servicio
Una unidad de systemd, en /etc/systemd/system/antimatter.service:
[Unit]
Description=Antimatter
After=network.target postgresql.service
[Service]
Type=notify
User=antimatter
Group=antimatter
WorkingDirectory=/opt/antimatter
ExecStart=/opt/antimatter/bin/antimatter
EnvironmentFile=-/etc/antimatter.env
TimeoutStartSec=3600
Restart=always
RestartSec=10
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Coloca tus variables AM_ en /etc/antimatter.env (legible solo por root) y luego:
sudo systemctl daemon-reload
sudo systemctl enable --now antimatter
journalctl -u antimatter -f
El servidor escucha en el puerto 8065. Abre http://<server>:8065, o tu dominio una vez que esté configurado un proxy inverso (consulta Dominio y HTTPS), y crea la primera cuenta: esta se convertirá en el administrador del sistema.
bin/amctl gestiona el servidor en ejecución desde la línea de comandos. En el propio servidor, funciona sin iniciar sesión mediante el modo local: establece AM_SERVICESETTINGS_ENABLELOCALMODE=true y luego ejecuta sudo -u antimatter /opt/antimatter/bin/amctl --local system status.
Para los GIF, instala el servicio de GIF (consulta más abajo) y establece AM_GIFS_SERVICE_URL y AM_GIFS_API_KEY como en el paso 5 de los paquetes.
Los paquetes del servicio de GIF y del proxy de notificaciones push
El servicio de GIF y el proxy de notificaciones push tienen sus propias versiones, con las mismas reglas que el servidor: un archivo .tar.gz, un paquete .deb y uno .rpm para amd64 y arm64, y un archivo SHA256SUMS. Las versiones con un guion son versiones previas. Compruebe las descargas con sha256sum --check --ignore-missing SHA256SUMS, igual que con el servidor.
El servicio de GIF (gifs-server)
Versiones: github.com/AntimatterChat/gifs-server/releases. El archivo es gifs-server-<version>-linux-<arch>.tar.gz; los paquetes se llaman gifs-server.
sudo apt install ./gifs-server_*_amd64.deb # Debian, Ubuntu
sudo dnf install ./gifs-server-*.x86_64.rpm # Fedora, RHEL
El paquete instala:
/usr/bin/gifs-servery el serviciogifs-server, que se ejecuta como usuariogifs-servery mantiene su catálogo en/var/lib/gifs-server;- el servicio
gifs-server-stickers, que importa o actualiza el paquete de pegatinas en/usr/share/gifs-server/stickerscuando se inicia, y luego se detiene; - su configuración,
/etc/gifs-server/gifs-server.env(variablesAM_GIFS_, que se conservan en las actualizaciones), y/etc/gifs-server/api-keys, una clave API por línea, con una clave aleatoria generada en la primera instalación.
Escucha en 127.0.0.1:8080, por lo que solo Antimatter en el mismo servidor puede acceder a él. Si Antimatter se ejecuta en otro lugar, configure AM_GIFS_LISTEN=:8080 en gifs-server.env y restrinja el acceso al puerto con su cortafuegos. El archivo enumera el resto de la configuración: AM_GIFS_UPLOAD_KEYS (las claves permitidas para añadir GIF y pegatinas, y para eliminar los añadidos con ellas), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY y AM_GIFS_LOG_LEVEL. El paquete recomienda ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools para el .rpm) y una fuente DejaVu: el servicio los utiliza para generar los formatos de GIF, vídeo y pegatina al importar o recibir archivos, y funciona sin ellos.
Al igual que el servidor, el servicio se habilita pero no se inicia durante la instalación. Inícielo como se muestra en el paso 5 de los paquetes. Después de una actualización, reinícielo: sudo systemctl restart gifs-server. Al desinstalar el paquete, el catálogo en /var/lib/gifs-server se conserva.
El proxy de notificaciones push
Versiones: github.com/AntimatterChat/push-proxy/releases. El archivo es antimatter-push-proxy-<version>-linux-<arch>.tar.gz; los paquetes se llaman antimatter-push-proxy. El paquete instala /usr/bin/antimatter-push-proxy y el servicio antimatter-push-proxy, que se ejecuta como usuario antimatter-push-proxy y lee /etc/antimatter-push-proxy/antimatter-push-proxy.json (se conserva en las actualizaciones). Las credenciales de Apple y Firebase se ubican en /etc/antimatter-push-proxy/certs: Notificaciones móviles explica de dónde provienen.
sudo apt install ./antimatter-push-proxy_*_amd64.deb # or: sudo dnf install ./antimatter-push-proxy-*.x86_64.rpm
sudo install -o root -g antimatter-push-proxy -m 0640 \
AuthKey_ABCDE12345.p8 firebase-service-account.json /etc/antimatter-push-proxy/certs/
sudoedit /etc/antimatter-push-proxy/antimatter-push-proxy.json
sudo systemctl start antimatter-push-proxy
journalctl -u antimatter-push-proxy -f
En el archivo de configuración, las rutas son relativas a /etc/antimatter-push-proxy: por ejemplo, "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" y "ServiceFileLocation": "./certs/firebase-service-account.json". A continuación, en Antimatter, establezca Servidor de Notificaciones Móviles en http://<proxy host>:8066. Después de una actualización, reinicie el servicio: sudo systemctl restart antimatter-push-proxy.
Otros comandos del servidor
Además de ejecutar el servidor (antimatter o antimatter server), el binario tiene algunos comandos de mantenimiento. Leen la misma configuración que el servidor.
| Comando | Qué hace |
|---|---|
antimatter version | Imprime la versión, el número de compilación, la fecha de compilación y el hash de compilación. |
antimatter db ping | Comprueba que la base de datos es accesible. |
antimatter db init | Crea la configuración en la base de datos (con AM_CONFIG establecido en una URL postgres://). |
antimatter db migrate | Aplica las migraciones de la base de datos sin iniciar el servidor. |
antimatter db version | Imprime la última migración aplicada a la base de datos. |
antimatter import bulk, antimatter export bulk | Importa o exporta datos en el formato por lotes (consulta Copias de seguridad y actualizaciones). |