Установка Antimatter
Установите Antimatter с помощью готового файла compose, из пакета .deb или .rpm релиза или из архива релиза. Затем создайте учётную запись первого администратора.
Установка с помощью Docker Compose
Это рекомендуемый способ. Один файл compose запускает Antimatter, PostgreSQL, хранилище файлов и службу GIF. Вам понадобится сервер на Linux с Docker Engine и его плагином Compose (docker compose), 2 ядра CPU и 4 ГБ оперативной памяти или больше.
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 для подключений моделей ИШ шифруются с помощью 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 для подключений моделей ИШ (openssl rand -base64 32). Если оставить пустым, сервер создаст файл с ключом в томе data. См. Ключ шифрования. |
GIFS_UPLOAD_KEY | пусто | Позволяет пользователям добавлять собственные GIF и наклейки из панели выбора и удалять их. Если оставить пустым, загрузка отключается. |
DOMAIN | пусто | Ваше доменное имя, для профиля https. |
HTTP_PORT | 8065 | Порт хоста веб-сервера Antimatter. |
CALLS_PORT | 8443 | UDP- и TCP-порт для аудио и видео звонков. |
EDGE_SUBNET | 172.29.71.0/28 | Подсеть сети между Caddy и Antimatter. Измените, если она пересекается с одной из ваших сетей. |
TZ | UTC | Часовой пояс контейнеров. |
ANTIMATTER_IMAGE | ghcr.io/antimatterchat/antimatter-next:latest | Образ Antimatter для запуска (см. ниже). |
Что запускается
| Служба | Образ | Роль |
|---|---|---|
antimatter | ghcr.io/antimatterchat/antimatter-next | Сервер, веб-приложение и встроенные приложения. Публикует порты HTTP_PORT и CALLS_PORT. Каталог данных — том data. |
postgres | postgres:17-alpine | База данных, в томе postgres. |
files | rustfs/rustfs | Хранилище, совместимое с S3, для загруженных файлов и установленных приложений, в томе files. |
bucket | amazon/aws-cli | Создаёт бакет antimatter, а затем завершает работу. |
gifs | ghcr.io/antimatterchat/gifs-server | Сервис GIF и стикеров, в томе gifs. |
gifs-stickers | ghcr.io/antimatterchat/gifs-server | Импортирует стартовый набор стикеров при первом запуске, а затем завершает работу. |
https | caddy:2-alpine | Только для профиля https: HTTPS на портах 80 и 443. |
PostgreSQL, хранилище и сервис GIF находятся во внутренней сети (private) без доступа в Интернет, к которой присоединяется только Antimatter. Ни один из них не публикует порты.
Контейнер Antimatter ничего не хранит на диске: его настройки находятся в базе данных (на неё указывает AM_CONFIG), а файлы и приложения — в сервисе хранилища. Контейнер можно удалить и пересоздать в любой момент. В его томе data хранится только файл с ключом шифрования ИШ, который сервер создаёт, если AM_AI_ENCRYPTION_KEY пуст. Всё, что нужно для резервного копирования, находится в томах postgres, files, gifs и data, а также в вашем файле .env.
Выберите образ
Опубликованы два образа Antimatter, оба для linux/amd64 и linux/arm64, и оба собраны из ветки main каждого репозитория:
| Образ | Встроенные приложения | Теги |
|---|---|---|
ghcr.io/antimatterchat/antimatter | Агенты, звонки, GitHub, GitLab, Jira, Kanban, метрики и плейбуки. | latest, X.Y.Z для релизов, sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | То же самое, плюс голосовые каналы, опросы, почта, календарь, заметки, доски для рисования, GIF, списки дел и мемы. Пересобирается каждую ночь. | latest, nightly, nightly-<YYYYMMDD>, sha-<commit> |
Файл 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-базовом образе, без оболочки. - Порты: 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. Начните команду с пробела, чтобы пароль не попал в историю команд (при HISTCONTROL=ignorespace), либо смените пароль после входа.
Дальнейшие шаги после входа:
- Для компании или организации установите Тип новых сообществ в значение Компания. Тип уже созданного сообщества можно изменить в его параметрах: Компания или сообщество.
- Определите, кто может создавать аккаунты: Вход и аккаунты.
- Настройте электронную почту, чтобы приглашения и сброс пароля работали: Электронная почта и push-уведомления.
- Откройте порт для звонков в файрволе: Звонки и голосовые каналы.
- Проверьте, какие приложения включены: Встроенные приложения.
Скачать релиз
Без Docker установите Antimatter из файлов релиза на GitHub: github.com/AntimatterChat/antimatter/releases. У каждого релиза есть номер версии, например 0.9.0, а его тег — тот же номер с буквой v в начале (v0.9.0).
0.9.0-rc.1, помечен на 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, устанавливаемый вручную. |
SHA256SUMS | Контрольные суммы SHA-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 выводит версию релиза как Номер сборки, а хэш коммита, из которого она была собрана, — как Хэш сборки. Строка Версия указывает версию линейки 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 (или свой домен, если настроен reverse proxy, см. Домен и HTTPS) и сразу создайте первый аккаунт: он станет системным администратором. Чтобы создать его из командной строки, используйте команды amctl из раздела Создание первого администратора, заменив docker compose exec antimatter amctl --local на sudo -u antimatter amctl --local.
5. Включите GIFs
Приложение GIFs поставляется в комплекте и включено по умолчанию, а в 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 в разделе Системная консоль › Плагины › GIFs. Если сервис GIF работает на другом сервере, укажите его адрес в AM_GIFS_SERVICE_URL. Чтобы пользователи могли добавлять собственные GIFs и стикеры, см. GIFs.
Служба
- Служба работает от имени пользователя
antimatterв каталоге/opt/antimatterи читает файл/etc/antimatter/antimatter.env. systemd перезапускает сервер при каждом его завершении и даёт ему до часа на запуск, поскольку миграции базы данных при обновлении версии могут занимать много времени. - Журналы службы доступны в journal:
journalctl -u antimatter. - Служба защищена: каталоги
/usrи/etcдоступны серверу только для чтения (за исключением/etc/antimatter/config), а каталоги/home,/rootи/run/userдля него невидимы. Если вы переносите хранилище файлов (FileSettings.Directory), выберите каталог вне этих, принадлежащий пользователюantimatter. - При обновлении пакет заменяет файл службы. Чтобы его изменить, используйте
sudo systemctl edit antimatter— ваши изменения сохранятся в отдельном файле.
Обновление пакета
- Сделайте резервную копию (см. Резервные копии и обновления).
- Скачайте новый пакет и файл
SHA256SUMS, затем проверьте их. - Остановите сервер, установите новый пакет поверх старого и запустите сервер снова:
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/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels и Whiteboard. Приложение, для которого на момент сборки сервера ещё не вышла релизная версия, не включается: ls /opt/antimatter/prepackaged_plugins показывает, что входит в вашу версию. Memes и Todo включены, но не активированы: Встроенные приложения объясняет, как их установить и включить.
Другие приложения из образов Docker не входят в пакеты или архив: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira и Metrics. Установите каждое из них из собственных релизов:
| Приложение | Релизы | Идентификатор приложения |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Плейбуки | antimatter-plugin-playbooks | playbooks |
| Почта | antimatter-plugin-mail | com.antimatterchat.mail |
| Календарь | 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 |
| Метрики | Antimatter-plugin-metrics | com.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 и ограничьте доступ к порту с помощью файрвола. В файле перечислены остальные параметры: 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: о том, откуда они берутся, рассказано в разделе Push notifications.
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". Затем установите значение Сервер push уведомлений в Antimatter: http://<proxy host>:8066. После обновления перезапустите службу: sudo systemctl restart antimatter-push-proxy.
Другие команды сервера
Помимо запуска сервера (antimatter или antimatter server), бинарный файл содержит несколько служебных команд. Они читают ту же конфигурацию, что и сервер.
| Команда | Назначение |
|---|---|
antimatter version | Выводит версию, номер сборки, дату сборки и хэш сборки. |
antimatter db ping | Проверяет доступность базы данных. |
antimatter db init | Создаёт конфигурацию в базе данных (при установленном AM_CONFIG с URL в формате postgres://). |
antimatter db migrate | Применяет миграции базы данных без запуска сервера. |
antimatter db version | Выводит последнюю применённую миграцию базы данных. |
antimatter import bulk, antimatter export bulk | Импортирует или экспортирует данные в пакетном формате (см. Резервные копии и обновления). |