Cài đặt Antimatter

Cài đặt Antimatter bằng tệp compose có sẵn, từ gói .deb hoặc .rpm của bản phát hành, hoặc từ tệp lưu trữ của bản phát hành. Sau đó, tạo tài khoản quản trị viên đầu tiên.

Cài đặt bằng Docker Compose

Đây là cách được khuyến nghị. Một tệp compose chạy Antimatter, PostgreSQL, bộ lưu trữ tệp và dịch vụ GIF. Bạn cần một máy chủ Linux có Docker Engine và plugin Compose của nó (docker compose), 2 nhân CPU và 4 GB bộ nhớ trở lên.

1. Tải xuống tệp compose

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

2. Tạo tệp .env

Tệp compose đọc cài đặt từ tệp .env trong cùng thư mục. Tạo tệp này với các bí mật ngẫu nhiên:

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

Đặt SITE_URL thành địa chỉ mà người dùng sẽ nhập vào trình duyệt, ví dụ http://192.168.1.20:8065 trên mạng nội bộ hoặc https://chat.example.com với tên miền. Giữ lại tệp .env: cơ sở dữ liệu và bộ lưu trữ sử dụng các mật khẩu này từ lần khởi động đầu tiên, các khóa API của kết nối mô hình AI được mã hóa bằng AM_AI_ENCRYPTION_KEY, và bạn cần tệp này để khôi phục bản sao lưu.

3. Khởi động

docker compose up -d
docker compose ps

Lần khởi động đầu tiên mất một hoặc hai phút: PostgreSQL tạo cơ sở dữ liệu, dịch vụ bucket chạy một lần tạo thùng lưu trữ, dịch vụ gifs-stickers chạy một lần nhập bộ sticker khởi đầu, và Antimatter tạo các bảng của nó. Theo dõi quá trình này bằng docker compose logs -f antimatter.

Để sử dụng tên miền và HTTPS ngay từ đầu, xem Tên miền và HTTPS: với tệp compose, chỉ cần thêm hai dòng trong .env và hồ sơ https.

Các biến .env

BiếnMặc địnhChức năng
SITE_URLbắt buộcĐịa chỉ công khai của Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDbắt buộcMật khẩu của người dùng cơ sở dữ liệu antimatter.
S3_SECRET_KEYbắt buộcKhóa bí mật của bộ lưu trữ tệp.
GIFS_API_KEYbắt buộcKhóa mà Antimatter sử dụng để gọi dịch vụ GIF.
AM_AI_ENCRYPTION_KEYtrốngKhóa mã hóa các khóa API của kết nối mô hình AI (openssl rand -base64 32). Để trống: máy chủ sẽ tạo tệp khóa trong volume data. Xem Khóa mã hóa.
GIFS_UPLOAD_KEYtrốngCho phép người dùng thêm GIF và sticker của riêng họ từ trình chọn và xóa chúng. Để trống sẽ tắt tính năng tải lên.
DOMAINtrốngTên miền của bạn, cho hồ sơ https.
HTTP_PORT8065Cổng máy chủ của máy chủ web Antimatter.
CALLS_PORT8443Cổng UDP và TCP của âm thanh và video cuộc gọi.
EDGE_SUBNET172.29.71.0/28Mạng con của mạng giữa Caddy và Antimatter. Thay đổi nếu nó chồng chéo với một trong các mạng của bạn.
TZUTCMúi giờ của các container.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestẢnh Antimatter để chạy (xem bên dưới).

Những gì được chạy

Dịch vụẢnhVai trò
antimatterghcr.io/antimatterchat/antimatter-nextMáy chủ, ứng dụng web và các ứng dụng tích hợp. Công bố HTTP_PORT và CALLS_PORT. Thư mục dữ liệu của nó là volume data.
postgrespostgres:17-alpineCơ sở dữ liệu, trong volume postgres.
filesrustfs/rustfsLưu trữ tương thích S3 cho các tệp đã tải lên và các ứng dụng đã cài đặt, trong volume files.
bucketamazon/aws-cliTạo bucket antimatter, sau đó thoát.
gifsghcr.io/antimatterchat/gifs-serverDịch vụ GIF và sticker, trong volume gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverNhập bộ sticker khởi động lần đầu tiên, sau đó thoát.
httpscaddy:2-alpineChỉ với profile https: HTTPS trên cổng 80 và 443.

