Instalação do Antimatter

Instale o Antimatter com o ficheiro compose pronto, a partir do pacote .deb ou .rpm de um lançamento, ou de um arquivo de lançamento. Depois, crie a primeira conta de administrador.

Instalação com Docker Compose

Esta é a forma recomendada. Um único ficheiro compose executa o Antimatter, o PostgreSQL, o armazenamento de ficheiros e o serviço de GIF. Necessita de um servidor Linux com Docker Engine e o plugin Compose (docker compose), 2 núcleos de CPU e 4 GB de memória ou mais.

1. Descarregar o ficheiro compose

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

2. Criar o ficheiro .env

O ficheiro compose lê as suas definições de um ficheiro .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 vão introduzir no navegador, por exemplo http://192.168.1.20:8065 numa rede local ou https://chat.example.com com um domínio. Mantenha o ficheiro .env: a base de dados e o armazenamento utilizam estas palavras-passe desde a primeira inicialização, as chaves de API das ligações a modelos de IA são encriptadas com AM_AI_ENCRYPTION_KEY, e precisa do mesmo ficheiro para restaurar uma cópia de segurança.

3. Iniciar

docker compose up -d
docker compose ps

A primeira inicialização demora um ou dois minutos: o PostgreSQL cria a base de dados, um serviço de utilização única bucket cria o contentor de armazenamento, um serviço de utilização única gifs-stickers importa o pacote de adesivos inicial e o Antimatter cria as suas tabelas. Acompanhe o processo com docker compose logs -f antimatter.

Para utilizar um nome de domínio e HTTPS desde o início, consulte Domínio e HTTPS: com o ficheiro compose, são apenas mais duas linhas 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órioPalavra-passe do utilizador da base de dados antimatter.
S3_SECRET_KEYobrigatórioChave secreta do armazenamento de ficheiros.
GIFS_API_KEYobrigatórioChave que o Antimatter utiliza para chamar o serviço de GIF.
AM_AI_ENCRYPTION_KEYvazioA chave que encripta as chaves de API das ligações a modelos de IA (openssl rand -base64 32). Vazio: o servidor cria um ficheiro de chave no volume data. Consulte A chave de encriptação.
GIFS_UPLOAD_KEYvazioPermite às pessoas adicionarem os seus próprios GIFs e figurinhas a partir do seletor, e eliminá-los. Vazio desativa os carregamentos.
DOMAINvazioO seu 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 coincidir com uma das suas redes.
TZUTCFuso horário dos contentores.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestA imagem do Antimatter a executar (ver abaixo).

O que é executado

ServiçoImagemFunção
antimatterghcr.io/antimatterchat/antimatter-nextO servidor, a aplicação web e as aplicações incluídas. Publica HTTP_PORT e CALLS_PORT. O seu diretório de dados é o volume data.
postgrespostgres:17-alpineA base de dados, no volume postgres.
filesrustfs/rustfsArmazenamento compatível com S3 para ficheiros carregados e aplicações instaladas, no volume files.
bucketamazon/aws-cliCria o balde antimatter e, em seguida, termina.
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, termina.
httpscaddy:2-alpineApenas com o perfil https: HTTPS nas portas 80 e 443.

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

O contentor do Antimatter não guarda nada no disco: as suas definições estão na base de dados (AM_CONFIG aponta para ela) e os seus ficheiros e aplicações estão no serviço de armazenamento. Pode remover e recriar o contentor a qualquer momento. O seu volume data apenas contém o ficheiro da chave de encriptação de IA, que o servidor cria quando AM_AI_ENCRYPTION_KEY está vazio. Tudo o que precisa de fazer cópia de segurança está nos volumes postgres, files, gifs e data, além do seu .env.

Escolher uma imagem

São publicadas duas imagens do Antimatter, ambas para linux/amd64 e linux/arm64, e ambas construídas a partir da ramificação main de todos os repositórios:

ImagemAplicações incluídasEtiquetas
ghcr.io/antimatterchat/antimatterAgentes, Chamadas, GitHub, GitLab, Jira, Kanban, Métricas e Playbooks.latest, X.Y.Z para publicações, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextO mesmo, mais Canais de voz, Sondagens, Correio, Calendário, Notas, Quadro branco, GIFs, Tarefas e Memes. Reconstruída todas as noites.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

