Встановлення 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 як Pre-release. Це тестова версія, опублікована до фінального випуску.Кожен випуск містить такі файли для серверів 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 з розділу Створення першого адміністратора, використовуючи sudo -u antimatter amctl --local замість docker compose exec 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 перезапускає сервер щоразу, коли він завершує роботу, і надає йому до години на запуск, оскільки міграції бази даних нової версії можуть тривати довго. - Її журнали зберігаються в 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 та проксі-шар для сповіщень мають власні релізи за тими самими правилами, що й сервер: архів .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 зберігається.
Проксі-шар для сповіщень
Релізи: 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 (файл зберігається під час оновлень). У /etc/antimatter-push-proxy/certs зберігаються облікові дані Apple та Firebase: джерела їх отримання описано в розділі Push-повідомлення.
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 встановіть значення Сервер push-повідомлень як 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 | Імпортує або експортує дані у пакетному форматі (див. Резервні копії та оновлення). |