Instalando o Antimatter

Instale o Antimatter com o arquivo compose pronto, a partir do pacote .deb ou .rpm de uma liberação, ou de um arquivo de liberação. Em seguida, crie a conta do primeiro administrador.

Instalar com Docker Compose

Esta é a maneira recomendada. Um único arquivo compose executa o Antimatter, o PostgreSQL, o armazenamento de arquivos e o serviço de GIFs. Você precisa de um servidor Linux com Docker Engine e seu plugin Compose (docker compose), 2 núcleos de CPU e 4 GB de memória ou mais.

1. Baixe o arquivo compose

mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml

2. Crie o arquivo .env

O arquivo compose lê suas configurações de um arquivo .env no mesmo diretório. Crie-o com segredos aleatórios:

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

Defina SITE_URL com o endereço que as pessoas digitarão no navegador, por exemplo http://192.168.1.20:8065 em uma rede local ou https://chat.example.com com um domínio. Mantenha o arquivo .env: o banco de dados e o armazenamento usam essas senhas desde a primeira inicialização, as chaves de API das conexões de modelos de IA são criptografadas com AM_AI_ENCRYPTION_KEY, e você precisa do mesmo arquivo para restaurar um backup.

3. Inicie

docker compose up -d
docker compose ps

A primeira inicialização leva um ou dois minutos: o PostgreSQL cria o banco de dados, um serviço de uso único bucket cria o bucket de armazenamento, um serviço de uso único gifs-stickers importa o pacote inicial de figurinhas e o Antimatter cria suas tabelas. Acompanhe com docker compose logs -f antimatter.

Para usar um nome de domínio e HTTPS desde o início, consulte Domínio e HTTPS: com o arquivo compose, são apenas duas linhas a mais no .env e no perfil https.

As variáveis do .env

VariávelPadrãoO que faz
SITE_URLobrigatórioO endereço público do Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDobrigatórioSenha do usuário do banco de dados antimatter.
S3_SECRET_KEYobrigatórioChave secreta do armazenamento de arquivos.
GIFS_API_KEYobrigatórioChave que o Antimatter usa para chamar o serviço de GIFs.
AM_AI_ENCRYPTION_KEYvazioA chave que criptografa as chaves de API das conexões de modelos de IA (openssl rand -base64 32). Vazio: o servidor cria um arquivo de chave no volume data. Veja A chave de criptografia.
GIFS_UPLOAD_KEYvazioPermite que as pessoas adicionem seus próprios GIFs e figurinhas do seletor e que as excluam. Vazio desativa os uploads.
DOMAINvazioSeu nome de domínio, para o perfil https.
HTTP_PORT8065Porta do host do servidor web do Antimatter.
CALLS_PORT8443Porta UDP e TCP do áudio e vídeo das chamadas.
EDGE_SUBNET172.29.71.0/28Sub-rede da rede entre o Caddy e o Antimatter. Altere-a se sobrepuar uma de suas redes.
TZUTCFuso horário dos contêineres.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestA imagem do Antimatter a ser executada (veja abaixo).

O que é executado

ServiçoImagemFunção
antimatterghcr.io/antimatterchat/antimatter-nextO servidor, o aplicativo web e os aplicativos incluídos. Publica HTTP_PORT e CALLS_PORT. Seu diretório de dados é o volume data.
postgrespostgres:17-alpineO banco de dados, no volume postgres.
filesrustfs/rustfsArmazenamento compatível com S3 para arquivos enviados e aplicativos instalados, no volume files.
bucketamazon/aws-cliCria o bucket antimatter e, em seguida, encerra.
gifsghcr.io/antimatterchat/gifs-serverO serviço de GIFs e figurinhas, no volume gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverImporta o pacote de figurinhas inicial na primeira vez e, em seguida, encerra.
httpscaddy:2-alpineSomente com o perfil https: HTTPS nas portas 80 e 443.