O ficheiro compose do site utiliza antimatter-next, porque o serviço de GIFs e a maioria das aplicações descritas neste site só existem nessa imagem. Para alterar a imagem, defina ANTIMATTER_IMAGE no .env e execute docker compose up -d.

latest muda sob os seus pés. Em produção, fixe uma etiqueta, como nightly-20261015 ou sha-<commit>, e altere-a intencionalmente quando atualizar. O servidor atualiza a sua base de dados ao iniciar, pelo que não pode voltar a uma imagem mais antiga, nem de antimatter-next para antimatter, sem restaurar uma cópia de segurança feita antes. Consulte Cópias de segurança e atualizações.

Dentro da imagem

  • O servidor está em /antimatter, com os binários antimatter e amctl em /antimatter/bin (no PATH).
  • É executado como o utilizador sem privilégios antimatter (uid 2000) numa 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, pelo que o amctl --local funciona dentro do contentor. A verificação de estado executa amctl system status --local.
  • As aplicações incluídas estão em /antimatter/prepackaged_plugins, assinadas com a chave de assinatura de aplicações do Antimatter.
  • As ferramentas de extração de texto (pdftotext, wvText, unrtf, tidy) estão incluídas, pelo que o conteúdo dos documentos carregados pode ser pesquisado.

Outros ficheiros compose

O repositório antimatter-docker tem uma configuração de produção em deploy/compose/: nginx com os 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, dados e registos do servidor, documentados no respetivo README. Utiliza por omissão a imagem estável e guarda os ficheiros num volume local em vez de armazenamento S3. Utilize-a se preferir nginx a Caddy, ou se já tiver certificados.

Criar o primeiro administrador

Abra SITE_URL no seu navegador e crie uma conta. A primeira conta criada num servidor novo torna-se o administrador do sistema, e a configuração orienta-o depois na criação da sua primeira comunidade (a designação do Antimatter para uma equipa ou espaço de trabalho).

Faça-o logo após a primeira arrancagem: até lá, qualquer pessoa que aceder primeiro ao servidor torna-se o seu administrador. Para criar a conta a partir da linha de comandos, antes de o servidor ser acessível a partir do exterior:

docker compose exec antimatter amctl --local user create --system-admin --email-verified \
    --email admin@example.com --username admin --password 'a-long-password'
docker compose exec antimatter amctl --local team create --name main --display-name "Main"
docker compose exec antimatter amctl --local team users add main admin

Depois inicie sessão em SITE_URL. Comece o comando com um espaço para manter a palavra-passe fora do histórico da shell (com HISTCONTROL=ignorespace), ou altere a palavra-passe após iniciar sessão.

Próximos passos após entrar:

  1. Para uma empresa ou organização, defina Tipo de novas comunidades como Local de trabalho, e altere o tipo de uma comunidade que já criou nas respetivas definições: Local de trabalho ou comunidade.
  2. Decida quem pode criar contas: Início de sessão e contas.
  3. Configure o e-mail, para que os convites e as redefinições de palavra-passe funcionem: E-mail e notificações push.
  4. Abra a porta das chamadas no seu firewall: Chamadas e voz.
  5. Verifique que aplicações estão ativas: Aplicações incluídas.

Descarregar um lançamento

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

O Antimatter está em beta: as 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 ficheiros, para servidores amd64 e arm64:

FicheiroDescriçã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 o RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzO arquivo da versão, para qualquer distribuição Linux, configurado manualmente.
SHA256SUMSA soma de verificação SHA-256 de todos os ficheiros da versão.

Os pacotes e o arquivo contêm o mesmo programa: o servidor (antimatter), a ferramenta de linha de comandos (amctl), ambas as aplicações web (a interface predefinida e a clássica), as aplicações integradas, os modelos de e-mail e as traduções. Os pacotes adicionam um serviço systemd e um ficheiro de definições, pelo que cada um representa uma instalação completa: apenas é necessário adicionar uma base de dados PostgreSQL. Não existem downloads de binários separados: os binários estão no arquivo, em antimatter/bin/. São estáticos, pelo que funcionam em qualquer distribuição Linux da respetiva arquitetura.

Nos nomes dos pacotes, o hífen de uma versão de pré-lançamento é substituído por um til, para que o gestor de pacotes ordene a versão de pré-lançamento antes da versão final: a versão 0.9.0-rc.1 resulta em 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.

