Инсталиране на Antimatter

Инсталирайте Antimatter с готовия compose файл, от .deb или .rpm пакет на версия или от архив на версия. После създайте първата администраторска сметка.

Инсталиране с Docker Compose

Това е препоръчителният начин. Един compose файл пуска Antimatter, PostgreSQL, хранилището за файлове и GIF услугата. Нужен ви е Linux сървър с Docker Engine и неговия Compose плъгин (docker compose), 2 ядра на процесора и 4 GB или повече памет.

1. Изтегляне на compose файла

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

2. Създаване на .env файла

Compose файлът чете настройките си от .env файл в същата директория. Създайте го със случайни тайни:

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

Задайте SITE_URL на адреса, който потребителите ще въведат в браузъра си, например http://192.168.1.20:8065 в локална мрежа или https://chat.example.com с домейн. Запазете файла .env: базата данни и хранилището използват паролите от него при първия старт, ключовете на API за връзките с AI модели се шифроват с AM_AI_ENCRYPTION_KEY, а същият файл е необходим за възстановяване на резервно копие.

3. Стартиране

docker compose up -d
docker compose ps

Първото стартиране отнема минута-две: PostgreSQL създава базата данни, еднократната услуга bucket създава хранилището, еднократната услуга gifs-stickers импортира началния пакет със стикери, а Antimatter създава таблиците си. Следете процеса с docker compose logs -f antimatter.

За да използвате име на домейн и HTTPS от самото начало, вижте Домейн и HTTPS: с compose файла това са още две реда в .env и https профила.

Променливите в .env

ПроменливаПо подразбиранеКакво прави
SITE_URLзадължителноПубличният адрес на Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDзадължителноПарола за потребителя antimatter в базата данни.
S3_SECRET_KEYзадължителноТайен ключ за хранилището на файлове.
GIFS_API_KEYзадължителноКлюч, който Antimatter използва, за да се обръща към GIF услугата.
AM_AI_ENCRYPTION_KEYпразноКлючът, който шифрова ключовете на API за връзките с AI модели (openssl rand -base64 32). Празно: сървърът създава файл с ключ в обема data. Вижте Ключ за шифроване.
GIFS_UPLOAD_KEYпразноПозволява на хората да добавят свои GIF-ове и стикери от изборника и да ги изтриват. Празната стойност изключва качването.
DOMAINпразноВашето име на домейн, за https профила.
HTTP_PORT8065Порт на хоста за уеб сървъра на Antimatter.
CALLS_PORT8443UDP и TCP порт за аудио и видео при обаждания.
EDGE_SUBNET172.29.71.0/28Подмрежа на мрежата между Caddy и Antimatter. Променете я, ако се припокрива с някоя от вашите мрежи.
TZUTCЧасови пояс на контейнерите.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestОбразът на Antimatter, който да се пусне (вижте по-долу).

Какво се пусква

УслугаОбразРоля
antimatterghcr.io/antimatterchat/antimatter-nextСървърът, уеб приложението и вградените приложения. Публикува HTTP_PORT и CALLS_PORT. Неговата директория за данни е обемът data.
postgrespostgres:17-alpineБазата данни, в postgres обема.
filesrustfs/rustfsS3-съвместимо хранилище за качени файлове и инсталирани приложения, в обема files.
bucketamazon/aws-cliСъздава коша antimatter, след което излиза.
gifsghcr.io/antimatterchat/gifs-serverУслугата за GIF и стикери, в обема gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverИмпортира началния пакет със стикери при първото стартиране, след което излиза.
httpscaddy:2-alpineСамо с профила https: HTTPS на портове 80 и 443.

PostgreSQL, хранилището и услугата за GIF са на вътрешна мрежа (private) без достъп до интернет, към която се присъединява само Antimatter. Нито едно от тях не публикува порт.

Контейнерът на Antimatter не запазва нищо на диска: настройките му са в базата данни (AM_CONFIG сочи към нея), а файловете и приложенията му са в услугата за хранилище. Можете да премахнете и да създадете контейнера отново по всяко време. Неговият обем data съдържа само файла с ключа за шифроване на AI, който сървърът създава, когато AM_AI_ENCRYPTION_KEY е празно. Всичко, което трябва да се резервира, се намира в обемите postgres, files, gifs и data, както и във вашия .env.

Изберете образ