PostgreSQL, dịch vụ lưu trữ và dịch vụ GIF nằm trên một mạng nội bộ (private) không có quyền truy cập Internet, và chỉ Antimatter tham gia vào mạng này. Không có dịch vụ nào trong số đó công bố (publish) một cổng.

Container Antimatter không lưu trữ gì trên đĩa: cài đặt của nó nằm trong cơ sở dữ liệu (AM_CONFIG trỏ đến đó) và tệp cùng ứng dụng của nó nằm trong dịch vụ lưu trữ. Bạn có thể xóa và tạo lại container bất cứ lúc nào. Volume data của nó chỉ chứa tệp khóa mã hóa AI, được máy chủ tạo khi AM_AI_ENCRYPTION_KEY để trống. Mọi thứ cần sao lưu đều nằm trong các volume postgres, files, gifs và data, cùng với tệp .env của bạn.

Chọn một hình ảnh

Có hai hình ảnh Antimatter được phát hành, cả hai đều dành cho linux/amd64 và linux/arm64, và cả hai đều được xây dựng từ nhánh main của mọi kho lưu trữ:

ẢnhỨng dụng có sẵnThẻ (Tags)
ghcr.io/antimatterchat/antimatterTrợ lý, Cuộc gọi, GitHub, GitLab, Jira, Kanban, Metrics và Playbook.latest, X.Y.Z cho các bản phát hành, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextTương tự, kèm thêm Kênh thoại, Bình chọn, Email, Lịch, Ghi chú, Bảng trắng, GIF, Việc cần làm và Meme. Được xây dựng lại mỗi đêm.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

Tệp compose của trang web sử dụng antimatter-next, vì dịch vụ GIF và hầu hết các ứng dụng được mô tả trên trang web này chỉ có trong hình ảnh đó. Để thay đổi hình ảnh, hãy đặt ANTIMATTER_IMAGE trong .env và chạy docker compose up -d.

latest có thể thay đổi dưới chân bạn. Trong môi trường sản xuất, hãy cố định (pin) một thẻ như nightly-20261015 hoặc sha-<commit>, và chỉ thay đổi nó một cách có chủ đích khi bạn nâng cấp. Máy chủ sẽ nâng cấp cơ sở dữ liệu của nó khi khởi động, vì vậy bạn không thể quay lại một hình ảnh cũ hơn, hoặc chuyển từ antimatter-next sang antimatter, mà không khôi phục bản sao lưu được tạo trước đó. Xem Sao lưu và nâng cấp.

Bên trong hình ảnh

  • Máy chủ nằm trong /antimatter, với các tệp nhị phân antimatter và amctl trong /antimatter/bin (trên PATH).
  • Nó chạy dưới người dùng không đặc quyền antimatter (uid 2000) trên một nền tảng distroless tối thiểu, không có shell.
  • Cổng: 8065 (web và API), 8067 (metrics), 8074 (cluster), 8443 UDP và TCP (cuộc gọi).
  • Chế độ cục bộ (ServiceSettings.EnableLocalMode) đang bật, do đó amctl --local hoạt động bên trong container. Kiểm tra sức khỏe chạy lệnh amctl system status --local.
  • Các ứng dụng tích hợp sẵn nằm trong /antimatter/prepackaged_plugins, được ký bằng khóa ký ứng dụng Antimatter.
  • Các công cụ trích xuất văn bản (pdftotext, wvText, unrtf, tidy) được bao gồm, cho phép tìm kiếm nội dung của các tài liệu đã tải lên.

Các tệp compose khác

Kho antimatter-docker có cấu hình cho môi trường sản xuất trong deploy/compose/: nginx với chứng chỉ của bạn hoặc Let's Encrypt (certbot), PostgreSQL, dịch vụ GIF tùy chọn (profile gifs) và các volume có tên cho cấu hình, dữ liệu và nhật ký của máy chủ, được mô tả trong tệp README. Tệp này sử dụng ảnh ổn định (stable) theo mặc định và lưu tệp trên volume cục bộ thay vì lưu trữ S3. Hãy sử dụng nó nếu bạn ưu tiên nginx hơn Caddy, hoặc đã có sẵn chứng chỉ.

Tạo quản trị viên đầu tiên