O PostgreSQL, o armazenamento e o serviço de GIFs estão em uma rede interna (private) sem acesso à Internet, à qual apenas o Antimatter se conecta. Nenhum deles publica uma porta.

O contêiner do Antimatter não mantém nada no disco: suas configurações estão no banco de dados (AM_CONFIG aponta para ele) e seus arquivos e aplicativos estão no serviço de armazenamento. Você pode remover e recriar o contêiner a qualquer momento. Seu volume data apenas contém o arquivo da chave de criptografia de IA, que o servidor cria quando AM_AI_ENCRYPTION_KEY está vazio. Tudo que precisa ser feito backup está nos volumes postgres, files, gifs e data, além do seu .env.

Escolha uma imagem

Duas imagens do Antimatter são publicadas, ambas para linux/amd64 e linux/arm64, e ambas construídas a partir da branch main de cada repositório:

ImagemAplicativos incluídosTags
ghcr.io/antimatterchat/antimatterAgentes, Chamadas, GitHub, GitLab, Jira, Kanban, Métricas e Playbooks.latest, X.Y.Z para lançamentos, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextO mesmo, mais Canais de Voz, Enquetes, E-mail, Calendário, Notas, Quadro Branco, GIFs, Tarefas e Memes. Reconstruída todas as noites.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

O arquivo compose do site usa antimatter-next, porque o serviço de GIFs e a maioria dos aplicativos descritos neste site estão apenas nessa imagem. Para alterar a imagem, defina ANTIMATTER_IMAGE no .env e execute docker compose up -d.

latest muda sob seus pés. Em produção, fixe uma tag como nightly-20261015 ou sha-<commit>, e altere-a intencionalmente ao atualizar. O servidor atualiza seu banco de dados ao iniciar, então você não pode voltar para uma imagem mais antiga, ou de antimatter-next para antimatter, sem restaurar um backup feito anteriormente. Veja Backups e atualizações.

Dentro da imagem

  • O servidor fica em /antimatter, com os binários antimatter e amctl em /antimatter/bin (no PATH).
  • Ele é executado como o usuário sem privilégios antimatter (uid 2000) em uma base distroless mínima, sem shell.
  • Portas: 8065 (web e API), 8067 (métricas), 8074 (cluster), 8443 UDP e TCP (chamadas).
  • O modo local (ServiceSettings.EnableLocalMode) está ativado, portanto amctl --local funciona dentro do contêiner. A verificação de integridade executa amctl system status --local.
  • Os aplicativos incluídos estão em /antimatter/prepackaged_plugins, assinados com a chave de assinatura de aplicativos do Antimatter.
  • As ferramentas de extração de texto (pdftotext, wvText, unrtf, tidy) estão incluídas, permitindo que o conteúdo de documentos enviados seja pesquisado.

Outros arquivos compose

O repositório antimatter-docker possui uma configuração de produção em deploy/compose/: nginx com seus próprios certificados ou Let's Encrypt (certbot), PostgreSQL, o serviço opcional de GIF (perfil gifs) e volumes nomeados para a configuração, os dados e os logs do servidor, documentados em seu README. Ele usa a imagem estável por padrão e armazena os arquivos em um volume local, em vez de armazenamento S3. Use-o se preferir nginx ao Caddy ou se já tiver certificados.

Criar o primeiro administrador

Abra SITE_URL no seu navegador e crie uma conta. A primeira conta criada em um novo servidor se torna o administrador do sistema, e a configuração, em seguida, orienta você a criar sua primeira comunidade (o nome que o Antimatter dá a uma equipe ou espaço de trabalho).

Faça isso logo após a primeira inicialização: até lá, qualquer pessoa que acessar o servidor primeiro se tornará seu administrador. Para criar a conta pela linha de comando, antes de o servidor ficar acessível de fora:

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

Depois, faça login em SITE_URL. Comece o comando com um espaço para manter a senha fora do histórico do seu shell (com HISTCONTROL=ignorespace), ou altere a senha após fazer login.