Публикуват се два образа на Antimatter, и двата за linux/amd64 и linux/arm64, и и двата изградени от main клонът на всяко хранилище:

ОбразВградени приложенияЕтикети
ghcr.io/antimatterchat/antimatterAI чат, Обаждания, GitHub, GitLab, Jira и Metrics.latest, X.Y.Z за издания, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextСъщото, плюс Гласови канали, Анкети, Поща, Календар, Бележки, Бяла дъска, GIF, Задачи и Мемове. Изгражда се всяка нощ.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

Нито един от образите на изображенията вече не включва Kanban или Наръчници: инсталирайте ги от собствените им версии в GitHub (вижте по-долу), ако ги желаете. Сървър, който вече има инсталиран някой от тях, запазва тази инсталация при надграждане.

Файлът за compose на сайта използва antimatter-next, тъй като услугата за GIF и повечето приложения, описани на този сайт, са само в този образ. За да смените образа, задайте ANTIMATTER_IMAGE в .env и изпълнете docker compose up -d.

latest се променя под вас. В продуктивна среда фиксирайте етикет като nightly-20261015 или sha-<commit> и го променяйте умишлено при обновяване. Сервърът обновява базата си данни при стартиране, така че не можете да се върнете към по-стар образ, или от antimatter-next към antimatter, без да възстановите архив, направен преди това. Вижте Архивиране и обновявания.

Вътре в образа

  • Сервърът се намира в /antimatter, с бинарните файлове antimatter и amctl в /antimatter/bin (в PATH).
  • Той се изпълнява като непривилегирован потребител antimatter (uid 2000) върху минимална distroless основа, без shell.
  • Портове: 8065 (уеб и API), 8067 (метрики), 8074 (кластер), 8443 UDP и TCP (обаждания).
  • Локалният режим (ServiceSettings.EnableLocalMode) е включен, така че amctl --local работи вътре в контейнера. Проверката за здравословно състояние изпълнява amctl system status --local.
  • Вградените приложения са в /antimatter/prepackaged_plugins и са подписани с ключа за подписване на приложения на Antimatter.
  • Инструментите за извличане на текст (pdftotext, wvText, unrtf, tidy) са включени, така че съдържанието на качените документи може да се търси.

Други compose файлове

Репозиторията antimatter-docker съдържа продуктивна конфигурация в deploy/compose/: nginx със собствени сертификати или Let's Encrypt (certbot), PostgreSQL, опционалната GIF услуга (профил gifs) и именовани обемове за конфигурацията, данните и логовете на сървъра, описани в README. По подразбиране използва стабилния образ и съхранява файловете на локален обем вместо S3 хранилище. Използвайте го, ако предпочитате nginx пред Caddy или вече имате сертификати.

Създаване на първия администратор

Отворете SITE_URL в браузъра си и създайте акаунт. Първият акаунт, създаден на нов сървър, става системен администратор, а след това настройката ви води през създаването на първата ви общност (названието на Antimatter за екип или работно пространство).

Създайте го веднага след първия старт: до тогава всеки, който достигне до сървъра първи, става негов администратор. За да създадете акаунта от командния ред, преди сървърът да бъде достъпен от външната мрежа:

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

След това влезте в SITE_URL. Започнете командата с интервал, за да запазите паролата извън историята на shell-а (с HISTCONTROL=ignorespace), или променете паролата след като влезете.

Следващи стъпки, след като сте вътре:

  1. За компания или организация задайте Вид на новите общности на Работно пространство и променете вида на вече създадена общност в нейните настройки: Гилдия или работно пространство.
  2. Определете кой може да създава акаунти: Вход и акаунти.
  3. Конфигурирайте имейла, така че покани и нулирането на пароли да работят: Имейл и push известия.
  4. Отворете порта за обаждания във вашия файрвол: Обаждания и глас.
  5. Проверете кои приложения са включени: Вградени приложения.

Изтеглете версия

Без Docker инсталирайте Antimatter от файловете на версия в GitHub: github.com/AntimatterChat/antimatter/releases. Всяка версия има номер като 0.9.0, а нейният таг е същият номер с v отпред (v0.9.0).

Antimatter е в бета: версиите ѝ са от серията 0.9.0. Версия, чийто номер има суфикс след тире, например 0.9.0-rc.1, е маркирана като Pre-release в GitHub. Това е тестова версия, публикувана преди окончателната.

Всяка версия има тези файлове за сървъри amd64 и arm64:

ФайлКакво представлява
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debПакетът за Debian, Ubuntu и дистрибуциите, базирани на тях.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmПакетът за Fedora, RHEL и дистрибуциите, съвместими с RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzАрхивът на версията, за всяка Linux дистрибуция, настроен ръчно.
SHA256SUMSSHA-256 контролната сума на всеки файл от версията.

Пакетите и архивът съдържат еднакъв софтуер: сървъра (antimatter), командния инструмент (amctl), и двете уеб приложения (станартния и класическия интерфейс), вградените приложения, имейл шаблоните и преводите. Пакетите добавят systemd услуга и файл с настройки, така че всеки е цялостна инсталация: добавяте само PostgreSQL база данни. Няма отделни изтегляния на бинарни файлове: те са в архива, в antimatter/bin/. Те са статични, така че работят на всяка Linux дистрибуция от съответната архитектура.

В имената на пакетите тирето на предварителната версия се превръща в тилда, така че пакетният мениджър подрежда предварителната версия преди окончателната: версия 0.9.0-rc.1 дава antimatter_0.9.0~rc.1-1_amd64.deb и antimatter-0.9.0~rc.1-1.x86_64.rpm. Архивът запазва тирето.

antimatter version изписва версията на изданието като Номер на компилация, а хеша на commit-а, от който е компилирана, като Хеш на компилация. Редът Версия показва версията на линията на Mattermost, върху която Antimatter е базиран.

Проверка на изтеглянето

Изтеглете файла, който ви трябва, и SHA256SUMS в една и съща директория, от страницата на изданието или с curl, и след това проверете файла:

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

Всеки изтеглен файл трябва да е посочен с OK. Всеки друг резултат означава, че файлът е повреден или непълен: изтеглете го отново и не го инсталирайте. SHA256SUMS не е подписан: той открива повредено изтегляне, но не доказва повече от HTTPS изтеглянето от GitHub.

Инсталиране на .deb или .rpm пакета

Пакетът инсталира Antimatter като systemd услуга, която има нужда само от база данни, за да стартира. Използвайте го на 64-битов сървър, съвместим с Debian, Ubuntu, Fedora или RHEL, с systemd.

Какво инсталира пакетът

ПътСъдържание
/opt/antimatterПрограмата: bin/antimatter, bin/amctl, уеб приложенията (client/, client-fusion/), вградените приложения (prepackaged_plugins/), шаблоните, преводите и шрифтовете. Всяко обновяване го замества.
/etc/antimatter/antimatter.envНастройките на услугата, като AM_ променливи: базата данни, URL-ът на сайта, услугата за GIF. Прочитаема само от root. Обновяванията я запазват.
/etc/antimatter/config/config.jsonКонфигурационният файл, в който сървърът запазва настройките, променени в Системната конзола. Създава се от /opt/antimatter/defaults/config.json при първата инсталация и никога не се замества след това.
/var/lib/antimatterКачени файлове (data/) и инсталирани приложения (plugins/, client-plugins/).
/var/log/antimatterЛогови файлове, ако включите записване в файл. То е изключено: логовете отиват в журнала.
/usr/lib/systemd/system/antimatter.serviceУслугата.
/usr/bin/amctlВръзка към /opt/antimatter/bin/amctl.

Директориите, към които сървърът записва данни в /opt/antimatter (config, data, plugins, client/plugins и logs), са препратки към /etc/antimatter, /var/lib/antimatter и /var/log/antimatter. Така при обновяване, което замества /opt/antimatter, данните ви остават недокоснати. Пакетът също така създава системния потребител antimatter, който изпълнява сървъра и притежава тези директории.

Пакетът зависи от ca-certificates. Препоръчва PostgreSQL (postgresql в Debian и Ubuntu, postgresql-server в Fedora и RHEL), media-types (mailcap за .rpm) и gifs-server — GIF услугата, която има собствен релиз (вижте по-долу). apt и dnf инсталират препоръчителните пакети, ако ги намерят. Предлага poppler-utils, wv, unrtf и tidy (без wv за .rpm): те извличат текста от качените документи, така че търсенето да намира думи в тях. Инсталирайте ги сами, ако желаете тази функционалност.

1. Инсталиране на пакетите

Изтеглете пакета Antimatter и пакета на GIF услугата за вашата архитектура, проверете ги, както е показано по-горе, и инсталирайте и двата с една команда, за да се удовлетвори препоръката за gifs-server (той не се намира в хранилищата на дистрибуциите):