Mở SITE_URL trong trình duyệt và tạo tài khoản. Tài khoản đầu tiên được tạo trên máy chủ mới sẽ trở thành quản trị viên hệ thống, sau đó quy trình thiết lập sẽ hướng dẫn bạn tạo cộng đồng đầu tiên (tên mà Antimatter dùng để chỉ nhóm hoặc không gian làm việc).

Hãy thực hiện ngay sau lần khởi động đầu tiên: cho đến khi đó, bất kỳ ai tiếp cận máy chủ trước sẽ trở thành quản trị viên của nó. Để tạo tài khoản từ dòng lệnh thay vì qua trình duyệt, trước khi máy chủ có thể được truy cập từ bên ngoài:

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

Sau đó, đăng nhập tại SITE_URL. Bắt đầu lệnh bằng một khoảng trắng để mật khẩu không bị lưu vào lịch sử shell (với HISTCONTROL=ignorespace), hoặc thay đổi mật khẩu sau khi đã đăng nhập.

Các bước tiếp theo sau khi bạn đã vào hệ thống:

  1. Đối với công ty hoặc tổ chức, đặt Loại cộng đồng mới thành Nơi làm việc, và thay đổi loại của cộng đồng bạn đã tạo trong cài đặt của nó: Nơi làm việc hoặc cộng đồng.
  2. Quyết định ai có thể tạo tài khoản: Đăng nhập và tài khoản.
  3. Cấu hình email để lời mời và đặt lại mật khẩu hoạt động: Email và thông báo đẩy.
  4. Mở cổng cho cuộc gọi trong tường lửa: Cuộc gọi và thoại.
  5. Kiểm tra ứng dụng nào đang bật: Ứng dụng tích hợp sẵn.

Tải xuống bản phát hành

Không sử dụng Docker, cài đặt Antimatter từ các tệp của bản phát hành trên GitHub: github.com/AntimatterChat/antimatter/releases. Mỗi bản phát hành có một số phiên bản như 0.9.0, và thẻ (tag) của nó là cùng số đó với chữ v ở đầu (v0.9.0).

Antimatter đang ở giai đoạn beta: các bản phát hành thuộc dòng 0.9.0. Bản phát hành có phiên bản kèm hậu tố sau dấu gạch ngang, chẳng hạn 0.9.0-rc.1, sẽ được đánh dấu Pre-release trên GitHub. Đây là phiên bản thử nghiệm, được phát hành trước bản chính thức.

Mỗi bản phát hành bao gồm các tệp sau, dành cho máy chủ amd64 và arm64:

TệpMô tả
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debGói cài đặt cho Debian, Ubuntu và các hệ điều hành dựa trên chúng.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmGói cài đặt cho Fedora, RHEL và các hệ điều hành tương thích với RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzTệp lưu trữ (archive) của bản phát hành, dành cho bất kỳ phân phối Linux nào, được cài đặt thủ công.
SHA256SUMSMã kiểm tra SHA-256 của tất cả các tệp trong bản phát hành.

Các gói và tệp lưu trữ chứa cùng một chương trình: máy chủ (antimatter), công cụ dòng lệnh (amctl), cả hai ứng dụng web (giao diện mặc định và giao diện cổ điển), các ứng dụng tích hợp sẵn, các mẫu email và các bản dịch. Các gói bổ sung một dịch vụ systemd và một tệp cài đặt, do đó mỗi gói là một cài đặt tất cả trong một: bạn chỉ cần thêm cơ sở dữ liệu PostgreSQL. Không có tệp nhị phân tải xuống riêng biệt: các tệp nhị phân nằm trong tệp lưu trữ, tại antimatter/bin/. Chúng là tệp tĩnh (static), do đó có thể chạy trên bất kỳ phân phối Linux nào có kiến trúc tương ứng.

Trong tên gói, dấu gạch ngang của phiên bản trước khi phát hành (prerelease) được thay bằng dấu lượn sóng (~) để trình quản lý gói sắp xếp phiên bản prerelease trước bản chính thức: phiên bản 0.9.0-rc.1 tạo ra antimatter_0.9.0~rc.1-1_amd64.deb và antimatter-0.9.0~rc.1-1.x86_64.rpm. Tệp lưu trữ giữ nguyên dấu gạch ngang.