Próximas etapas após entrar:

  1. Para uma empresa ou organização, defina Tipo de novas comunidades como Ambiente de trabalho e altere o tipo de uma comunidade que você já criou nas configurações dela: Ambiente de trabalho ou comunidade.
  2. Defina quem pode criar contas: Login e contas.
  3. Configure o e-mail, para que convites e redefinições de senha funcionem: E-mail e notificações push.
  4. Abra a porta de chamadas no seu firewall: Chamadas e voz.
  5. Verifique quais aplicativos estão ativados: Aplicativos incluídos.

Baixar uma liberação

Sem Docker, instale o Antimatter a partir dos arquivos de uma liberação no GitHub: github.com/AntimatterChat/antimatter/releases. Cada liberação tem um número de versão, como 0.9.0, e sua tag é o mesmo número com um v na frente (v0.9.0).

O Antimatter está em beta: suas versões pertencem à série 0.9.0. Uma versão com um sufixo após um hífen, como 0.9.0-rc.1, é marcada como Pre-release no GitHub. Trata-se de uma versão de teste, publicada antes da versão final.

Cada versão inclui os seguintes arquivos, para servidores amd64 e arm64:

ArquivoDescrição
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debO pacote para Debian, Ubuntu e distribuições baseadas nelas.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmO pacote para Fedora, RHEL e distribuições compatíveis com RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzO arquivo de distribuição, para qualquer distribuição Linux, configurado manualmente.
SHA256SUMSO checksum SHA-256 de todos os arquivos da versão.

Os pacotes e o arquivo contêm o mesmo programa: o servidor (antimatter), a ferramenta de linha de comando (amctl), ambos os aplicativos web (a interface padrão e a clássica), os aplicativos incluídos, os modelos de e-mail e as traduções. Os pacotes adicionam um serviço systemd e um arquivo de configurações, tornando cada um uma instalação completa: você só precisa adicionar um banco de dados PostgreSQL. Não há downloads de binários separados: os binários estão no arquivo, em antimatter/bin/. Eles são estáticos, portanto, funcionam em qualquer distribuição Linux da sua arquitetura.

Nos nomes dos pacotes, o hífen de uma versão de pré-lançamento é substituído por um til, para que o gerenciador de pacotes ordene a pré-lançamento antes da versão final: a versão 0.9.0-rc.1 gera antimatter_0.9.0~rc.1-1_amd64.deb e antimatter-0.9.0~rc.1-1.x86_64.rpm. O arquivo mantém o hífen.

antimatter version exibe a versão da liberação como Número de Compilação, com o commit de origem como Hash de Compilação. A linha Versão indica a versão da linha Mattermost na qual o Antimatter é baseado.

Verificar o download

Baixe o arquivo necessário e o SHA256SUMS para o mesmo diretório, seja pela página de versões ou usando curl, e depois verifique o arquivo:

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 arquivo baixado deve estar listado com OK. Qualquer outro resultado indica que o arquivo está danificado ou incompleto: baixe-o novamente e não o instale. O SHA256SUMS não é assinado: ele detecta downloads danificados, mas não prova mais do que o download via HTTPS do GitHub.

Instalar o pacote .deb ou .rpm

O pacote instala o Antimatter como um serviço systemd, que só precisa de um banco de dados para iniciar. Use-o em um servidor 64 bits compatível com Debian, Ubuntu, Fedora ou RHEL, com systemd.

O que o pacote instala