# 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

Задръжте ./: то казва на apt и dnf да инсталират локален файл. За да инсталирате без GIF услугата, не включвайте нейния пакет. Пакетът активира услугата antimatter, но не я стартира, и показва следващите стъпки.

2. Създаване на базата данни

Antimatter изисква PostgreSQL 15 или по-нова версия, на този сървър или на друг. Проверете версията на PostgreSQL от вашата дистрибуция с psql --version. Ако е по-стара, инсталирайте по-нова версия от собствените хранилища на проекта PostgreSQL или използвайте база данни на друг сървър. В Debian и Ubuntu пакетът postgresql стартира базата данни. В Fedora и RHEL първо я създайте и стартирайте:

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

След това създайте потребител и база данни за 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 трябва да приема връзки с парола от 127.0.0.1: редовете host в файла pg_hba.conf, с метод scram-sha-256.

3. Задаване на базата данни и URL-а на сайта

Редактирайте /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Премахнете # от редовете, които използвате, и задайте базата данни и адреса, който хората ще отворят:

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

В този файл може да се постави всяка настройка на конфигурацията като AM_<SECTION>_<SETTING>: например, SqlSettings.DataSource става AM_SQLSETTINGS_DATASOURCE. Настройка, зададена тук, не може да се промени в Системната конзола. Вижте Конфигурация. Рестартирайте сървъра след всяка промяна: sudo systemctl restart antimatter.

Службата също задава няколко стойности по подразбиране, които ред в antimatter.env може да замени: записването в файлове е изключено (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), а локалният режим е включен (AM_SERVICESETTINGS_ENABLELOCALMODE=true), така че amctl --local да работи на сървъра.

4. Стартирайте го

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

При първото стартиране сървърът създава таблиците си, после слуша на порт 8065. Отворете http://<server>:8065, или вашия домейн, след като е настроен обратен прокси (вижте Домейн и HTTPS), и веднага създайте първата сметка: тя става системният администратор. За да я създадете от командния ред, използвайте командите amctl от Създаване на първия администратор, като вместо docker compose exec antimatter amctl --local използвате sudo -u antimatter amctl --local.

5. Включете GIF

