Installazione di Antimatter
Installa Antimatter con il file compose pronto all'uso, dal pacchetto .deb o .rpm di un rilascio, o da un archivio di rilascio. Quindi crea il primo account amministratore.
Installazione con Docker Compose
Questo è il metodo consigliato. Un file compose avvia Antimatter, PostgreSQL, l'archiviazione file e il servizio GIF. È necessario un server Linux con Docker Engine e il plugin Compose (docker compose), 2 core CPU e 4 GB di memoria o più.
1. Scarica il file compose
mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml
2. Crea il file .env
Il file compose legge le sue impostazioni da un file .env nella stessa directory. Crealo con segreti casuali:
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
Imposta SITE_URL all'indirizzo che le persone digiteranno nel browser, ad esempio http://192.168.1.20:8065 su una rete locale o https://chat.example.com con un dominio. Conserva il file .env: il database e l'archiviazione utilizzano queste password dal primo avvio, le chiavi API delle connessioni ai modelli AI sono crittografate con AM_AI_ENCRYPTION_KEY e lo stesso file è necessario per ripristinare un backup.
3. Avvialo
docker compose up -d
docker compose ps
Il primo avvio richiede uno o due minuti: PostgreSQL crea il database, un servizio one-shot bucket crea il bucket di archiviazione, un servizio one-shot gifs-stickers importa il pacchetto di adesivi iniziale e Antimatter crea le sue tabelle. Segui il processo con docker compose logs -f antimatter.
Per utilizzare un nome di dominio e HTTPS fin dall'inizio, consulta Dominio e HTTPS: con il file compose si tratta di due righe aggiuntive in .env e del profilo https.
Le variabili .env
| Variabile | Predefinito | Funzione |
|---|---|---|
SITE_URL | obbligatorio | L'indirizzo pubblico di Antimatter (ServiceSettings.SiteURL). |
POSTGRES_PASSWORD | obbligatorio | Password dell'utente del database antimatter. |
S3_SECRET_KEY | obbligatorio | Chiave segreta dell'archiviazione file. |
GIFS_API_KEY | obbligatorio | Chiave che Antimatter utilizza per chiamare il servizio GIF. |
AM_AI_ENCRYPTION_KEY | vuoto | La chiave che crittografa le chiavi API delle connessioni ai modelli AI (openssl rand -base64 32). Se vuoto, il server crea un file di chiave nel volume data. Consulta La chiave di crittografia. |
GIFS_UPLOAD_KEY | vuoto | Permette alle persone di aggiungere le proprie GIF e adesivi dal selettore e di eliminarli. Se vuoto, disattiva i caricamenti. |
DOMAIN | vuoto | Il tuo nome di dominio, per il profilo https. |
HTTP_PORT | 8065 | Porta host del server web di Antimatter. |
CALLS_PORT | 8443 | Porte UDP e TCP per l'audio e il video delle chiamate. |
EDGE_SUBNET | 172.29.71.0/28 | Sottorete della rete tra Caddy e Antimatter. Modificala se sovrappone una delle tue reti. |
TZ | UTC | Fuso orario dei contenitori. |
ANTIMATTER_IMAGE | ghcr.io/antimatterchat/antimatter-next:latest | L'immagine Antimatter da eseguire (vedi sotto). |
Cosa viene eseguito
| Servizio | Immagine | Ruolo |
|---|---|---|
antimatter | ghcr.io/antimatterchat/antimatter-next | Il server, l'app web e le app integrate. Pubblica HTTP_PORT e CALLS_PORT. La sua directory dati è il volume data. |
postgres | postgres:17-alpine | Il database, nel volume postgres. |
files | rustfs/rustfs | Archiviazione compatibile con S3 per i file caricati e le app installate, nel volume files. |
bucket | amazon/aws-cli | Crea il bucket antimatter, quindi termina. |
gifs | ghcr.io/antimatterchat/gifs-server | Il servizio GIF e sticker, nel volume gifs. |
gifs-stickers | ghcr.io/antimatterchat/gifs-server | Importa il pacchetto di sticker iniziale la prima volta, quindi termina. |
https | caddy:2-alpine | Solo con il profilo https: HTTPS sulle porte 80 e 443. |
PostgreSQL, l'archiviazione e il servizio GIF sono su una rete interna (private) senza accesso a Internet, alla quale si unisce solo Antimatter. Nessuno di essi pubblica una porta.
Il contenitore Antimatter non conserva nulla su disco: le sue impostazioni sono nel database (AM_CONFIG punta ad esso) e i suoi file e app sono nel servizio di archiviazione. Puoi rimuovere e ricreare il contenitore in qualsiasi momento. Il suo volume data contiene solo il file della chiave di crittografia AI, che il server crea quando AM_AI_ENCRYPTION_KEY è vuoto. Tutto ciò che va fatto in backup è nei volumi postgres, files, gifs e data, oltre al tuo .env.
Scegli un'immagine
Sono pubblicate due immagini Antimatter, entrambe per linux/amd64 e linux/arm64, e entrambe costruite dalla branch main di ogni repository:
| Immagine | App integrate | Tag |
|---|---|---|
ghcr.io/antimatterchat/antimatter | Agenti, Chiamate, GitHub, GitLab, Jira, Kanban, Metriche e Playbook. | latest, X.Y.Z per le release, sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | Le stesse, più Canali vocali, Sondaggi, Posta, Calendario, Note, Lavagna, GIF, Da fare e Meme. Ricostruita ogni notte. | latest, nightly, nightly-<YYYYMMDD>, sha-<commit> |
Il file compose del sito utilizza antimatter-next, perché il servizio GIF e la maggior parte delle app descritte su questo sito sono presenti solo in quell'immagine. Per cambiare immagine, imposta ANTIMATTER_IMAGE in .env ed esegui docker compose up -d.
latest sotto di te. In produzione, fissa un tag come nightly-20261015 o sha-<commit> e modificalo deliberatamente quando esegui un aggiornamento. Il server aggiorna il database all'avvio, quindi non puoi tornare a un'immagine precedente, o passare da antimatter-next a antimatter, senza ripristinare un backup creato in precedenza. Consulta Backup e aggiornamenti.All'interno dell'immagine
- Il server risiede in
/antimatter, con i binariantimattereamctlin/antimatter/bin(nellaPATH). - Viene eseguito come utente non privilegiato
antimatter(uid 2000) su una base distroless minimale, senza shell. - Porte: 8065 (web e API), 8067 (metriche), 8074 (cluster), 8443 UDP e TCP (chiamate).
- La modalità locale (
ServiceSettings.EnableLocalMode) è attiva, quindiamctl --localfunziona all'interno del contenitore. Il controllo di integrità esegueamctl system status --local. - Le app incluse sono in
/antimatter/prepackaged_plugins, firmate con la chiave di firma delle app Antimatter. - Sono inclusi gli strumenti per l'estrazione del testo (
pdftotext,wvText,unrtf,tidy), in modo da poter cercare nel contenuto dei documenti caricati.
Altri file compose
Il repository antimatter-docker contiene una configurazione di produzione in deploy/compose/: nginx con certificati propri o Let's Encrypt (certbot), PostgreSQL, il servizio GIF opzionale (profilo gifs) e volumi denominati per la configurazione, i dati e i log del server, documentati nel relativo README. Utilizza l'immagine stabile di default e archivia i file su un volume locale anziché su storage S3. Usalo se preferisci nginx a Caddy, o se disponi già di certificati.
Creare il primo amministratore
Apri SITE_URL nel browser e crea un account. Il primo account creato su un nuovo server diventa amministratore di sistema, e la configurazione ti guiderà quindi nella creazione della tua prima community (il nome che Antimatter dà a un team o a un'area di lavoro).
Eseguilo subito dopo il primo avvio: fino a quel momento, chiunque raggiunga il server per primo ne diventa l'amministratore. Per creare l'account da riga di comando invece, prima che il server sia raggiungibile dall'esterno:
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
Quindi accedi a SITE_URL. Inizia il comando con uno spazio per non includere la password nella cronologia della shell (con HISTCONTROL=ignorespace), oppure cambia la password dopo l'accesso.
Passi successivi una volta dentro:
- Per un'azienda o un'organizzazione, imposta Tipo di nuove community su Ambiente di lavoro e cambia il tipo di una community già creata nelle sue impostazioni: Ambiente di lavoro o community.
- Decidi chi può creare account: Accesso e account.
- Configura la posta elettronica, in modo che gli inviti e il reimpostazione delle password funzionino: Posta elettronica e notifiche push.
- Apri la porta delle chiamate nel firewall: Chiamate e voce.
- Verifica quali app sono attive: App integrate.
Scarica una release
Senza Docker, installa Antimatter dai file di una release su GitHub: github.com/AntimatterChat/antimatter/releases. Ogni release ha un numero di versione come 0.9.0 e il suo tag è lo stesso numero con una v davanti (v0.9.0).
0.9.0-rc.1, è contrassegnata come Pre-release su GitHub. È una versione di test, pubblicata prima della release finale.Ogni release ha questi file, per server amd64 e arm64:
| File | Di cosa si tratta |
|---|---|
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.deb | Il pacchetto per Debian, Ubuntu e le distribuzioni basate su di esse. |
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpm | Il pacchetto per Fedora, RHEL e le distribuzioni compatibili con RHEL. |
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gz | L'archivio della release, per qualsiasi distribuzione Linux, da configurare manualmente. |
SHA256SUMS | Il checksum SHA-256 di tutti i file della release. |
I pacchetti e l'archivio contengono lo stesso programma: il server (antimatter), lo strumento da riga di comando (amctl), entrambe le app web (l'interfaccia predefinita e quella classica), le app integrate, i modelli di posta elettronica e le traduzioni. I pacchetti aggiungono un servizio systemd e un file di configurazione, quindi ciascuno è un'installazione all-in-one: devi solo aggiungere un database PostgreSQL. Non ci sono download separati dei binari: i binari sono nell'archivio, in antimatter/bin/. Sono statici, quindi funzionano su qualsiasi distribuzione Linux della loro architettura.
Nei nomi dei pacchetti, il trattino di una versione prerelease diventa una tilde, in modo che il gestore pacchetti ordini la prerelease prima della release finale: la versione 0.9.0-rc.1 produce antimatter_0.9.0~rc.1-1_amd64.deb e antimatter-0.9.0~rc.1-1.x86_64.rpm. L'archivio mantiene il trattino.
antimatter version stampa la versione di rilascio come Numero di compilazione, con l'hash dell'commit da cui è stata compilata come Hash della build. La riga Versione indica la versione della linea Mattermost su cui si basa Antimatter.
Verifica del download
Scarica il file necessario e SHA256SUMS nella stessa directory, dalla pagina di rilascio o con curl, quindi verifica il file:
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
Ogni file scaricato deve essere elencato con OK. Qualsiasi altro risultato indica che il file è danneggiato o incompleto: scaricalo di nuovo e non installarlo. SHA256SUMS non è firmato: rileva un download danneggiato, ma non dimostra nulla di più di quanto faccia il download HTTPS da GitHub.
Installazione del pacchetto .deb o .rpm
Il pacchetto installa Antimatter come servizio systemd, che ha bisogno solo di un database per avviarsi. Usalo su un server a 64 bit compatibile con Debian, Ubuntu, Fedora o RHEL, dotato di systemd.
Cosa installa il pacchetto
| Percorso | Contenuto |
|---|---|
/opt/antimatter | I programmi: bin/antimatter, bin/amctl, le app web (client/, client-fusion/), le app integrate (prepackaged_plugins/), i modelli, le traduzioni e i font. Ogni aggiornamento lo sostituisce. |
/etc/antimatter/antimatter.env | Le impostazioni del servizio, come variabili AM_: il database, l'URL del sito, il servizio GIF. Leggibile solo da root. Gli aggiornamenti lo mantengono. |
/etc/antimatter/config/config.json | Il file di configurazione, in cui il server salva le impostazioni modificate nella Console di Sistema. Viene creato da /opt/antimatter/defaults/config.json alla prima installazione e non viene mai sostituito dopo. |
/var/lib/antimatter | I file caricati (data/) e le app installate (plugins/, client-plugins/). |
/var/log/antimatter | I file di log, se si attiva la registrazione su file. È disattivata: i log vanno nel journal. |
/usr/lib/systemd/system/antimatter.service | Il servizio. |
/usr/bin/amctl | Un collegamento a /opt/antimatter/bin/amctl. |
Le directory in cui il server scrive in /opt/antimatter (config, data, plugins, client/plugins e logs) sono collegamenti a /etc/antimatter, /var/lib/antimatter e /var/log/antimatter. In questo modo, un aggiornamento, che sostituisce /opt/antimatter, non tocca mai i tuoi dati. Il pacchetto crea anche l'utente di sistema antimatter, che esegue il server e possiede queste directory.
Il pacchetto dipende da ca-certificates. Raccomanda PostgreSQL (postgresql su Debian e Ubuntu, postgresql-server su Fedora e RHEL), media-types (mailcap per il .rpm) e gifs-server, il servizio GIF, che ha una propria release (vedi di seguito). apt e dnf installano i pacchetti raccomandati quando li trovano. Suggerisce poppler-utils, wv, unrtf e tidy (nessun wv per il .rpm): estraggono il testo dei documenti caricati, in modo che la ricerca trovi le parole al loro interno. Installali tu stesso se desideri questa funzionalità.
1. Installare i pacchetti
Scarica il pacchetto Antimatter e il pacchetto del servizio GIF della tua architettura, verificali come mostrato sopra e installali entrambi in un unico comando, in modo da soddisfare la raccomandazione di gifs-server (non è presente nei repository delle distribuzioni):
# 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
Mantieni ./: indica ad apt e dnf di installare un file locale. Per installare senza il servizio GIF, ometti il relativo pacchetto. Il pacchetto abilita il servizio antimatter ma non lo avvia, e stampa i passaggi successivi.
2. Creare il database
Antimatter richiede PostgreSQL 15 o una versione successiva, su questo server o su un altro. Controlla la versione di PostgreSQL della tua distribuzione con psql --version. Se è più vecchia, installa una versione più recente dai repository ufficiali del progetto PostgreSQL, oppure usa un database su un altro server. Su Debian e Ubuntu, il pacchetto postgresql avvia il database. Su Fedora e RHEL, crealo e avvialo prima:
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
Quindi crea un utente e un database per 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 deve accettare connessioni con password da 127.0.0.1: le righe host del file pg_hba.conf, con il metodo scram-sha-256.
3. Configurare il database e l'URL del sito
Modifica /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Rimuovi il # davanti alle righe che utilizzi e configura il database e l'indirizzo che le persone apriranno:
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
Qualsiasi impostazione della configurazione può essere inserita in questo file, come AM_<SECTION>_<SETTING>: ad esempio, SqlSettings.DataSource è AM_SQLSETTINGS_DATASOURCE. Un'impostazione definita qui non può essere modificata nella Console di Sistema. Consulta Configurazione. Riavvia il server dopo ogni modifica: sudo systemctl restart antimatter.
Il servizio imposta anche alcuni valori predefiniti, che una riga in antimatter.env può sovrascrivere: la registrazione nei file è disattivata (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false) e la modalità locale è attivata (AM_SERVICESETTINGS_ENABLELOCALMODE=true), in modo che amctl --local funzioni sul server.
4. Avvialo
sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status
Al primo avvio, il server crea le sue tabelle, quindi ascolta sulla porta 8065. Apri http://<server>:8065, oppure il tuo dominio una volta configurato un reverse proxy (vedi Dominio e HTTPS), e crea subito il primo account: questo diventerà l'amministratore di sistema. Per crearlo invece da riga di comando, usa i comandi amctl di Creare il primo amministratore, sostituendo docker compose exec antimatter amctl --local con sudo -u antimatter amctl --local.
5. Attiva le GIF
L'app GIF è inclusa e attivata, e antimatter.env la punta già al servizio GIF sullo stesso server (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Serve ancora la chiave API del servizio. Il pacchetto gifs-server ne ha generata una durante l'installazione:
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
Inserisci la chiave in antimatter.env come AM_GIFS_API_KEY=<key> e riavvia Antimatter, oppure inseriscila come Chiave API in Console di Sistema › Plugins › GIF. Se il servizio GIF è in esecuzione su un altro server, imposta AM_GIFS_SERVICE_URL sul suo indirizzo. Per consentire alle persone di aggiungere le proprie GIF e sticker, consulta GIF.
Il servizio
- Viene eseguito come utente
antimatter, in/opt/antimatter, e legge/etc/antimatter/antimatter.env. systemd riavvia il server ogni volta che termina, concedendogli fino a un'ora per l'avvio, poiché le migrazioni del database di una nuova versione possono richiedere molto tempo. - I suoi log si trovano nel journal:
journalctl -u antimatter. - È protetto:
/usre/etcsono in sola lettura per il server, ad eccezione di/etc/antimatter/config, e non può vedere/home,/rooto/run/user. Se sposti l'archiviazione dei file (FileSettings.Directory), scegli una directory esterna a queste, di proprietà diantimatter. - Gli aggiornamenti sostituiscono il file di servizio. Per modificarlo, usa
sudo systemctl edit antimatter, che conserva le tue modifiche in un file separato.
Aggiorna un pacchetto
- Effettua un backup (vedi Backup e aggiornamenti).
- Scarica il nuovo pacchetto e
SHA256SUMS, e verificali. - Arresta il server, installa il nuovo pacchetto sopra quello precedente e riavvialo:
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
Il pacchetto non riavvia il server in autonomia. Dopo un aggiornamento, viene stampato Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: se non hai arrestato il server in precedenza, riavvialo immediatamente. L'aggiornamento sostituisce /opt/antimatter e il file di servizio, e conserva antimatter.env, config.json, /var/lib/antimatter e i log. All'avvio, il server aggiorna il database e installa le versioni più recenti delle app incluse.
Se una nuova versione modifica il file antimatter.env predefinito, apt chiede se conservare la tua versione: conservalo. dnf conserva la tua e salva la nuova come /etc/antimatter/antimatter.env.rpmnew. Gli aggiornamenti avvengono solo in avanti: non installare una versione precedente sopra una più recente.
Rimuovi un pacchetto
sudo apt remove antimatter o sudo dnf remove antimatter arresta e disabilita il servizio, e rimuove il programma. Conserva i dati (/var/lib/antimatter), la configurazione (/etc/antimatter), il database e l'utente antimatter: eliminali manualmente per rimuovere Antimatter completamente.
App nei pacchetti e nell'archivio
I pacchetti e l'archivio includono l'ultima release firmata di queste app, in prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels e Whiteboard. Un'app che non ha ancora una release al momento della creazione della release del server viene esclusa: ls /opt/antimatter/prepackaged_plugins mostra cosa include la tua release. Memes e Todo sono incluse ma non attivate: App integrate spiega come installarle e attivarle.
Le altre app delle immagini Docker non sono nei pacchetti o nell'archivio: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira e Metrics. Installa ciascuna di esse dalle proprie release:
| App | Releases | ID app |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Playbook | antimatter-plugin-playbooks | playbooks |
| Posta | 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 |
| Metriche | Antimatter-plugin-metrics | com.mattermost.mattermost-plugin-metrics |
Ogni release di un'app contiene il bundle dell'app (un file .tar.gz), la sua firma (stesso nome con .sig aggiunto) e un file SHA256SUMS. Per installare un'app, consenti i caricamenti, quindi aggiungi il bundle 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
Per aggiornare un'app installata in questo modo, aggiungi il nuovo bundle con plugin add --force: gli aggiornamenti dei pacchetti aggiornano solo le app integrate. Puoi rimuovere la riga AM_PLUGINSETTINGS_ENABLEUPLOADS in seguito. Consulta Installazione di altre app per gli altri metodi di installazione delle app.
Firme delle app
I bundle delle app sono firmati con la chiave di firma delle app Antimatter: ogni file .tar.gz.sig è una firma GPG separata del rispettivo bundle. Il server verifica queste firme prima di installare un'app integrata. Per verificare un bundle manualmente:
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 deve riportare una firma valida da Antimatter Plugin Signing, con l'impronta 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Avvisa anche che la chiave non è certificata con una firma di fiducia: è normale per una chiave che non hai firmato tu stesso. Un rilascio di un'app senza file .sig è non firmato, e le note di rilascio lo indicano.
Installazione da un archivio di rilascio
L'archivio, antimatter-<version>-linux-<arch>.tar.gz (ad esempio antimatter-0.9.0-linux-amd64.tar.gz), è adatto a distribuzioni senza pacchetti .deb o .rpm, o a configurazioni personalizzate. Contiene un'unica directory antimatter/ con bin/antimatter, bin/amctl, config/config.json, le app web (client/ e client-fusion/), le app integrate (prepackaged_plugins/, vedi sopra), i modelli di email e le traduzioni.
1. Preparare PostgreSQL
Antimatter supporta solo PostgreSQL, versione 15 o successiva (le versioni precedenti si avviano, ma con un errore nel log). Crea un utente e un database:
sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF
2. Estrai e configura
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 server il database, oppure in /opt/antimatter/config/config.json (SqlSettings.DataSource) oppure con variabili di ambiente, e imposta l'URL del sito:
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
Il file config.json dell'archivio è una configurazione predefinita completa: le impostazioni modificate nella Console di Sistema vengono salvate di nuovo in questo file. Per mantenere la configurazione nel database invece, consulta Configurazione.
3. Esecuzione come servizio
Un'unità systemd, in /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
Metti le tue variabili AM_ in /etc/antimatter.env (leggibile solo da root), quindi:
sudo systemctl daemon-reload
sudo systemctl enable --now antimatter
journalctl -u antimatter -f
Il server ascolta sulla porta 8065. Apri http://<server>:8065, oppure il tuo dominio una volta configurato un proxy inverso (vedi Dominio e HTTPS), e crea il primo account: diventerà l'amministratore di sistema.
bin/amctl gestisce il server in esecuzione dalla riga di comando. Sullo stesso server, funziona senza accesso tramite modalità locale: imposta AM_SERVICESETTINGS_ENABLELOCALMODE=true, quindi esegui sudo -u antimatter /opt/antimatter/bin/amctl --local system status.
Per le GIF, installa il servizio GIF (vedi sotto) e configura AM_GIFS_SERVICE_URL e AM_GIFS_API_KEY come indicato in il passo 5 dei pacchetti.
I pacchetti del servizio GIF e del proxy push
Il servizio GIF e il proxy push hanno le proprie release, con le stesse regole del server: un archivio .tar.gz, un pacchetto .deb e un .rpm per amd64 e arm64, e un file SHA256SUMS. Le versioni con un trattino sono prerelease. Verifica i download con sha256sum --check --ignore-missing SHA256SUMS, come per il server.
Il servizio GIF (gifs-server)
Release: github.com/AntimatterChat/gifs-server/releases. L'archivio è gifs-server-<version>-linux-<arch>.tar.gz; i pacchetti si chiamano gifs-server.
sudo apt install ./gifs-server_*_amd64.deb # Debian, Ubuntu
sudo dnf install ./gifs-server-*.x86_64.rpm # Fedora, RHEL
Il pacchetto installa:
/usr/bin/gifs-servere il serviziogifs-server, che viene eseguito come utentegifs-servere mantiene il catalogo in/var/lib/gifs-server;- il servizio
gifs-server-stickers, che importa o aggiorna il pacchetto di sticker in/usr/share/gifs-server/stickersall'avvio, per poi arrestarsi; - le sue impostazioni,
/etc/gifs-server/gifs-server.env(variabiliAM_GIFS_, conservate durante gli aggiornamenti) e/etc/gifs-server/api-keys, con una chiave API per riga, inclusa una chiave casuale generata al primo install.
Ascolta su 127.0.0.1:8080, quindi solo Antimatter sullo stesso server può accedervi. Se Antimatter viene eseguito altrove, imposta AM_GIFS_LISTEN=:8080 in gifs-server.env e limita l'accesso alla porta tramite il firewall. Il file elenca le altre impostazioni: AM_GIFS_UPLOAD_KEYS (le chiavi autorizzate ad aggiungere GIF e sticker, e a eliminare quelli aggiunti con esse), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY e AM_GIFS_LOG_LEVEL. Il pacchetto raccomanda ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools per il .rpm) e un font DejaVu: il servizio li utilizza per creare i formati GIF, video e sticker quando importa o riceve file, e funziona anche senza di essi.
Come per il server, il servizio è abilitato ma non avviato all'installazione. Avvialo come mostrato in passo 5 dei pacchetti. Dopo un aggiornamento, riavvialo: sudo systemctl restart gifs-server. La rimozione del pacchetto conserva il catalogo in /var/lib/gifs-server.
Il proxy push
Rilasci: github.com/AntimatterChat/push-proxy/releases. L'archivio è antimatter-push-proxy-<version>-linux-<arch>.tar.gz; i pacchetti si chiamano antimatter-push-proxy. Il pacchetto installa /usr/bin/antimatter-push-proxy e il servizio antimatter-push-proxy, che viene eseguito come utente antimatter-push-proxy e legge /etc/antimatter-push-proxy/antimatter-push-proxy.json (conservato durante gli aggiornamenti). Le credenziali Apple e Firebase vanno in /etc/antimatter-push-proxy/certs: Notifiche push spiega da dove provengono.
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
Nel file di configurazione, i percorsi sono relativi a /etc/antimatter-push-proxy: ad esempio "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" e "ServiceFileLocation": "./certs/firebase-service-account.json". Quindi imposta Server notifiche push in Antimatter su http://<proxy host>:8066. Dopo un aggiornamento, riavvialo: sudo systemctl restart antimatter-push-proxy.
Altri comandi del server
Oltre all'esecuzione del server (antimatter, oppure antimatter server), il binario dispone di alcuni comandi di manutenzione. Questi leggono la stessa configurazione del server.
| Comando | Funzione |
|---|---|
antimatter version | Stampa la versione, il numero di build, la data di build e l'hash di build. |
antimatter db ping | Verifica che il database sia raggiungibile. |
antimatter db init | Crea la configurazione nel database (con AM_CONFIG impostato su un URL postgres://). |
antimatter db migrate | Applica le migrazioni del database senza avviare il server. |
antimatter db version | Stampa l'ultima migrazione applicata al database. |
antimatter import bulk, antimatter export bulk | Importa o esporta dati nel formato bulk (vedi Backup e aggiornamenti). |