O comando antimatter version mostra a versão da versã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 em que o Antimatter se baseia.

Verificar o download

Descarregue o ficheiro de que precisa e o SHA256SUMS para o mesmo diretório, a partir da página da versão ou com curl, e depois verifique o ficheiro:

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 ficheiro descarregado deve estar listado com OK. Qualquer outro resultado significa que o ficheiro está danificado ou incompleto: descarregue-o novamente e não o instale. O SHA256SUMS não está assinado: deteta downloads danificados, mas não prova mais do que o download HTTPS do GitHub.

Instalar o pacote .deb ou .rpm

O pacote instala o Antimatter como um serviço systemd, que apenas necessita de uma base de dados para iniciar. Utilize-o num servidor de 64 bits Debian, Ubuntu, Fedora ou compatível com RHEL, com systemd.

O que o pacote instala

CaminhoConteúdo
/opt/antimatterO programa: bin/antimatter, bin/amctl, as aplicações web (client/, client-fusion/), as aplicações incluídas (prepackaged_plugins/), os modelos, as traduções e as fontes. Cada atualização substitui este conteúdo.
/etc/antimatter/antimatter.envAs definições do serviço, como variáveis AM_: a base de dados, o URL do site, o serviço de GIF. Legível apenas pelo root. As atualizações mantêm-no.
/etc/antimatter/config/config.jsonO ficheiro de configuração, onde o servidor guarda as definições alteradas na Consola do sistema. É criado a partir de /opt/antimatter/defaults/config.json na primeira instalação e nunca substituído depois.
/var/lib/antimatterFicheiros carregados (data/) e aplicações instaladas (plugins/, client-plugins/).
/var/log/antimatterFicheiros de registo, se ativar o registo em ficheiro. Está desativado: os registos são enviados para o journal.
/usr/lib/systemd/system/antimatter.serviceO serviço.
/usr/bin/amctlUm link para /opt/antimatter/bin/amctl.

As pastas para as quais o servidor escreve 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 toca nos seus dados. O pacote também cria o utilizador de sistema antimatter, que executa o servidor e é proprietário destas pastas.

O pacote depende de ca-certificates. 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 a sua própria libertação (ver abaixo). O apt e o dnf instalam os pacotes recomendados quando os encontram. Sugere poppler-utils, wv, unrtf e tidy (sem wv para o .rpm): extraem o texto de documentos carregados, para que a pesquisa encontre palavras dentro deles. Instale-os por sua conta se desejar esta funcionalidade.

1. Instalar os pacotes