Lệnh antimatter version in ra phiên bản phát hành dưới dạng Mã phiên bản, kèm theo mã cam kết (commit) mà nó được xây dựng dưới dạng Mã bản biên dịch. Dòng Phiên bản là phiên bản của dòng Mattermost mà Antimatter dựa trên.

Kiểm tra tệp tải xuống

Tải tệp bạn cần và SHA256SUMS vào cùng một thư mục, từ trang phát hành hoặc bằng curl, sau đó kiểm tra tệp:

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

Mỗi tệp bạn đã tải xuống phải được liệt kê kèm OK. Bất kỳ kết quả nào khác có nghĩa là tệp bị hỏng hoặc không đầy đủ: hãy tải lại và không cài đặt nó. SHA256SUMS không được ký: nó phát hiện tệp tải xuống bị hỏng và không chứng minh được gì nhiều hơn so với việc tải xuống qua HTTPS từ GitHub.

Cài đặt gói .deb hoặc .rpm

Gói cài đặt Antimatter như một dịch vụ systemd, chỉ cần một cơ sở dữ liệu để khởi động. Sử dụng nó trên máy chủ 64-bit Debian, Ubuntu, Fedora hoặc tương thích với RHEL có systemd.

Những gì gói cài đặt

Đường dẫnNội dung
/opt/antimatterChương trình: bin/antimatter, bin/amctl, các ứng dụng web (client/, client-fusion/), các ứng dụng được đóng gói (prepackaged_plugins/), các mẫu, bản dịch và phông chữ. Mỗi lần nâng cấp sẽ thay thế chúng.
/etc/antimatter/antimatter.envCài đặt của dịch vụ, dưới dạng các biến AM_: cơ sở dữ liệu, URL của trang web, dịch vụ GIF. Chỉ root có thể đọc. Các bản nâng cấp sẽ giữ nguyên chúng.
/etc/antimatter/config/config.jsonTệp cấu hình, nơi máy chủ lưu các cài đặt đã thay đổi trong Bảng điều khiển Hệ thống. Tệp này được tạo từ /opt/antimatter/defaults/config.json trong lần cài đặt đầu tiên và không bao giờ bị thay thế sau đó.
/var/lib/antimatterCác tệp đã tải lên (data/) và các ứng dụng đã cài đặt (plugins/, client-plugins/).
/var/log/antimatterCác tệp nhật ký, nếu bạn bật ghi nhật ký ra tệp. Tính năng này đang tắt: nhật ký sẽ được ghi vào journal.
/usr/lib/systemd/system/antimatter.serviceDịch vụ.
/usr/bin/amctlMột liên kết đến /opt/antimatter/bin/amctl.

Các thư mục mà máy chủ ghi vào trong /opt/antimatter (config, data, plugins, client/plugins và logs) là các liên kết đến /etc/antimatter, /var/lib/antimatter và /var/log/antimatter. Do đó, một bản nâng cấp, vốn thay thế /opt/antimatter, sẽ không bao giờ chạm đến dữ liệu của bạn. Gói cũng tạo người dùng hệ thống antimatter, người chạy máy chủ và sở hữu các thư mục này.

Gói này phụ thuộc vào ca-certificates. Nó khuyến nghị PostgreSQL (postgresql trên Debian và Ubuntu, postgresql-server trên Fedora và RHEL), media-types (mailcap cho tệp .rpm) và gifs-server, dịch vụ GIF, có bản phát hành riêng (xem phía dưới). apt và dnf sẽ cài đặt các gói khuyến nghị khi tìm thấy chúng. Gói này đề xuất poppler-utils, wv, unrtf và tidy (không có wv cho tệp .rpm): chúng trích xuất văn bản từ các tài liệu đã tải lên, để tìm kiếm có thể tìm thấy các từ bên trong chúng. Hãy tự cài đặt chúng nếu bạn muốn tính năng này.

1. Cài đặt các gói

Tải xuống gói Antimatter và gói dịch vụ GIF cho kiến trúc của bạn, kiểm tra chúng như đã nêu ở trên, và cài đặt cả hai trong một lệnh, để đáp ứng khuyến nghị của gifs-server (nó không có trong kho của các bản phân phối):

# 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