CaminhoConteúdo
/opt/antimatterO programa: bin/antimatter, bin/amctl, os aplicativos web (client/, client-fusion/), os aplicativos incluídos (prepackaged_plugins/), os modelos, as traduções e as fontes. Cada atualização substitui esse conteúdo.
/etc/antimatter/antimatter.envAs configurações do serviço, como variáveis AM_: o banco de dados, a URL do site, o serviço de GIF. Somente a raiz pode ler. As atualizações mantêm esse conteúdo.
/etc/antimatter/config/config.jsonO arquivo de configuração, onde o servidor salva as configurações alteradas no Console do Sistema. Ele é criado a partir de /opt/antimatter/defaults/config.json na primeira instalação e nunca é substituído depois disso.
/var/lib/antimatterArquivos enviados (data/) e aplicativos instalados (plugins/, client-plugins/).
/var/log/antimatterArquivos de log, se você ativar o registro em arquivo. Ele está desativado: os logs vão para o journal.
/usr/lib/systemd/system/antimatter.serviceO serviço.
/usr/bin/amctlUm link para /opt/antimatter/bin/amctl.

Os diretórios para os quais o servidor grava em /opt/antimatter (config, data, plugins, client/plugins e logs) são links para /etc/antimatter, /var/lib/antimatter e /var/log/antimatter. Assim, uma atualização, que substitui /opt/antimatter, nunca afeta seus dados. O pacote também cria o usuário do sistema antimatter, que executa o servidor e possui esses diretórios.

O pacote depende de ca-certificates. Ele recomenda PostgreSQL (postgresql no Debian e Ubuntu, postgresql-server no Fedora e RHEL), media-types (mailcap para o .rpm) e gifs-server, o serviço de GIF, que tem sua própria liberação (veja abaixo). O apt e o dnf instalam os pacotes recomendados quando os encontram. Ele sugere poppler-utils, wv, unrtf e tidy (sem wv para o .rpm): eles extraem o texto de documentos enviados, para que a pesquisa encontre palavras dentro deles. Instale-os você mesmo, se desejar isso.

1. Instalar os pacotes

Baixe o pacote do Antimatter e o pacote do serviço de GIF da sua arquitetura, verifique-os conforme mostrado acima e instale ambos em um único comando, para que a recomendação de gifs-server seja atendida (ele não está nos repositórios das distribuições):

# 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

Mantenha o ./: ele informa ao apt e ao dnf para instalar um arquivo local. Para instalar sem o serviço de GIF, exclua o respectivo pacote. O pacote habilita o serviço antimatter, mas não o inicia, e exibe as próximas etapas.

2. Criar o banco de dados

O Antimatter requer PostgreSQL 15 ou mais recente, neste servidor ou em outro. Verifique a versão do PostgreSQL da sua distribuição com psql --version. Se for mais antiga, instale uma versão mais recente dos repositórios próprios do projeto PostgreSQL ou use um banco de dados em outro servidor. No Debian e no Ubuntu, o pacote postgresql inicia o banco de dados. No Fedora e no RHEL, crie e inicie-o primeiro:

sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql

Em seguida, crie um usuário e um banco de dados para o Antimatter:

sudo -u postgres psql -c "CREATE USER antimatter WITH PASSWORD 'a-long-password'"
sudo -u postgres psql -c "CREATE DATABASE antimatter OWNER antimatter"

O PostgreSQL deve aceitar conexões com senha de 127.0.0.1: as linhas host do arquivo pg_hba.conf, com o método scram-sha-256.

3. Configurar o banco de dados e a URL do site

Edite /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Remova o # à frente das linhas que você vai usar e configure o banco de dados e o endereço que as pessoas vão abrir:

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

Qualquer configuração pode ser incluída neste arquivo, no formato AM_<SECTION>_<SETTING>: por exemplo, SqlSettings.DataSource é AM_SQLSETTINGS_DATASOURCE. Uma configuração definida aqui não pode ser alterada no Console do Sistema. Consulte Configuração. Reinicie o servidor após cada alteração: sudo systemctl restart antimatter.

O serviço também define alguns padrões, que podem ser sobrescritos por uma linha no antimatter.env: o registro em arquivos está desativado (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false) e o modo local está ativado (AM_SERVICESETTINGS_ENABLELOCALMODE=true), para que amctl --local funcione no servidor.

4. Iniciar

sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status