Приложението GIF е включено в пакета и е активно, а antimatter.env вече го сочи към GIF услугата на същия сървър (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Все още му трябва API ключът на услугата. Пакетът gifs-server е генерирал такъв при инсталацията си:

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

Поставете ключа в antimatter.env като AM_GIFS_API_KEY=<key> и рестартирайте Antimatter, или го въведете като API ключ в Системна конзола › Приставка › GIF. Ако GIF услугата се изпълнява на друг сървър, задайте AM_GIFS_SERVICE_URL на неговия адрес. За да позволявате на хората да добавят собствени GIF и стикери, вижте GIF.

Службата

  • Службата се изпълнява като потребител antimatter, в /opt/antimatter и чете /etc/antimatter/antimatter.env. systemd рестартира сървъра всеки път, когато той спре, и му дава до един час да се стартира, тъй като миграциите на базата данни при нова версия могат да отнемат много време.
  • Логовете ѝ са в журнала: journalctl -u antimatter.
  • Службата е защитена: /usr и /etc са само за четене за сървъра, с изключение на /etc/antimatter/config, а той няма достъп до /home, /root или /run/user. Ако преместите хранилището на файловете (FileSettings.Directory), изберете директория извън тези, която да е собственост на antimatter.
  • Обновленията заменят файла на службата. За да го промените, използвайте sudo systemctl edit antimatter, което запазва промените ви в отделен файл.

Обновяване на пакет

  1. Направете резервно копие (вижте Резервни копия и обновявания).
  2. Изтеглете новия пакет и SHA256SUMS и ги проверете.
  3. Спрете сървъра, инсталирайте новия пакет върху стария и го стартирайте отново:
    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

Пакетът не рестартира сървъра сам. След обновяване той изписва Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: ако не сте спрели сървъра предварително, рестартирайте го веднага. Обновяването замества /opt/antimatter и файла на службата, но запазва antimatter.env, config.json, /var/lib/antimatter и логовете. При стартиране сървърът обновява базата данни и инсталира по-новите версии на вградените приложения.

Ако нова версия променя стандартния antimatter.env, apt пита дали да запазите вашата версия: запазете я. dnf запазва вашата и съхранява новата като /etc/antimatter/antimatter.env.rpmnew. Обновяванията са само напред: не инсталирайте по-стара версия върху по-нова.

Премахване на пакет

sudo apt remove antimatter или sudo dnf remove antimatter спира и деактивира службата и премахва програмата. Те запазват данните (/var/lib/antimatter), конфигурацията (/etc/antimatter), базата данни и потребителя antimatter: премахнете ги ръчно, за да изтриете Antimatter напълно.

Приложения в пакетите и архива

Пакетите и архивът включват последната подписана версия на тези приложения в prepackaged_plugins/: AI чат, Обаждания, GIFs, Memes, Notes, Polls, Todo, Voice Channels и Whiteboard. Приложения, които нямат версия към момента на изграждане на сървъра, не са включени: ls /opt/antimatter/prepackaged_plugins показва какво включва вашата версия. Memes и Todo са включени, но не са активирани: Вградени приложения обяснява как да ги инсталирате и активирате.

Kanban и Наръчници вече не са включени в сървъра или в някой от Docker образите: сървър, който вече има инсталиран някой от тях, запазва тази инсталация при надграждане, а всеки друг може да ги инсталира от собствените им версии, подобно на приложенията по-долу. Другите приложения от Docker образите също не са включени в пакетите или архива: Mail, Calendar, GitHub, GitLab, Jira и Metrics. Инсталирайте всяко едно, включително Kanban и Наръчници, от собствените им версии:

ПриложениеВерсииИдентификатор на приложението
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
Mailantimatter-plugin-mailcom.antimatterchat.mail
Calendarantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
МетрикиAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Всяка версия на приложение съдържа неговия пакет (файл .tar.gz), неговия подпис (същото име с добавен .sig) и файл SHA256SUMS. За да инсталирате приложение, разрешете качвания, след което добавете пакета с 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

За да обновите приложение, инсталирано по този начин, добавете новия пакет с plugin add --force: обновяванията на пакетите обновяват само вградените приложения. Можете да премахнете реда AM_PLUGINSETTINGS_ENABLEUPLOADS отново по-късно. Вижте Инсталиране на други приложения за другите начини за инсталиране на приложения.

Подписи на приложения

Пакетите на приложенията са подписани с ключа за подписване на приложения на Antimatter: всеки файл .tar.gz.sig е отделен GPG подпис на съответния пакет. Сървърът проверява тези подписи, преди да инсталира вградено приложение. За да проверите пакет сам:

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 трябва да докладва валиден подпис от Antimatter Plugin Signing, с отпечатък 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Също така предупреждава, че ключът не е сертифициран с доверен подпис: това е нормално за ключ, който сам не сте подписали. Издадена версия на приложение без .sig файлове е неподписана, а бележките за изданието го посочват.

Инсталиране от архив на версия

Архивът antimatter-<version>-linux-<arch>.tar.gz (напр. antimatter-0.9.0-linux-amd64.tar.gz) е подходящ за дистрибуция без .deb или .rpm пакети, или за ваш собствена структура. Съдържа единствената директория antimatter/ с bin/antimatter, bin/amctl, config/config.json, уеб приложенията (client/ и client-fusion/), вградените приложения (prepackaged_plugins/, вижте по-горе), шаблоните за имейл и преводите.

1. Подгответе PostgreSQL

Antimatter поддържа само PostgreSQL, версия 15 или по-нова (по-старите версии стартират, но с грешка в лога). Създайте потребител и база данни:

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

2. Извличане и конфигуриране

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

Посочете на сървъра базата данни, или в /opt/antimatter/config/config.json (SqlSettings.DataSource), или чрез променливи на средата, и задайте URL-а на сайта:

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

config.json в архива е пълна конфигурация по подразбиране: настройките, които променяте в Системната конзола, се записват обратно в него. За да запазите конфигурацията в базата данни, вижте Конфигурация.

3. Изпълнение като услуга

Системна единица на systemd, в /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

Поставете променливите си AM_ в /etc/antimatter.env (четим само от root), след което:

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

Сървърът слуша на порт 8065. Отворете http://<server>:8065, или вашия домейн, след като е настроен обратен прокси (вижте Домейн и HTTPS), и създайте първата сметка: тя става системен администратор.

bin/amctl управлява активния сървър от командния ред. На самия сървър работи без вход чрез локален режим: задайте AM_SERVICESETTINGS_ENABLELOCALMODE=true, след което изпълнете sudo -u antimatter /opt/antimatter/bin/amctl --local system status.

За GIF файлове, инсталирайте GIF услугата (вижте по-долу) и задайте AM_GIFS_SERVICE_URL и AM_GIFS_API_KEY, както в стъпка 5 от пакетите.

Пакетите за GIF услугата и push прокси

GIF услугата и push прокси имат собствени издания, с едни и същи правила като за сървъра: .tar.gz архив, .deb и .rpm пакет за amd64 и arm64, и SHA256SUMS файл. Версиите с тире са предварителни издания. Проверете записванията с sha256sum --check --ignore-missing SHA256SUMS, както за сървъра.

GIF услугата (gifs-server)

Издавания: github.com/AntimatterChat/gifs-server/releases. Архивът е gifs-server-<version>-linux-<arch>.tar.gz; пакетите се наричат gifs-server.

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

Пакетът инсталира:

  • /usr/bin/gifs-server и услугата gifs-server, която се изпълнява като потребител gifs-server и поддържа каталога си в /var/lib/gifs-server;
  • услугата gifs-server-stickers, която импортира или обновява стикерния пакет в /usr/share/gifs-server/stickers при стартиране, след което спира;
  • настройките ѝ, /etc/gifs-server/gifs-server.env (променливи AM_GIFS_, запазени при обновявания) и /etc/gifs-server/api-keys, с по един API ключ на ред, като при първото инсталиране се генерира случаен ключ.

Слуша на 127.0.0.1:8080, така че само Antimatter на същия сървър може да се свърже с него. Ако Antimatter се изпълнява на друго място, задайте AM_GIFS_LISTEN=:8080 в gifs-server.env и ограничете достъпа до порта с вашата firewall. Файлът съдържа и другите настройки: AM_GIFS_UPLOAD_KEYS (ключовете, които имат право да добавят GIF-ове и стикери и да изтриват добавените с тях), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY и AM_GIFS_LOG_LEVEL. Пакетът препоръчва ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools за .rpm) и шрифт DejaVu: услугата ги използва, за да създава формати за GIF, видео и стикери при импортиране или получаване на файлове, и работи без тях.