Giữ nguyên ./: nó cho apt và dnf biết rằng cần cài đặt một tệp cục bộ. Để cài đặt không kèm dịch vụ GIF, hãy bỏ qua gói này. Gói này sẽ kích hoạt dịch vụ antimatter nhưng không khởi động nó, và sẽ in ra các bước tiếp theo.

2. Tạo cơ sở dữ liệu

Antimatter cần PostgreSQL 15 hoặc mới hơn, trên máy chủ này hoặc trên máy chủ khác. Kiểm tra phiên bản PostgreSQL của phân phối hệ điều hành bằng lệnh psql --version. Nếu phiên bản cũ hơn, hãy cài đặt phiên bản mới hơn từ kho lưu trữ chính thức của dự án PostgreSQL, hoặc sử dụng cơ sở dữ liệu trên một máy chủ khác. Trên Debian và Ubuntu, gói postgresql sẽ khởi động cơ sở dữ liệu. Trên Fedora và RHEL, hãy tạo và khởi động nó trước:

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

Sau đó, tạo một người dùng và một cơ sở dữ liệu cho 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 phải chấp nhận các kết nối bằng mật khẩu từ 127.0.0.1: các dòng host trong tệp pg_hba.conf của nó, với phương thức scram-sha-256.

3. Cấu hình cơ sở dữ liệu và URL của trang web

Chỉnh sửa tệp /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Xóa ký tự # ở đầu các dòng bạn sử dụng, và thiết lập cơ sở dữ liệu cùng địa chỉ mà người dùng sẽ truy cập:

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

Bất kỳ cài đặt nào trong cấu hình đều có thể đặt trong tệp này, dưới dạng AM_<SECTION>_<SETTING>: ví dụ, SqlSettings.DataSource sẽ là AM_SQLSETTINGS_DATASOURCE. Một cài đặt được đặt ở đây không thể được thay đổi trong Bảng điều khiển Hệ thống. Xem Cấu hình. Khởi động lại máy chủ sau mỗi lần thay đổi: sudo systemctl restart antimatter.

Dịch vụ cũng thiết lập một số giá trị mặc định, có thể bị ghi đè bởi một dòng trong antimatter.env: ghi nhật ký vào tệp bị tắt (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), và chế độ cục bộ được bật (AM_SERVICESETTINGS_ENABLELOCALMODE=true), để lệnh amctl --local hoạt động trên máy chủ.

4. Khởi động

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

Khi khởi động lần đầu, máy chủ sẽ tạo các bảng dữ liệu, sau đó lắng nghe trên cổng 8065. Mở http://<server>:8065, hoặc tên miền của bạn sau khi đã cấu hình proxy ngược (xem Tên miền và HTTPS), và tạo ngay tài khoản đầu tiên: tài khoản này sẽ trở thành quản trị viên hệ thống. Nếu muốn tạo tài khoản này từ dòng lệnh, hãy sử dụng các lệnh amctl trong mục Tạo quản trị viên đầu tiên, với sudo -u antimatter amctl --local thay cho docker compose exec antimatter amctl --local.

5. Bật GIF