Na primeira inicialização, o servidor cria as tabelas e, em seguida, escuta na porta 8065. Abra http://<server>:8065, ou seu domínio, assim que um proxy reverso estiver configurado (veja Domínio e HTTPS), e crie imediatamente a primeira conta: ela se tornará o administrador do sistema. Para criá-la pela linha de comando, use os comandos amctl de Criar o primeiro administrador, substituindo docker compose exec antimatter amctl --local por sudo -u antimatter amctl --local.

5. Ativar GIFs

O aplicativo de GIFs é incluído e ativado, e antimatter.env já o aponta para o serviço de GIFs no mesmo servidor (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Ainda é necessária a chave de API do serviço. O pacote gifs-server gerou uma chave durante a instalação:

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

Insira a chave em antimatter.env como AM_GIFS_API_KEY=<key> e reinicie o Antimatter, ou insira-a como Chave de API em Console do Sistema › Plugins › GIFs. Se o serviço de GIFs estiver em outro servidor, defina AM_GIFS_SERVICE_URL com o endereço correspondente. Para permitir que as pessoas adicionem seus próprios GIFs e figurinhas, consulte GIFs.

O serviço

  • Ele é executado como o usuário antimatter, em /opt/antimatter, e lê /etc/antimatter/antimatter.env. O systemd reinicia o servidor sempre que ele é encerrado e permite até uma hora para a inicialização, pois as migrações do banco de dados de uma nova versão podem demorar.
  • Os logs estão no journal: journalctl -u antimatter.
  • O serviço é protegido: /usr e /etc são somente leitura para o servidor, exceto /etc/antimatter/config, e ele não tem acesso a /home, /root ou /run/user. Se você mover o armazenamento de arquivos (FileSettings.Directory), escolha um diretório fora desses, pertencente a antimatter.
  • As atualizações substituem o arquivo do serviço. Para modificá-lo, use sudo systemctl edit antimatter, que mantém suas alterações em um arquivo separado.

Atualizar um pacote

  1. Faça um backup (veja Backups e atualizações).
  2. Baixe o novo pacote e o SHA256SUMS, e verifique-os.
  3. Pare o servidor, instale o novo pacote sobre o antigo e inicie-o novamente:
    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

O pacote não reinicia o servidor por conta própria. Após uma atualização, ele exibe Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: se você não parou o servidor antes, reinicie-o imediatamente. A atualização substitui /opt/antimatter e o arquivo de serviço, mas preserva antimatter.env, config.json, /var/lib/antimatter e os logs. Ao iniciar, o servidor atualiza o banco de dados e instala as versões mais recentes dos aplicativos incluídos.

Se uma nova versão alterar o antimatter.env padrão, o apt perguntará se você deseja manter sua versão: mantenha-a. O dnf mantém a sua e salva a nova como /etc/antimatter/antimatter.env.rpmnew. As atualizações só avançam: não instale uma versão mais antiga sobre uma mais recente.

Remover um pacote

sudo apt remove antimatter ou sudo dnf remove antimatter para e desabilita o serviço, e remove o programa. Ele preserva os dados (/var/lib/antimatter), a configuração (/etc/antimatter), o banco de dados e o usuário antimatter: exclua-os manualmente para remover o Antimatter completamente.

Aplicativos nos pacotes e no arquivo

Os pacotes e o arquivo incluem a última versão assinada dos seguintes aplicativos, em prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels e Whiteboard. Um aplicativo que ainda não tinha uma versão lançada quando a versão do servidor foi criada fica de fora: ls /opt/antimatter/prepackaged_plugins mostra o que sua versão inclui. Memes e Todo estão incluídos, mas não ativados: Aplicativos incluídos explica como instalá-los e ativá-los.

Os outros aplicativos das imagens Docker não estão nos pacotes nem no arquivo: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira e Metrics. Instale cada um a partir de suas próprias versões:

AplicativoVersõesID do aplicativo
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
E-mailantimatter-plugin-mailcom.antimatterchat.mail
Calendárioantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MétricasAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Cada lançamento de aplicativo inclui o pacote do aplicativo (um arquivo .tar.gz), sua assinatura (o mesmo nome com .sig adicionado) e um arquivo SHA256SUMS. Para instalar um aplicativo, permita uploads e, em seguida, adicione o pacote com 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 atualizar um aplicativo instalado desta forma, adicione o novo pacote com plugin add --force: as atualizações de pacotes só atualizam os aplicativos incluídos. Você pode remover a linha AM_PLUGINSETTINGS_ENABLEUPLOADS novamente depois. Consulte Instalação de outros aplicativos para as outras formas de instalar aplicativos.

Assinaturas de aplicativos

Os pacotes de aplicativos são assinados com a chave de assinatura de aplicativos do Antimatter: cada arquivo .tar.gz.sig é uma assinatura GPG separada do seu pacote. O servidor verifica essas assinaturas antes de instalar um aplicativo incluído. Para verificar um pacote você mesmo:

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

O gpg deve relatar uma assinatura válida de Antimatter Plugin Signing, com a impressão digital 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Ele também alerta que a chave não é certificada com uma assinatura confiável: isso é normal para uma chave que você não assinou. Um lançamento de aplicativo sem arquivos .sig não é assinado, e suas notas de lançamento indicam isso.

Instalar a partir de um arquivo de release

O arquivo antimatter-<version>-linux-<arch>.tar.gz (por exemplo, antimatter-0.9.0-linux-amd64.tar.gz) é adequado para uma distribuição sem pacotes .deb ou .rpm, ou para um layout personalizado. Ele contém um único diretório antimatter/ com bin/antimatter, bin/amctl, config/config.json, os aplicativos web (client/ e client-fusion/), os aplicativos incluídos (prepackaged_plugins/, veja acima), os modelos de e-mail e as traduções.

1. Preparar o PostgreSQL

O Antimatter suporta apenas o PostgreSQL, versão 15 ou mais recente (versões anteriores iniciam com um erro no log). Crie um usuário e um banco de dados:

sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF

2. Extrair e 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

Aponte o servidor para o banco de dados, seja em /opt/antimatter/config/config.json (SqlSettings.DataSource) ou com variáveis de ambiente, e defina a URL do site:

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

O config.json do arquivo é uma configuração padrão completa: as configurações alteradas no Console do Sistema são salvas de volta nele. Para manter a configuração no banco de dados, consulte Configuração.

3. Executar como serviço

Uma unidade systemd, em /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

Coloque suas variáveis AM_ em /etc/antimatter.env (legível apenas pela raiz) e, em seguida:

sudo systemctl daemon-reload
sudo systemctl enable --now antimatter
journalctl -u antimatter -f

O servidor escuta na porta 8065. Abra http://<server>:8065, ou seu domínio, assim que um proxy reverso estiver configurado (veja Domínio e HTTPS), e crie a primeira conta: ela se tornará o administrador do sistema.

bin/amctl gerencia o servidor em execução pela linha de comando. No próprio servidor, ele funciona sem fazer login através do modo local: defina AM_SERVICESETTINGS_ENABLELOCALMODE=true e, em seguida, execute sudo -u antimatter /opt/antimatter/bin/amctl --local system status.

Para GIFs, instale o serviço de GIF (veja abaixo) e configure AM_GIFS_SERVICE_URL e AM_GIFS_API_KEY conforme descrito na etapa 5 dos pacotes.

Pacotes do serviço de GIF e do proxy de push

O serviço de GIF e o proxy de push têm seus próprios lançamentos, com as mesmas regras do servidor: um arquivo .tar.gz, um pacote .deb e um pacote .rpm para amd64 e arm64, e um arquivo SHA256SUMS. Versões com hífen são pré-lançamentos. Verifique os downloads com sha256sum --check --ignore-missing SHA256SUMS, como no caso do servidor.

O serviço de GIF (gifs-server)

Lançamentos: github.com/AntimatterChat/gifs-server/releases. O arquivo é gifs-server-<version>-linux-<arch>.tar.gz; os pacotes são nomeados gifs-server.

sudo apt install ./gifs-server_*_amd64.deb      # Debian, Ubuntu
sudo dnf install ./gifs-server-*.x86_64.rpm     # Fedora, RHEL

O pacote instala:

  • /usr/bin/gifs-server, e o serviço gifs-server, que é executado como o usuário gifs-server e mantém seu catálogo em /var/lib/gifs-server;
  • o serviço gifs-server-stickers, que importa ou atualiza o pacote de figurinhas em /usr/share/gifs-server/stickers quando você o inicia, e então para;
  • suas configurações, /etc/gifs-server/gifs-server.env (variáveis AM_GIFS_, mantidas nas atualizações) e /etc/gifs-server/api-keys, uma chave de API por linha, com uma chave aleatória gerada na primeira instalação.

Ele escuta em 127.0.0.1:8080, de modo que apenas o Antimatter no mesmo servidor pode acessá-lo. Se o Antimatter for executado em outro local, defina AM_GIFS_LISTEN=:8080 em gifs-server.env e restrinja o acesso à porta com seu firewall. O arquivo lista as outras configurações: AM_GIFS_UPLOAD_KEYS (as chaves autorizadas a adicionar GIFs e figurinhas, e a excluir as adicionadas com elas), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY e AM_GIFS_LOG_LEVEL. O pacote recomenda ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools para o .rpm) e uma fonte DejaVu: o serviço os usa para criar os formatos de GIF, vídeo e figurinha ao importar ou receber arquivos, e funciona sem eles.