Като сървъра, услугата се активира, но не се стартира при инсталация. Стартирайте я, както е показано в стъпка 5 от пакетите. След ъпгрейд, рестартирайте я: sudo systemctl restart gifs-server. Премахването на пакета запазва каталога в /var/lib/gifs-server.

Push прокси

Релизи: github.com/AntimatterChat/push-proxy/releases. Архивът е antimatter-push-proxy-<version>-linux-<arch>.tar.gz; пакетите се наричат antimatter-push-proxy. Пакетът инсталира /usr/bin/antimatter-push-proxy и услугата antimatter-push-proxy, която се изпълнява като потребител antimatter-push-proxy и чете /etc/antimatter-push-proxy/antimatter-push-proxy.json (запазен при ъпгрейди). Креденциалите за Apple и Firebase се поставят в /etc/antimatter-push-proxy/certs: Изскачащи известия обяснява откъде идват.

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

В файла с настройки пътищата са относителни спрямо /etc/antimatter-push-proxy: например "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" и "ServiceFileLocation": "./certs/firebase-service-account.json". После задайте Сървър за изскачащи известия в Antimatter на http://<proxy host>:8066. След ъпгрейд, рестартирайте го: sudo systemctl restart antimatter-push-proxy.

Push прокси слуша на порт 8066 на всички адреси и не проверява кой го извиква. Дръжте порта в частна мрежа или зад reverse proxy, който ограничава достъпа.

Други команди на сървъра

Освен за стартиране на сървъра (antimatter или antimatter server), бинарният файл има няколко поддръжки команди. Те четат същата конфигурация като сървърът.

КомандаКакво прави
antimatter versionИзпечатва версията, номера на изданието, датата на изданието и хаша на изданието.
antimatter db pingПроверява дали базата данни е достъпна.
antimatter db initСъздава конфигурацията в базата данни (с AM_CONFIG, зададен на postgres:// URL).
antimatter db migrateПрилага миграциите на базата данни без да стартира сървъра.
antimatter db versionИзпечатва последната приложена миграция на базата данни.
antimatter import bulk, antimatter export bulkИмпорт или експорт на данни в пакетен формат (вижте Резервни копия и надграждания).