Ứng dụng GIF được tích hợp sẵn và đã bật, và antimatter.env đã trỏ đến dịch vụ GIF trên cùng máy chủ (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Tuy nhiên, nó vẫn cần khóa API của dịch vụ. Gói gifs-server đã tạo một khóa khi cài đặt:

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

Đặt khóa vào antimatter.env dưới dạng AM_GIFS_API_KEY=<key> và khởi động lại Antimatter, hoặc nhập nó vào trường Khóa API trong Bảng điều khiển Hệ thống › Các plugin › GIF. Nếu dịch vụ GIF chạy trên một máy chủ khác, hãy đặt AM_GIFS_SERVICE_URL thành địa chỉ của máy chủ đó. Để cho phép người dùng thêm GIF và sticker của riêng họ, xem GIF.

Dịch vụ

  • Nó chạy dưới người dùng antimatter, trong thư mục /opt/antimatter, và đọc tệp /etc/antimatter/antimatter.env. systemd sẽ khởi động lại máy chủ mỗi khi nó thoát, và cho phép nó tối đa một giờ để khởi động, vì các bước di chuyển cơ sở dữ liệu (database migrations) của một phiên bản mới có thể mất nhiều thời gian.
  • Nhật ký của nó nằm trong journal: journalctl -u antimatter.
  • Nó được tăng cường bảo mật: /usr và /etc chỉ đọc đối với máy chủ, ngoại trừ /etc/antimatter/config, và nó không thể truy cập /home, /root hoặc /run/user. Nếu bạn di chuyển bộ nhớ lưu trữ tệp (FileSettings.Directory), hãy chọn một thư mục nằm ngoài các thư mục này và thuộc sở hữu của antimatter.
  • Các bản nâng cấp sẽ thay thế tệp dịch vụ. Để thay đổi tệp này, hãy sử dụng sudo systemctl edit antimatter, điều này sẽ giữ các thay đổi của bạn trong một tệp riêng biệt.

Nâng cấp một gói

  1. Sao lưu dữ liệu (xem Sao lưu và nâng cấp).
  2. Tải xuống gói mới và tệp SHA256SUMS, sau đó kiểm tra chúng.
  3. Dừng máy chủ, cài đặt gói mới đè lên gói cũ, và khởi động lại:
    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

Gói không tự động khởi động lại máy chủ. Sau khi nâng cấp, nó sẽ in ra Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: nếu bạn chưa dừng máy chủ trước, hãy khởi động lại ngay lập tức. Quá trình nâng cấp sẽ thay thế /opt/antimatter và tệp dịch vụ, nhưng giữ lại antimatter.env, config.json, /var/lib/antimatter và các tệp nhật ký. Khi khởi động, máy chủ sẽ nâng cấp cơ sở dữ liệu và cài đặt các phiên bản mới hơn của các ứng dụng được tích hợp sẵn.

Nếu một phiên bản mới thay đổi tệp antimatter.env mặc định, apt sẽ hỏi bạn có muốn giữ phiên bản của mình hay không: hãy giữ lại. dnf sẽ giữ phiên bản của bạn và lưu phiên bản mới dưới tên /etc/antimatter/antimatter.env.rpmnew. Quá trình nâng cấp chỉ diễn ra theo hướng tiến lên: không cài đặt phiên bản cũ đè lên phiên bản mới.

Gỡ bỏ một gói

sudo apt remove antimatter hoặc sudo dnf remove antimatter sẽ dừng và vô hiệu hóa dịch vụ, đồng thời gỡ bỏ chương trình. Dữ liệu (/var/lib/antimatter), cấu hình (/etc/antimatter), cơ sở dữ liệu và người dùng antimatter sẽ được giữ lại: hãy tự xóa chúng nếu muốn gỡ bỏ Antimatter hoàn toàn.

Các ứng dụng trong gói và tệp lưu trữ

Các gói và tệp lưu trữ bao gồm bản phát hành mới nhất đã được ký của các ứng dụng này, nằm trong prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels và Whiteboard. Một ứng dụng chưa có bản phát hành nào tại thời điểm xây dựng bản phát hành máy chủ sẽ không được bao gồm: lệnh ls /opt/antimatter/prepackaged_plugins sẽ cho bạn thấy bản phát hành của bạn bao gồm những gì. Memes và Todo được bao gồm nhưng chưa được bật: Ứng dụng tích hợp sẵn giải thích cách cài đặt và bật chúng.

Các ứng dụng khác trong các ảnh Docker không có trong các gói hoặc tệp lưu trữ: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira và Metrics. Hãy cài đặt từng ứng dụng từ các bản phát hành riêng của chúng:

Ứng dụngCác bản phát hànhID ứng dụng
Kanbanantimatter-plugin-boardsfocalboard
Playbookantimatter-plugin-playbooksplaybooks
Thưantimatter-plugin-mailcom.antimatterchat.mail
Lịchantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
Chỉ số đo lườngAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Mỗi bản phát hành ứng dụng đều có gói ứng dụng (tệp .tar.gz), chữ ký của nó (cùng tên nhưng thêm .sig) và tệp SHA256SUMS. Để cài đặt một ứng dụng, hãy cho phép tải lên, sau đó thêm gói bằng 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

Để nâng cấp một ứng dụng đã được cài đặt theo cách này, hãy thêm gói mới bằng plugin add --force: nâng cấp gói chỉ nâng cấp các ứng dụng được đóng gói sẵn. Sau đó, bạn có thể xóa dòng AM_PLUGINSETTINGS_ENABLEUPLOADS. Xem Cài đặt các ứng dụng khác để biết các cách cài đặt ứng dụng khác.

Chữ ký ứng dụng

Các gói ứng dụng được ký bằng khóa ký ứng dụng của Antimatter: mỗi tệp .tar.gz.sig là một chữ ký GPG tách rời của gói tương ứng. Máy chủ sẽ kiểm tra các chữ ký này trước khi cài đặt một ứng dụng đóng gói sẵn. Để tự kiểm tra một gói:

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 phải báo cáo một chữ ký hợp lệ từ Antimatter Plugin Signing, với dấu vân tay 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Nó cũng cảnh báo rằng khóa không được chứng nhận bằng chữ ký đáng tin cậy: điều này là bình thường đối với một khóa mà bạn chưa tự ký. Một bản phát hành ứng dụng không có tệp .sig là không được ký, và ghi chú phát hành của nó sẽ nêu rõ điều đó.

Cài đặt từ tệp lưu trữ bản phát hành

Tệp lưu trữ, antimatter-<version>-linux-<arch>.tar.gz (ví dụ antimatter-0.9.0-linux-amd64.tar.gz), phù hợp với các phân phối không có gói .deb hoặc .rpm, hoặc một cấu hình tùy chỉnh của riêng bạn. Nó chứa một thư mục antimatter/ duy nhất với bin/antimatter, bin/amctl, config/config.json, các ứng dụng web (client/ và client-fusion/), các ứng dụng đóng gói sẵn (prepackaged_plugins/, xem phía trên), các mẫu email và các bản dịch.

1. Chuẩn bị PostgreSQL

Antimatter chỉ hỗ trợ PostgreSQL, phiên bản 15 trở lên (các phiên bản cũ hơn sẽ khởi động nhưng ghi lỗi vào nhật ký). Hãy tạo một người dùng và một cơ sở dữ liệu:

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

2. Giải nén và cấu hình

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

Chỉ định máy chủ đến cơ sở dữ liệu, thông qua /opt/antimatter/config/config.json (SqlSettings.DataSource) hoặc bằng các biến môi trường, và đặt URL của trang web:

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

Tệp config.json trong tệp lưu trữ là một cấu hình mặc định hoàn chỉnh: các cài đặt bạn thay đổi trong Bảng điều khiển Hệ thống sẽ được lưu lại vào tệp này. Nếu muốn lưu cấu hình trong cơ sở dữ liệu thay vì tệp, hãy xem Cấu hình.

3. Chạy dưới dạng dịch vụ

Một đơn vị systemd, đặt tại /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

Đặt các biến AM_ của bạn vào /etc/antimatter.env (chỉ root có quyền đọc), sau đó:

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

Máy chủ sẽ lắng nghe trên cổng 8065. Mở http://<server>:8065, hoặc tên miền của bạn sau khi đã cấu hình bộ định tuyến ngược (xem Tên miền và HTTPS), và tạo tài khoản đầu tiên: tài khoản này sẽ trở thành quản trị viên hệ thống.

bin/amctl cho phép quản lý máy chủ đang chạy từ dòng lệnh. Trên chính máy chủ, nó hoạt động mà không cần đăng nhập thông qua chế độ cục bộ: đặt AM_SERVICESETTINGS_ENABLELOCALMODE=true, sau đó chạy sudo -u antimatter /opt/antimatter/bin/amctl --local system status.

Đối với GIF, hãy cài đặt dịch vụ GIF (xem bên dưới) và đặt AM_GIFS_SERVICE_URL và AM_GIFS_API_KEY như trong bước 5 của các gói.

Các gói dịch vụ GIF và proxy đẩy

Dịch vụ GIF và proxy push có các bản phát hành riêng, tuân theo cùng các quy tắc như máy chủ: một tệp lưu trữ .tar.gz, một gói .deb và một gói .rpm cho amd64 và arm64, cùng một tệp SHA256SUMS. Các phiên bản có dấu gạch ngang là bản phát hành trước. Kiểm tra các tệp tải xuống bằng lệnh sha256sum --check --ignore-missing SHA256SUMS, giống như với máy chủ.

Dịch vụ GIF (gifs-server)

Các bản phát hành: github.com/AntimatterChat/gifs-server/releases. Tệp lưu trữ có tên gifs-server-<version>-linux-<arch>.tar.gz; các gói được đặt tên là gifs-server.

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

Gói cài đặt:

  • /usr/bin/gifs-server, và dịch vụ gifs-server, chạy dưới người dùng gifs-server và lưu danh mục của nó trong /var/lib/gifs-server;
  • dịch vụ gifs-server-stickers, nhập hoặc cập nhật bộ sticker trong /usr/share/gifs-server/stickers khi bạn khởi động nó, sau đó dừng lại;
  • cài đặt của nó, /etc/gifs-server/gifs-server.env (các biến AM_GIFS_, được giữ lại khi nâng cấp) và /etc/gifs-server/api-keys, mỗi dòng một khóa API, với một khóa ngẫu nhiên được tạo ra trong lần cài đặt đầu tiên.

Nó lắng nghe trên 127.0.0.1:8080, do đó chỉ Antimatter trên cùng máy chủ mới có thể truy cập. Nếu Antimatter chạy ở nơi khác, hãy đặt AM_GIFS_LISTEN=:8080 trong gifs-server.env và hạn chế truy cập vào cổng bằng tường lửa của bạn. Tệp này liệt kê các cài đặt khác: AM_GIFS_UPLOAD_KEYS (các khóa được phép thêm GIF và sticker, và xóa những thứ đã được thêm bằng chúng), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY và AM_GIFS_LOG_LEVEL. Gói khuyến nghị ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools cho .rpm) và một phông DejaVu: dịch vụ sử dụng chúng để tạo các định dạng GIF, video và sticker khi nhập hoặc nhận tệp, và vẫn chạy được mà không có chúng.