Como no servidor, o serviço é habilitado, mas não iniciado, na instalação. Inicie-o conforme mostrado na etapa 5 dos pacotes. Após uma atualização, reinicie-o: sudo systemctl restart gifs-server. A remoção do pacote mantém o catálogo em /var/lib/gifs-server.

O proxy de push

Lançamentos: github.com/AntimatterChat/push-proxy/releases. O arquivo compactado é antimatter-push-proxy-<version>-linux-<arch>.tar.gz; os pacotes são nomeados antimatter-push-proxy. O pacote instala /usr/bin/antimatter-push-proxy e o serviço antimatter-push-proxy, que é executado como o usuário antimatter-push-proxy e lê /etc/antimatter-push-proxy/antimatter-push-proxy.json (mantido nas atualizações). As credenciais da Apple e do Firebase ficam em /etc/antimatter-push-proxy/certs: Notificações push explica de onde elas vêm.

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

No arquivo de configurações, os caminhos são relativos a /etc/antimatter-push-proxy: por exemplo, "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" e "ServiceFileLocation": "./certs/firebase-service-account.json". Em seguida, defina Servidor de Notificação Push no Antimatter como http://<proxy host>:8066. Após uma atualização, reinicie-o: sudo systemctl restart antimatter-push-proxy.

O proxy de notificações push escuta na porta 8066 em todos os endereços e não verifica quem o chama. Mantenha a porta em uma rede privada ou atrás de um proxy reverso que restrinja o acesso.

Outros comandos do servidor

Além de executar o servidor (antimatter, ou antimatter server), o binário possui alguns comandos de manutenção. Eles leem a mesma configuração do servidor.

ComandoO que faz
antimatter versionImprime a versão, o número de build, a data de build e o hash de build.
antimatter db pingVerifica se o banco de dados está acessível.
antimatter db initCria a configuração no banco de dados (com AM_CONFIG definido para uma URL postgres://).
antimatter db migrateAplica as migrações do banco de dados sem iniciar o servidor.
antimatter db versionImprime a última migração aplicada ao banco de dados.
antimatter import bulk, antimatter export bulkImporta ou exporta dados no formato em massa (veja Backups e atualizações).