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ável | Padrão | O que faz |
|---|---|---|
SITE_URL | obrigatório | O endereço público do Antimatter (ServiceSettings.SiteURL). |
POSTGRES_PASSWORD | obrigatório | Senha do usuário do banco de dados antimatter. |
S3_SECRET_KEY | obrigatório | Chave secreta do armazenamento de arquivos. |
GIFS_API_KEY | obrigatório | Chave que o Antimatter usa para chamar o serviço de GIFs. |
AM_AI_ENCRYPTION_KEY | vazio | A 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_KEY | vazio | Permite que as pessoas adicionem seus próprios GIFs e figurinhas do seletor e que as excluam. Vazio desativa os uploads. |
DOMAIN | vazio | Seu nome de domínio, para o perfil https. |
HTTP_PORT | 8065 | Porta do host do servidor web do Antimatter. |
CALLS_PORT | 8443 | Porta UDP e TCP do áudio e vídeo das chamadas. |
EDGE_SUBNET | 172.29.71.0/28 | Sub-rede da rede entre o Caddy e o Antimatter. Altere-a se sobrepuar uma de suas redes. |
TZ | UTC | Fuso horário dos contêineres. |
ANTIMATTER_IMAGE | ghcr.io/antimatterchat/antimatter-next:latest | A imagem do Antimatter a ser executada (veja abaixo). |
O que é executado
| Serviço | Imagem | Função |
|---|---|---|
antimatter | ghcr.io/antimatterchat/antimatter-next | O servidor, o aplicativo web e os aplicativos incluídos. Publica HTTP_PORT e CALLS_PORT. Seu diretório de dados é o volume data. |
postgres | postgres:17-alpine | O banco de dados, no volume postgres. |
files | rustfs/rustfs | Armazenamento compatível com S3 para arquivos enviados e aplicativos instalados, no volume files. |
bucket | amazon/aws-cli | Cria o bucket antimatter e, em seguida, encerra. |
gifs | ghcr.io/antimatterchat/gifs-server | O serviço de GIFs e figurinhas, no volume gifs. |
gifs-stickers | ghcr.io/antimatterchat/gifs-server | Importa o pacote de figurinhas inicial na primeira vez e, em seguida, encerra. |
https | caddy:2-alpine | Somente 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:
| Imagem | Aplicativos incluídos | Tags |
|---|---|---|
ghcr.io/antimatterchat/antimatter | Agentes, Chamadas, GitHub, GitLab, Jira, Kanban, Métricas e Playbooks. | latest, X.Y.Z para lançamentos, sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | O 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áriosantimattereamctlem/antimatter/bin(noPATH). - 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, portantoamctl --localfunciona dentro do contêiner. A verificação de integridade executaamctl 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:
- 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.
- Defina quem pode criar contas: Login e contas.
- Configure o e-mail, para que convites e redefinições de senha funcionem: E-mail e notificações push.
- Abra a porta de chamadas no seu firewall: Chamadas e voz.
- 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).
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:
| Arquivo | Descrição |
|---|---|
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.deb | O pacote para Debian, Ubuntu e distribuições baseadas nelas. |
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpm | O pacote para Fedora, RHEL e distribuições compatíveis com RHEL. |
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gz | O arquivo de distribuição, para qualquer distribuição Linux, configurado manualmente. |
SHA256SUMS | O 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
| Caminho | Conteúdo |
|---|---|
/opt/antimatter | O 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.env | As 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.json | O 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/antimatter | Arquivos enviados (data/) e aplicativos instalados (plugins/, client-plugins/). |
/var/log/antimatter | Arquivos de log, se você ativar o registro em arquivo. Ele está desativado: os logs vão para o journal. |
/usr/lib/systemd/system/antimatter.service | O serviço. |
/usr/bin/amctl | Um 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:
/usre/etcsão somente leitura para o servidor, exceto/etc/antimatter/config, e ele não tem acesso a/home,/rootou/run/user. Se você mover o armazenamento de arquivos (FileSettings.Directory), escolha um diretório fora desses, pertencente aantimatter. - 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
- Faça um backup (veja Backups e atualizações).
- Baixe o novo pacote e o
SHA256SUMS, e verifique-os. - 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:
| Aplicativo | Versões | ID do aplicativo |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Playbooks | antimatter-plugin-playbooks | playbooks |
| antimatter-plugin-mail | com.antimatterchat.mail | |
| Calendário | 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 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çogifs-server, que é executado como o usuáriogifs-servere 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/stickersquando você o inicia, e então para; - suas configurações,
/etc/gifs-server/gifs-server.env(variáveisAM_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.
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.
| Comando | O que faz |
|---|---|
antimatter version | Imprime a versão, o número de build, a data de build e o hash de build. |
antimatter db ping | Verifica se o banco de dados está acessível. |
antimatter db init | Cria a configuração no banco de dados (com AM_CONFIG definido para uma URL postgres://). |
antimatter db migrate | Aplica as migrações do banco de dados sem iniciar o servidor. |
antimatter db version | Imprime a última migração aplicada ao banco de dados. |
antimatter import bulk, antimatter export bulk | Importa ou exporta dados no formato em massa (veja Backups e atualizações). |