Giống như máy chủ, dịch vụ được bật nhưng không khởi động khi cài đặt. Khởi động nó như đã mô tả trong bước 5 của các gói. Sau khi nâng cấp, hãy khởi động lại: sudo systemctl restart gifs-server. Gỡ bỏ gói sẽ giữ lại danh mục trong /var/lib/gifs-server.

Proxy push

Phiên bản phát hành: github.com/AntimatterChat/push-proxy/releases. Tệp lưu trữ có tên antimatter-push-proxy-<version>-linux-<arch>.tar.gz; các gói được đặt tên là antimatter-push-proxy. Gói này cài đặt /usr/bin/antimatter-push-proxy và dịch vụ antimatter-push-proxy, chạy dưới người dùng antimatter-push-proxy và đọc tệp /etc/antimatter-push-proxy/antimatter-push-proxy.json (được giữ lại khi nâng cấp). Thông tin xác thực của Apple và Firebase được đặt trong /etc/antimatter-push-proxy/certs: Thông báo đẩy giải thích nguồn gốc của chúng.

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

Trong tệp cài đặt, các đường dẫn là tương đối so với /etc/antimatter-push-proxy: ví dụ "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" và "ServiceFileLocation": "./certs/firebase-service-account.json". Sau đó, đặt Máy chủ thông báo đẩy trong Antimatter thành http://<proxy host>:8066. Sau khi nâng cấp, hãy khởi động lại: sudo systemctl restart antimatter-push-proxy.

Proxy thông báo lắng nghe trên cổng 8066 ở mọi địa chỉ và không kiểm tra ai đang gọi. Hãy giữ cổng này trong mạng riêng tư, hoặc đặt sau một proxy ngược hạn chế quyền truy cập.

Các lệnh máy chủ khác

Ngoài lệnh chạy máy chủ (antimatter, hoặc antimatter server), tệp nhị phân còn có một số lệnh bảo trì. Chúng đọc cùng một cấu hình với máy chủ.

LệnhChức năng
antimatter versionIn ra phiên bản, số hiệu bản dựng, ngày dựng và mã băm của bản dựng.
antimatter db pingKiểm tra xem có thể kết nối đến cơ sở dữ liệu hay không.
antimatter db initTạo cấu hình trong cơ sở dữ liệu (với AM_CONFIG được đặt thành một URL postgres://).
antimatter db migrateÁp dụng các di chuyển cơ sở dữ liệu mà không khởi động máy chủ.
antimatter db versionIn ra di chuyển cuối cùng đã được áp dụng vào cơ sở dữ liệu.
antimatter import bulk, antimatter export bulkNhập hoặc xuất dữ liệu ở định dạng hàng loạt (xem Sao lưu và nâng cấp).