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

VariabilePredefinitoFunzione
SITE_URLobbligatorioL'indirizzo pubblico di Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDobbligatorioPassword dell'utente del database antimatter.
S3_SECRET_KEYobbligatorioChiave segreta dell'archiviazione file.
GIFS_API_KEYobbligatorioChiave che Antimatter utilizza per chiamare il servizio GIF.
AM_AI_ENCRYPTION_KEYvuotoLa 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_KEYvuotoPermette alle persone di aggiungere le proprie GIF e adesivi dal selettore e di eliminarli. Se vuoto, disattiva i caricamenti.
DOMAINvuotoIl tuo nome di dominio, per il profilo https.
HTTP_PORT8065Porta host del server web di Antimatter.
CALLS_PORT8443Porte UDP e TCP per l'audio e il video delle chiamate.
EDGE_SUBNET172.29.71.0/28Sottorete della rete tra Caddy e Antimatter. Modificala se sovrappone una delle tue reti.
TZUTCFuso orario dei contenitori.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestL'immagine Antimatter da eseguire (vedi sotto).

Cosa viene eseguito

ServizioImmagineRuolo
antimatterghcr.io/antimatterchat/antimatter-nextIl server, l'app web e le app integrate. Pubblica HTTP_PORT e CALLS_PORT. La sua directory dati è il volume data.
postgrespostgres:17-alpineIl database, nel volume postgres.
filesrustfs/rustfsArchiviazione compatibile con S3 per i file caricati e le app installate, nel volume files.
bucketamazon/aws-cliCrea il bucket antimatter, quindi termina.
gifsghcr.io/antimatterchat/gifs-serverIl servizio GIF e sticker, nel volume gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverImporta il pacchetto di sticker iniziale la prima volta, quindi termina.
httpscaddy:2-alpineSolo 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:

ImmagineApp integrateTag
ghcr.io/antimatterchat/antimatterAgenti, Chiamate, GitHub, GitLab, Jira, Kanban, Metriche e Playbook.latest, X.Y.Z per le release, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextLe 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.

modifiche 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 binari antimatter e amctl in /antimatter/bin (nella PATH).
  • 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, quindi amctl --local funziona all'interno del contenitore. Il controllo di integrità esegue amctl 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:

  1. 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.
  2. Decidi chi può creare account: Accesso e account.
  3. Configura la posta elettronica, in modo che gli inviti e il reimpostazione delle password funzionino: Posta elettronica e notifiche push.
  4. Apri la porta delle chiamate nel firewall: Chiamate e voce.
  5. 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).

Antimatter è in beta: le sue release sono della serie 0.9.0. Una release la cui versione ha un suffisso dopo un trattino, come 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:

FileDi cosa si tratta
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debIl pacchetto per Debian, Ubuntu e le distribuzioni basate su di esse.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmIl pacchetto per Fedora, RHEL e le distribuzioni compatibili con RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzL'archivio della release, per qualsiasi distribuzione Linux, da configurare manualmente.
SHA256SUMSIl 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

PercorsoContenuto
/opt/antimatterI 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.envLe 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.jsonIl 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/antimatterI file caricati (data/) e le app installate (plugins/, client-plugins/).
/var/log/antimatterI file di log, se si attiva la registrazione su file. È disattivata: i log vanno nel journal.
/usr/lib/systemd/system/antimatter.serviceIl servizio.
/usr/bin/amctlUn 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: /usr e /etc sono in sola lettura per il server, ad eccezione di /etc/antimatter/config, e non può vedere /home, /root o /run/user. Se sposti l'archiviazione dei file (FileSettings.Directory), scegli una directory esterna a queste, di proprietà di antimatter.
  • 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

  1. Effettua un backup (vedi Backup e aggiornamenti).
  2. Scarica il nuovo pacchetto e SHA256SUMS, e verificali.
  3. 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:

AppReleasesID app
Kanbanantimatter-plugin-boardsfocalboard
Playbookantimatter-plugin-playbooksplaybooks
Postaantimatter-plugin-mailcom.antimatterchat.mail
Calendarioantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MetricheAntimatter-plugin-metricscom.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-server e il servizio gifs-server, che viene eseguito come utente gifs-server e 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/stickers all'avvio, per poi arrestarsi;
  • le sue impostazioni, /etc/gifs-server/gifs-server.env (variabili AM_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.

Il proxy push ascolta sulla porta 8066 su tutti gli indirizzi e non verifica chi lo chiama. Mantieni la porta su una rete privata, o dietro un proxy inverso che ne restringa l'accesso.

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.

ComandoFunzione
antimatter versionStampa la versione, il numero di build, la data di build e l'hash di build.
antimatter db pingVerifica che il database sia raggiungibile.
antimatter db initCrea la configurazione nel database (con AM_CONFIG impostato su un URL postgres://).
antimatter db migrateApplica le migrazioni del database senza avviare il server.
antimatter db versionStampa l'ultima migrazione applicata al database.
antimatter import bulk, antimatter export bulkImporta o esporta dati nel formato bulk (vedi Backup e aggiornamenti).