Descarregue o pacote do Antimatter e o pacote do serviço de GIF da sua arquitetura, verifique-os como mostrado acima e instale ambos num único comando, para que a recomendação de gifs-server seja cumprida (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 indica ao apt e ao dnf que devem instalar um ficheiro local. Para instalar sem o serviço GIF, exclua o respetivo pacote. O pacote ativa o serviço antimatter, mas não o inicia, e mostra os passos seguintes.

2. Criar a base de dados

O Antimatter requer PostgreSQL 15 ou mais recente, neste servidor ou noutro. 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 do próprio projeto PostgreSQL, ou utilize uma base de dados noutro servidor. No Debian e no Ubuntu, o pacote postgresql inicia a base de dados. No Fedora e no RHEL, crie-a e inicie-a primeiro:

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

Depois, crie um utilizador e uma base 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 tem de aceitar ligações com palavra-passe de 127.0.0.1: as linhas host do seu ficheiro pg_hba.conf, com o método scram-sha-256.

3. Definir a base de dados e o URL do site

Edite /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Remova o # à frente das linhas que utilizar, e defina a base 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

Any setting of the configuration can go in this file, as AM_<SECTION>_<SETTING>: for example, SqlSettings.DataSource is AM_SQLSETTINGS_DATASOURCE. A setting set here can't be changed in the System Console. See Configuration. Restart the server after each change: sudo systemctl restart antimatter.

O serviço também define alguns valores predefinidos, que uma linha em antimatter.env substitui: a gravação de registos em ficheiros está desativada (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 arrancagem, o servidor cria as suas tabelas e, em seguida, fica à escuta na porta 8065. Abra http://<server>:8065, ou o seu domínio, quando um proxy inverso estiver configurado (ver Domínio e HTTPS), e crie de imediato a primeira conta: esta passa a ser o administrador do sistema. Para a criar a partir da linha de comandos, utilize os comandos amctl de Criar o primeiro administrador, substituindo docker compose exec antimatter amctl --local por sudo -u antimatter amctl --local.

5. Ativar GIFs

A aplicação GIFs está incluída e ativada, e o antimatter.env já a 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 da API do serviço. O pacote gifs-server gerou uma 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

Put the key in antimatter.env as AM_GIFS_API_KEY=<key> and restart Antimatter, or enter it as API key in System Console › Plugins › GIFs. If the GIF service runs on another server, set AM_GIFS_SERVICE_URL to its address. To let people add their own GIFs and stickers, see GIFs.

O serviço

  • É executado como o utilizador antimatter, em /opt/antimatter, e lê /etc/antimatter/antimatter.env. O systemd reinicia o servidor sempre que este terminar, e dá-lhe até uma hora para arrancar, uma vez que as migrações de base de dados de uma nova versão podem demorar.
  • Os registos (logs) estão no journal: journalctl -u antimatter.
  • Está reforçado: /usr e /etc são de apenas leitura para o servidor, exceto /etc/antimatter/config, e não pode ver /home, /root ou /run/user. Se mover o armazenamento de ficheiros (FileSettings.Directory), escolha um diretório fora destes, pertencente a antimatter.
  • As atualizações substituem o ficheiro do serviço. Para o alterar, utilize sudo systemctl edit antimatter, que mantém as suas alterações num ficheiro separado.

Atualizar um pacote

  1. Faça uma cópia de segurança (ver Cópia de segurança e atualizações).
  2. Descarregue o novo pacote e o SHA256SUMS, e verifique-os.
  3. Pare o servidor, instale o novo pacote por cima do antigo e volte a arrancá-lo:
    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 si só. Após uma atualização, imprime Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: se não tiver parado o servidor primeiro, reinicie-o de imediato. A atualização substitui /opt/antimatter e o ficheiro de serviço, e mantém antimatter.env, config.json, /var/lib/antimatter e os registos. Quando arranca, o servidor atualiza a base de dados e instala as versões mais recentes das aplicações incluídas.

Se uma nova versão alterar o antimatter.env predefinido, o apt pergunta se deve manter a sua versão: mantenha-a. O dnf mantém a sua e guarda 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 desativa o serviço, e remove o programa. Mantém os dados (/var/lib/antimatter), a configuração (/etc/antimatter), a base de dados e o utilizador antimatter: elimine-os manualmente para remover o Antimatter por completo.

Aplicações nos pacotes e no arquivo

Os pacotes e o arquivo incluem a última versão assinada destas aplicações, em prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels e Whiteboard. Uma aplicação que ainda não tinha uma versão quando a versão do servidor foi criada fica de fora: ls /opt/antimatter/prepackaged_plugins mostra o que a sua versão inclui. Memes e Todo estão incluídos, mas não ativados: Aplicações incluídas explica como as instalar e ativar.

As outras aplicações das imagens Docker não estão nos pacotes nem no arquivo: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira e Metrics. Instale cada uma a partir das respetivas versões:

AplicaçãoVersõesID da aplicação
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
Correioantimatter-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 aplicação inclui o pacote da aplicação (um ficheiro .tar.gz), a respetiva assinatura (o mesmo nome com .sig adicionado) e um ficheiro SHA256SUMS. Para instalar uma aplicação, permita as cargas 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 uma aplicação instalada desta forma, adicione o novo pacote com plugin add --force: as atualizações de pacotes apenas atualizam as aplicações incluídas. Pode remover novamente a linha AM_PLUGINSETTINGS_ENABLEUPLOADS posteriormente. Consulte Instalação de outras aplicações para conhecer as outras formas de instalar aplicações.

Assinaturas de aplicações

Os pacotes de aplicações são assinados com a chave de assinatura de aplicações do Antimatter: cada ficheiro .tar.gz.sig é uma assinatura GPG separada do respetivo pacote. O servidor verifica estas assinaturas antes de instalar uma aplicação incluída. Para verificar um pacote por sua conta:

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 reportar uma assinatura válida de Antimatter Plugin Signing, com a impressão digital 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Também emite um aviso de que a chave não está certificada com uma assinatura de confiança: isso é normal para uma chave que não assinou pessoalmente. Um lançamento de aplicação sem ficheiros .sig não está assinado, e as respetivas notas de lançamento indicam-no.

Instalar a partir de um arquivo de libertação

O arquivo, antimatter-<version>-linux-<arch>.tar.gz (por exemplo, antimatter-0.9.0-linux-amd64.tar.gz), destina-se a distribuições sem pacotes .deb ou .rpm, ou a uma estrutura personalizada. Contém um único diretório antimatter/ com bin/antimatter, bin/amctl, config/config.json, as aplicações web (client/ e client-fusion/), as aplicações incluídas (prepackaged_plugins/, ver 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 registo). Crie um utilizador e uma base 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

Indique ao servidor a base de dados, seja em /opt/antimatter/config/config.json (SqlSettings.DataSource) ou com variáveis de ambiente, e defina o 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 predefinida completa: as definições que alterar na Consola do sistema são guardadas de volta nele. Para manter a configuração na base 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 as suas variáveis AM_ em /etc/antimatter.env (legível apenas pelo root) 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 o seu domínio, uma vez que um proxy inverso esteja configurado (consulte Domínio e HTTPS), e crie a primeira conta: esta passa a ser o administrador do sistema.

O bin/amctl gere o servidor em execução a partir da linha de comandos. No próprio servidor, funciona sem iniciar sessão 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 (ver abaixo) e defina AM_GIFS_SERVICE_URL e AM_GIFS_API_KEY como no passo 5 dos pacotes.

Os pacotes do serviço de GIF e do proxy de notificações

O serviço de GIF e o proxy de notificações push têm as suas próprias versões, com as mesmas regras que as do servidor: um arquivo .tar.gz, um pacote .deb e um pacote .rpm para amd64 e arm64, e um ficheiro SHA256SUMS. As versões com um hífen são pré-lançamentos. Verifique as descargas com sha256sum --check --ignore-missing SHA256SUMS, tal como para o servidor.

O serviço de GIF (gifs-server)

Versões: github.com/AntimatterChat/gifs-server/releases. O arquivo é gifs-server-<version>-linux-<arch>.tar.gz; os pacotes são designados por 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 utilizador gifs-server e mantém o 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 o inicia, e depois termina;
  • as suas definições, /etc/gifs-server/gifs-server.env (variáveis AM_GIFS_, mantidas nas atualizações) e /etc/gifs-server/api-keys, com uma chave de API por linha, sendo gerada uma chave aleatória na primeira instalação.

Ouve em 127.0.0.1:8080, pelo que apenas o Antimatter no mesmo servidor pode aceder a ele. Se o Antimatter for executado noutro local, defina AM_GIFS_LISTEN=:8080 em gifs-server.env e restrinja o acesso à porta com o seu firewall. O ficheiro lista as outras definições: AM_GIFS_UPLOAD_KEYS (as chaves autorizadas a adicionar GIFs e figurinhas, e a eliminar 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 utiliza-as para criar os formatos de GIF, vídeo e figurinhas quando importa ou recebe ficheiros, e funciona sem elas.

Tal como o servidor, o serviço é ativado, 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 notificações push

Publicações: github.com/AntimatterChat/push-proxy/releases. O arquivo é antimatter-push-proxy-<version>-linux-<arch>.tar.gz; os pacotes são designados por antimatter-push-proxy. O pacote instala /usr/bin/antimatter-push-proxy e o serviço antimatter-push-proxy, que é executado como o utilizador antimatter-push-proxy e lê /etc/antimatter-push-proxy/antimatter-push-proxy.json (mantido nas atualizações). As credenciais da Apple e da Firebase ficam em /etc/antimatter-push-proxy/certs: Notificações push explica de onde provê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 ficheiro de definiçõ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ções 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 numa 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 tem alguns comandos de manutenção. Estes leem a mesma configuração do servidor.

ComandoO que faz
antimatter versionMostra a versão, o número de compilação, a data de compilação e o hash de compilação.
antimatter db pingVerifica se a base de dados está acessível.
antimatter db initCria a configuração na base de dados (com AM_CONFIG definido para um URL postgres://).
antimatter db migrateAplica as migrações da base de dados sem iniciar o servidor.
antimatter db versionMostra a última migração aplicada à base de dados.
antimatter import bulk, antimatter export bulkImporta ou exporta dados no formato em massa (consulte Cópias de segurança e atualizações).