نصب Antimatter
Antimatter را با فایل compose آماده، از بسته .deb یا .rpm نسخه منتشرشده، یا از آرشیو نسخه منتشرشده نصب کنید. سپس اولین حساب مدیر را ایجاد نمایید.
نصب با Docker Compose
این روش توصیهشده است. یک فایل compose، Antimatter، PostgreSQL، فضای ذخیرهسازی فایل و سرویس GIF را اجرا میکند. شما به یک سرور لینوکس با Docker Engine و افزونه Compose آن (docker compose)، ۲ هسته پردازنده و ۴ گیگابایت حافظه یا بیشتر نیاز دارید.
۱. فایل compose را دانلود کنید
mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml
۲. فایل .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 رمزنگاری میشوند، و شما برای بازگرداندن یک نسخه پشتیبان به همان فایل نیاز دارید.
۳. آن را اجرا کنید
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 و Metrics. | latest، X.Y.Z برای نسخههای منتشرشده، sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | مشابه مورد قبل، به علاوه کانالهای صوتی، نظرسنجیها، ایمیل، تقویم، یادداشتها، تخته سفید، GIFها، کارهای در انتظار و میمها. هر شب بازسازی میشود. | latest, nightly, nightly-<YYYYMMDD>, sha-<commit> |
بستههای تصویر دیگر شامل Kanban یا Playbooks نیستند: در صورت نیاز، هر یک را از انتشار 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(شناسه کاربری ۲۰۰۰) روی یک پایه دایسترولس (distroless) حداقلی و بدون شل اجرا میشود. - پورتها: ۸۰۶۵ (وب و API)، ۸۰۶۷ (متریکها)، ۸۰۷۴ (خوشه)، ۸۴۴۳ 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)، یا پس از ورود، رمز عبور را تغییر دهید.
مرحلههای بعد از ورود:
- برای یک شرکت یا سازمان، نوع جوامع جدید را روی فضای کاری تنظیم کنید و نوع جامعهای که از قبل ایجاد کردهاید را در تنظیمات آن تغییر دهید: Guild یا فضای کاری.
- تعیین کنید چه کسانی میتوانند حساب کاربری ایجاد کنند: ورود و حسابهای کاربری.
- ایمیل را پیکربندی کنید تا دعوتنامهها و بازنشانی رمز عبور کار کنند: ایمیل و اعلانهای پوش.
- پورت مکالمات را در فایروال خود باز کنید: مکالمات و صدا.
- بررسی کنید کدام برنامهها فعال هستند: برنامههای همراه.
دانلود یک نسخه انتشار
بدون 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 | آرشیو نسخه انتشار، برای هر توزیع لینوکس، که به صورت دستی راهاندازی میشود. |
SHA256SUMS | چکسام SHA-256 هر فایل از نسخه انتشار. |
بستهها و آرشیو شامل همان برنامه هستند: سرور (antimatter)، ابزار خط فرمان (amctl)، هر دو برنامه وب (رابط پیشفرض و کلاسیک)، برنامههای همراه، قالبهای ایمیل و ترجمهها. بستهها یک سرویس systemd و یک فایل تنظیمات اضافه میکنند، بنابراین هر کدام یک نصب یکپارچه هستند: شما فقط باید یک پایگاه داده PostgreSQL اضافه کنید. دانلودهای جداگانه باینری وجود ندارد: باینریها در آرشیو، در antimatter/bin/ قرار دارند. آنها استاتیک هستند، بنابراین روی هر توزیع لینوکس با معماری مربوطه اجرا میشوند.
در نام بستهها، خط تیرهٔ نسخهٔ پیشانتشار به علامت تیلدا تبدیل میشود تا مدیر بسته، نسخهٔ پیشانتشار را قبل از نسخهٔ نهایی مرتب کند: نسخهٔ 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 نصب میکند که فقط برای شروع به یک پایگاه داده نیاز دارد. از آن روی سرورهای ۶۴ بیتی 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-server (در فدورا و RHEL)، media-types (mailcap برای بستههای .rpm) و gifs-server (سرویس GIF که انتشار مستقلی دارد؛ به بخش زیر مراجعه کنید) توصیه میشود. ابزارهای apt و dnf در صورت وجود، بستههای توصیهشده را نصب میکنند. همچنین نصب poppler-utils، wv، unrtf و tidy پیشنهاد میشود (در بستههای .rpm، wv وجود ندارد): این ابزارها متن اسناد بارگذاریشده را استخراج میکنند تا جستجو بتواند کلمات را درون آنها پیدا کند. اگر این قابلیت را میخواهید، آنها را به صورت دستی نصب کنید.
۱. نصب بستهها
بسته 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 را فعال میکند اما آن را اجرا نمیکند و مراحل بعدی را نمایش میدهد.
۲. ایجاد پایگاه داده
Antimatter به PostgreSQL نسخه ۱۵ یا جدیدتر نیاز دارد، چه روی همین سرور و چه روی سروری دیگر. نسخه 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 استفاده کنند.
۳. تنظیم پایگاه داده و نشانی سایت
فایل /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
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.
این سرویس همچنین چند مقدار پیشفرض را تنظیم میکند که با خطوط موجود در antimatter.env بازنویسی میشوند: ثبت لاگ در فایل غیرفعال است (AM_LOGSETTINGS_ENABLEFILE=false، AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false) و حالت محلی فعال است (AM_SERVICESETTINGS_ENABLELOCALMODE=true) تا دستور amctl --local روی سرور کار کند.
۴. راهاندازی سرویس
sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status
در اولین اجرا، سرور جداول خود را ایجاد میکند و سپس روی پورت ۸۰۶۵ گوش میدهد. آدرس http://<server>:8065 را باز کنید، یا پس از راهاندازی پروکسی معکوس، دامنه خود را باز کنید (به دامنه و HTTPS مراجعه کنید) و بلافاصله اولین حساب کاربری را ایجاد کنید؛ این حساب به عنوان مدیر سیستم در نظر گرفته خواهد شد. برای ایجاد آن از طریق خط فرمان، به جای docker compose exec antimatter amctl --local از دستورهای amctl بخش ایجاد اولین مدیر سیستم استفاده کنید و به جای آن از sudo -u antimatter amctl --local استفاده نمایید.
۵. فعالسازی 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استفاده کنید تا تغییرات شما در یک فایل جداگانه حفظ شود.
ارتقای بسته
- یک پشتیبان تهیه کنید (بخش پشتیبانگیری و ارتقا را ببینید).
- بسته جدید و فایل
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/ هستند: گفتگوی هوش مصنوعی، مکالمات، گیفها، میمها، یادداشتها، نظرسنجیها، کارهای در انتظار، کانالهای صوتی و تخته سفید. برنامهای که هنگام ساخت نسخه سرور هنوز منتشر نشده بود، حذف میشود: دستور ls /opt/antimatter/prepackaged_plugins نشان میدهد که نسخه شما شامل چه چیزی است. میمها و کارهای در انتظار گنجانده شدهاند اما فعال نیستند: برنامههای پیشفرض توضیح میدهد که چگونه آنها را نصب و فعال کنید.
کانبان و پلیبوکها دیگر با سرور یا هیچیک از ایمیجهای Docker همراه نیستند: سروری که از قبل یکی از آنها را نصب کرده است، در طول ارتقا آن را حفظ میکند و سایر کاربران میتوانند آن را از انتشار مستقل خود، مانند برنامههای زیر، نصب کنند. سایر برنامههای ایمیجهای Docker نیز در بستهها یا آرشیو موجود نیستند: ایمیل، تقویم، GitHub، GitLab، Jira و Metrics. هر یک از آنها، از جمله کانبان و پلیبوکها را از انتشارهای مستقل خود نصب کنید:
| اپلیکیشن | انتشارها | شناسه اپلیکیشن |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Playbooks | 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 |
| Metrics | 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 را پس از آن دوباره حذف کنید. برای سایر روشهای نصب برنامهها، به نصب سایر برنامهها مراجعه کنید.
امضاهای برنامه
بستههای برنامه با کلید امضای آنتیمتر امضا شدهاند: هر فایل .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/، به بالا مراجعه کنید)، قالبهای ایمیل و ترجمهها میشود.
۱. آمادهسازی PostgreSQL
آنتیمتر فقط از PostgreSQL نسخه ۱۵ یا جدیدتر پشتیبانی میکند (نسخههای قدیمیتر اجرا میشوند اما با خطایی در لاگ همراه هستند). یک کاربر و یک پایگاه داده ایجاد کنید:
sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF
۲. استخراج و پیکربندی
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) یا با متغیرهای محیطی، و آدرس سایت را تنظیم کنید:
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 در آرشیو، یک پیکربندی پیشفرض کامل است: تنظیماتی که در کنسول سیستم تغییر میدهید، در آن ذخیره میشوند. برای نگهداری پیکربندی در پایگاه داده به جای این فایل، به پیکربندی مراجعه کنید.
۳. اجرا به عنوان سرویس
یک واحد 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
سرور روی پورت ۸۰۶۵ گوش میدهد. 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 را مطابق با مرحله ۵ بخش بستهها تنظیم کنید.
بستههای سرویس GIF و پروکسی پوش
سرویس GIF و پروکسی پوش (Push Proxy) نسخههای مستقلی دارند که از همان قوانین سرور پیروی میکنند: یک آرشیو .tar.gz، یک بسته .deb و یک بسته .rpm برای amd64 و arm64، و یک فایل SHA256SUMS. نسخههایی که دارای خط تیره هستند، پیشنشره (Prerelease) محسوب میشوند. همانند سرور، صحت فایلهای دانلودی را با 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، ویدیو و استیکر هنگام وارد کردن یا دریافت فایلها استفاده میکند و بدون آنها نیز به کار خود ادامه میدهد.
مانند سرور، این سرویس در زمان نصب فعال میشود اما اجرا نمیگردد. آن را طبق مرحله ۵ بخش بستهها راهاندازی کنید. پس از بهروزرسانی، سرویس را مجدداً راهاندازی کنید: 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 را میخواند (که در بهروزرسانیها حفظ میشود). اعتبارنامههای 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". سپس Push Notification Server را در Antimatter روی http://<proxy host>:8066 تنظیم کنید. پس از بهروزرسانی، سرویس را مجدداً راهاندازی کنید: sudo systemctl restart antimatter-push-proxy.
سایر دستورات سرور
علاوه بر اجرای سرور (antimatter یا antimatter server)، فایل اجرایی دارای چند دستور نگهداری است. این دستورات از همان پیکربندی سرور استفاده میکنند.
| دستور | عملکرد |
|---|---|
antimatter version | نسخه، شماره ساخت، تاریخ ساخت و هش ساخت را چاپ میکند. |
antimatter db ping | دسترسی به پایگاه داده را بررسی میکند. |
antimatter db init | پیکربندی را در پایگاه داده ایجاد میکند (با تنظیم AM_CONFIG روی یک آدرس postgres://). |
antimatter db migrate | مهاجرتهای پایگاه داده را بدون راهاندازی سرور اعمال میکند. |
antimatter db version | آخرین مهاجرت اعمالشده روی پایگاه داده را چاپ میکند. |
antimatter import bulk, antimatter export bulk | دادهها را در قالب دستهای وارد یا صادر میکند (به پشتیبانگیری و ارتقا مراجعه کنید). |