การติดตั้ง Antimatter

ติดตั้ง Antimatter ด้วยไฟล์ compose ที่พร้อมใช้งาน จากแพ็กเกจ .deb หรือ .rpm ของเวอร์ชันที่ปล่อยออกมา หรือจากอาร์ไคฟ์ของเวอร์ชันที่ปล่อยออกมา จากนั้นสร้างบัญชีผู้ดูแลระบบคนแรก

ติดตั้งด้วย Docker Compose

นี่คือวิธีที่แนะนำ ไฟล์ compose เดียวสามารถรัน Antimatter, PostgreSQL, ที่เก็บไฟล์ และบริการ GIF ได้ คุณต้องมีเซิร์ฟเวอร์ Linux ที่มี Docker Engine และปลั๊กอิน Compose (docker compose), 2 คอร์ CPU และหน่วยความจำ 4 GB ขึ้นไป

1. ดาวน์โหลดไฟล์ compose

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

2. สร้างไฟล์ .env

ไฟล์ compose จะอ่านค่าการตั้งค่าจากไฟล์ .env ในไดเรกทอรีเดียวกัน สร้างไฟล์นี้โดยใช้คีย์ลับแบบสุ่ม:

cat > .env <<EOF
SITE_URL=http://localhost:8065
POSTGRES_PASSWORD=$(openssl rand -hex 24)
S3_SECRET_KEY=$(openssl rand -hex 24)
GIFS_API_KEY=$(openssl rand -hex 24)
AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)
EOF
chmod 600 .env

ตั้งค่า SITE_URL เป็นที่อยู่ที่จะพิมพ์ในเบราว์เซอร์ เช่น http://192.168.1.20:8065 บนเครือข่ายภายใน หรือ https://chat.example.com หากมีโดเมน อย่าวางไฟล์ .env: ฐานข้อมูลและพื้นที่จัดเก็บใช้รหัสผ่านเหล่านี้ตั้งแต่เริ่มใช้งานครั้งแรก กุญแจ API ของการเชื่อมต่อโมเดล AI ถูกเข้ารหัสด้วย AM_AI_ENCRYPTION_KEY และคุณต้องการไฟล์เดียวกันนี้เพื่อสำรองข้อมูล

3. เริ่มใช้งาน

docker compose up -d
docker compose ps

การเริ่มต้นใช้งานครั้งแรกใช้เวลาประมาณ 1-2 นาที: PostgreSQL สร้างฐานข้อมูล, บริการ bucket แบบใช้ครั้งเดียวสร้างที่เก็บข้อมูล, บริการ gifs-stickers แบบใช้ครั้งเดียวนำเข้าชุดสติกเกอร์เริ่มต้น และ Antimatter สร้างตาราง ติดตามสถานะด้วย docker compose logs -f antimatter

หากต้องการใช้โดเมนเนมและ HTTPS ตั้งแต่เริ่มต้น ดู โดเมนและ HTTPS: เมื่อใช้ไฟล์ compose คุณต้องเพิ่มอีก 2 บรรทัดใน .env และใช้โปรไฟล์ https

ตัวแปรในไฟล์ .env

ตัวแปรค่าเริ่มต้นสิ่งที่ทำ
SITE_URLจำเป็นที่อยู่สาธารณะของ Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDจำเป็นรหัสผ่านของผู้ใช้ฐานข้อมูล antimatter.
S3_SECRET_KEYจำเป็นคีย์ลับของที่เก็บไฟล์.
GIFS_API_KEYจำเป็นคีย์ที่ Antimatter ใช้เรียกใช้บริการ GIF.
AM_AI_ENCRYPTION_KEYว่างกุญแจที่เข้ารหัสกุญแจ API ของการเชื่อมต่อโมเดล AI (openssl rand -base64 32) หากว่าง: เซิร์ฟเวอร์จะสร้างไฟล์กุญแจในโวลุ่ม data ดู กุญแจการเข้ารหัส
GIFS_UPLOAD_KEYว่างอนุญาตให้ผู้ใช้เพิ่ม GIF และสติกเกอร์ของตัวเองจากตัวเลือก (picker) และลบได้ หากว่าง: ปิดการอัปโหลด
DOMAINว่างโดเมนเนมของคุณ สำหรับโปรไฟล์ https.
HTTP_PORT8065พอร์ตบนโฮสต์ของเซิร์ฟเวอร์เว็บของ Antimatter.
CALLS_PORT8443พอร์ต UDP และ TCP สำหรับเสียงและวิดีโอในการโทร.
EDGE_SUBNET172.29.71.0/28ซับเน็ตของเครือข่ายระหว่าง Caddy และ Antimatter เปลี่ยนค่านี้หากทับซ้อนกับเครือข่ายของคุณ
TZUTCเขตเวลาของคอนเทนเนอร์.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestอิมเมจ Antimatter ที่จะใช้ (ดูด้านล่าง).

สิ่งที่ทำงาน

บริการภาพบทบาท
antimatterghcr.io/antimatterchat/antimatter-nextเซิร์ฟเวอร์ แอปเว็บ และแอปที่รวมมาด้วย เผยแพร่ HTTP_PORT และ CALLS_PORT โฟลเดอร์ข้อมูลของมันคือโวลุ่ม data
postgrespostgres:17-alpineฐานข้อมูล ในโวลุ่ม postgres.
filesrustfs/rustfsที่เก็บข้อมูลแบบ S3 สำหรับไฟล์ที่อัปโหลดและแอปที่ติดตั้ง ในโวลุ่ม files
bucketamazon/aws-cliสร้างบัคเก็ต antimatter แล้วออกจากโปรแกรม
gifsghcr.io/antimatterchat/gifs-serverบริการ GIF และสติ๊กเกอร์ ในโวลุ่ม gifs
gifs-stickersghcr.io/antimatterchat/gifs-serverนำเข้าชุดสติ๊กเกอร์เริ่มต้นในครั้งแรก แล้วออกจากโปรแกรม
httpscaddy:2-alpineเฉพาะโปรไฟล์ https: HTTPS บนพอร์ต 80 และ 443

PostgreSQL, ที่เก็บข้อมูล และบริการ GIF อยู่บนเครือข่ายภายใน (private) ที่ไม่มีอินเทอร์เน็ต ซึ่ง Antimatter เท่านั้นที่เข้าร่วม ไม่มีตัวใดเปิดพอร์ต

คอนเทนเนอร์ Antimatter ไม่เก็บข้อมูลใด ๆ บนดิสก์: การตั้งค่าของมันอยู่ในฐานข้อมูล (AM_CONFIG ชี้ไปที่ฐานข้อมูล) และไฟล์และแอปของมันอยู่ในบริการจัดเก็บข้อมูล คุณสามารถลบและสร้างคอนเทนเนอร์ใหม่ได้ทุกเมื่อ โวลุ่ม data ของมันเก็บเฉพาะไฟล์กุญแจการเข้ารหัส AI ซึ่งเซิร์ฟเวอร์จะสร้างเมื่อ AM_AI_ENCRYPTION_KEY ว่าง สิ่งที่ต้องสำรองข้อมูลทั้งหมดอยู่ในโวลุ่ม postgres, files, gifs และ data รวมถึงไฟล์ .env ของคุณ

เลือกภาพ

มีภาพ Antimatter ที่เผยแพร่สองภาพ ทั้งสองสำหรับ linux/amd64 และ linux/arm64 และทั้งสองสร้างจากสาขา main ของทุกที่เก็บโค้ด:

ภาพแอปที่รวมมาให้แท็ก
ghcr.io/antimatterchat/antimatterเอเจนต์, การโทร, GitHub, GitLab, Jira, Kanban, Metrics และเพลยบุ๊ก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 แบบขั้นต่ำ โดยไม่มี shell
  • พอร์ต: 8065 (เว็บและ API), 8067 (เมตริก), 8074 (คลัสเตอร์), 8443 UDP และ TCP (การโทร)
  • โหมดโลคอล (ServiceSettings.EnableLocalMode) เปิดอยู่ ดังนั้น amctl --local จึงทำงานได้ภายในคอนเทนเนอร์ การตรวจสอบสถานะสุขภาพจะรัน amctl system status --local
  • แอปที่รวมมาให้จะอยู่ที่ /antimatter/prepackaged_plugins และถูกเซ็นด้วยคีย์เซ็นแอปของ Antimatter
  • เครื่องมือสำหรับดึงข้อความ (pdftotext, wvText, unrtf, tidy) ถูกติดตั้งมาให้แล้ว จึงสามารถค้นหาเนื้อหาในเอกสารที่อัปโหลดได้

ไฟล์ compose อื่น ๆ

รีพอสิทอรี antimatter-docker มีชุดการตั้งค่าสำหรับใช้งานจริงใน deploy/compose/: nginx พร้อมใบรับรองของคุณเองหรือ Let's Encrypt (certbot), PostgreSQL, บริการ GIF (โปรไฟล์ gifs) และ named volumes สำหรับค่าการตั้งค่า ข้อมูล และบันทึกของเซิร์ฟเวอร์ ซึ่งอธิบายไว้ใน README ของมัน ใช้ภาพ (image) เวอร์ชันเสถียรเป็นค่าเริ่มต้น และเก็บไฟล์บน local volume แทน S3 storage ใช้ชุดนี้หากคุณชอบ nginx มากกว่า Caddy หรือมีใบรับรองอยู่แล้ว

สร้างผู้ดูแลระบบคนแรก

เปิด SITE_URL ในเบราว์เซอร์ของคุณแล้วสร้างบัญชี บัญชีแรกที่ถูกสร้างบนเซิร์ฟเวอร์ใหม่จะกลายเป็นผู้ดูแลระบบ จากนั้นระบบจะแนะนำคุณในการสร้างชุมชนแรก (ชื่อที่ Antimatter ใช้เรียกทีมหรือพื้นที่ทำงาน)

ทำสิ่งนี้ทันทีหลังการเริ่มต้นใช้งานครั้งแรก: จนกว่าจะถึงเวลานั้น ใครก็ตามที่เข้าถึงเซิร์ฟเวอร์ก่อนจะกลายเป็นผู้ดูแลระบบของมัน หากต้องการสร้างบัญชีผ่านบรรทัดคำสั่งแทน ให้ทำก่อนที่เซิร์ฟเวอร์จะเข้าถึงได้จากภายนอก:

docker compose exec antimatter amctl --local user create --system-admin --email-verified \
    --email admin@example.com --username admin --password 'a-long-password'
docker compose exec antimatter amctl --local team create --name main --display-name "Main"
docker compose exec antimatter amctl --local team users add main admin

จากนั้นเข้าสู่ระบบที่ SITE_URL เริ่มคำสั่งด้วยช่องว่างเพื่อไม่ให้รหัสผ่านปรากฏในประวัติ shell (เมื่อ HISTCONTROL=ignorespace) หรือเปลี่ยนรหัสผ่านหลังจากเข้าสู่ระบบแล้ว

ขั้นตอนถัดไปเมื่อคุณเข้าระบบแล้ว:

  1. สำหรับบริษัทหรือองค์กร ตั้งค่า ประเภทของชุมชนใหม่ เป็น ที่ทำงาน และเปลี่ยนประเภทของชุมชนที่คุณสร้างแล้วในการตั้งค่า: ที่ทำงานหรือชุมชน
  2. กำหนดว่าใครสามารถสร้างบัญชีได้: การเข้าสู่ระบบและบัญชี
  3. ตั้งค่าอีเมล เพื่อให้การเชิญและการรีเซ็ตรหัสผ่านทำงานได้: อีเมลและการแจ้งเตือนแบบ push
  4. เปิดพอร์ตสำหรับโทรในไฟร์วอลล์ของคุณ: การโทรและเสียง
  5. ตรวจสอบว่าแอปใดเปิดอยู่: แอปที่รวมมาให้

ดาวน์โหลดเวอร์ชันที่ปล่อยออกมา

หากไม่มี Docker ติดตั้ง Antimatter จากไฟล์ของเวอร์ชันที่ปล่อยออกมาบน GitHub: github.com/AntimatterChat/antimatter/releases แต่ละเวอร์ชันที่ปล่อยออกมามีหมายเลขเวอร์ชัน เช่น 0.9.0 และแท็กของมันคือหมายเลขเดียวกันที่มี v นำหน้า (v0.9.0)

Antimatter อยู่ในช่วงเบต้า: การปล่อยเวอร์ชันอยู่ในชุด 0.9.0 เวอร์ชันที่มีส่วนต่อท้ายหลังเครื่องหมายขีดกลาง (hyphen) เช่น 0.9.0-rc.1 จะถูกทำเครื่องหมายว่า Pre-release บน GitHub ซึ่งเป็นเวอร์ชันทดสอบที่เผยแพร่ก่อนการปล่อยเวอร์ชันสุดท้าย

แต่ละการปล่อยเวอร์ชันมีไฟล์เหล่านี้ สำหรับเซิร์ฟเวอร์ amd64 และ arm64:

ไฟล์คืออะไร
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debแพ็กเกจสำหรับ Debian, Ubuntu และระบบปฏิบัติการที่พัฒนาจากทั้งสอง
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmแพ็กเกจสำหรับ Fedora, RHEL และระบบปฏิบัติการที่เข้ากันได้กับ RHEL
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzอาร์ไคฟ์ของการปล่อยเวอร์ชัน สำหรับระบบปฏิบัติการ Linux ใดก็ได้ ติดตั้งด้วยตนเอง
SHA256SUMSค่า SHA-256 checksum ของทุกไฟล์ในการปล่อยเวอร์ชัน

แพ็กเกจและอาร์ไคฟ์มีโปรแกรมเดียวกัน: เซิร์ฟเวอร์ (antimatter), เครื่องมือบรรทัดคำสั่ง (amctl), แอปพลิเคชันเว็บทั้งสอง (อินเทอร์เฟซเริ่มต้นและอินเทอร์เฟซแบบคลาสสิก), แอปพลิเคชันที่รวมมา, เทมเพลตอีเมล และการแปลภาษา แพ็กเกจเพิ่มบริการ systemd และไฟล์การตั้งค่า ดังนั้นแต่ละแพ็กเกจจึงเป็นการติดตั้งแบบครบวงจร: คุณต้องเพิ่มฐานข้อมูล PostgreSQL เท่านั้น ไม่มีดาวน์โหลดไบนารีแยกต่างหาก: ไบนารีอยู่ในอาร์ไคฟ์ ใน antimatter/bin/ เป็นแบบ static ดังนั้นจึงทำงานได้บนระบบปฏิบัติการ Linux ใดก็ได้ที่มีสถาปัตยกรรมเดียวกัน

ในชื่อแพ็กเกจ เครื่องหมายขีดกลาง (hyphen) ของเวอร์ชันก่อนเผยแพร่ (prerelease) จะกลายเป็นเครื่องหมาย tilde เพื่อให้ตัวจัดการแพ็กเกจจัดเรียงเวอร์ชันก่อนเผยแพร่ให้อยู่ก่อนเวอร์ชันสุดท้าย: เวอร์ชัน 0.9.0-rc.1 ให้ antimatter_0.9.0~rc.1-1_amd64.deb และ antimatter-0.9.0~rc.1-1.x86_64.rpm อาร์ไคฟ์ยังคงใช้เครื่องหมายขีดกลาง

antimatter version แสดงเวอร์ชันการปล่อยเป็น เลขที่บิลด์ พร้อม commit ที่ใช้สร้างเป็น แฮชของบิลด์ บรรทัด เวอร์ชัน คือเวอร์ชันของสาย Mattermost ที่ Antimatter พัฒนาต่อยอดมา

ตรวจสอบการดาวน์โหลด

ดาวน์โหลดไฟล์ที่คุณต้องการและ SHA256SUMS ไปยังไดเรกทอรีเดียวกัน จากหน้าการปล่อยเวอร์ชันหรือด้วย curl จากนั้นตรวจสอบไฟล์:

curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/antimatter_<version>-1_amd64.deb
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS

แต่ละไฟล์ที่คุณดาวน์โหลดต้องถูกระบุว่า OK ผลลัพธ์อื่นใดหมายความว่าไฟล์เสียหายหรือไม่สมบูรณ์: ดาวน์โหลดใหม่ และอย่าติดตั้ง SHA256SUMS ไม่ได้ลงนาม: มันตรวจจับการดาวน์โหลดที่เสียหาย และพิสูจน์ไม่ได้มากกว่าการดาวน์โหลดผ่าน HTTPS จาก GitHub

ติดตั้งแพ็กเกจ .deb หรือ .rpm

แพ็กเกจติดตั้ง Antimatter เป็นบริการ systemd ซึ่งต้องการเพียงฐานข้อมูลเพื่อเริ่มทำงาน ใช้กับเซิร์ฟเวอร์ 64-bit Debian, Ubuntu, Fedora หรือ RHEL-compatible ที่มี 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ไฟล์บันทึก (log) หากคุณเปิดการบันทึกไฟล์ไว้ ซึ่งปิดอยู่: การบันทึกจะส่งไปยัง journal
/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 ให้ข้ามแพ็กเกจนั้น แพ็กเกจนี้จะเปิดใช้งาน (enable) บริการ antimatter แต่จะไม่เริ่มทำงาน (start) และจะแสดงขั้นตอนถัดไป

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) ลบ # หน้าบรรทัดที่คุณต้องการใช้ แล้วตั้งค่าฐานข้อมูลและที่อยู่ (address) ที่ผู้ใช้จะเปิด:

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

การตั้งค่าใดๆ ใน configuration สามารถใส่ในไฟล์นี้ได้ ในรูปแบบ AM_<SECTION>_<SETTING>: ตัวอย่างเช่น SqlSettings.DataSource จะเป็น AM_SQLSETTINGS_DATASOURCE การตั้งค่าที่ใส่ในไฟล์นี้จะไม่สามารถเปลี่ยนได้ในคอนโซลระบบ ดู Configuration และรีสตาร์ทเซิร์ฟเวอร์หลังแต่ละการเปลี่ยนแปลง: sudo systemctl restart antimatter

บริการยังตั้งค่าเริ่มต้น (defaults) บางอย่าง ซึ่งบรรทัดใน antimatter.env จะทับค่าเหล่านี้: การบันทึก log ลงไฟล์จะปิดอยู่ (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false) และ local mode จะเปิดอยู่ (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) และสร้างบัญชีแรกทันที: บัญชีนี้จะกลายเป็นผู้ดูแลระบบ (system administrator) หากต้องการสร้างจากบรรทัดคำสั่งแทน ให้ใช้คำสั่ง 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 key ของบริการ แพ็กเกจ 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

ใส่ key ใน antimatter.env เป็น AM_GIFS_API_KEY=<key> แล้วรีสตาร์ท Antimatter หรือกรอกเป็น API key ใน คอนโซลระบบ › ปลั๊กอิน › GIF หากบริการ GIF ทำงานบนเซิร์ฟเวอร์อื่น ให้ตั้งค่า AM_GIFS_SERVICE_URL เป็นที่อยู่ของมัน หากต้องการให้ผู้ใช้เพิ่ม GIF และสติกเกอร์ของตัวเอง ดู GIF

บริการ

  • ทำงานด้วยผู้ใช้ antimatter ใน /opt/antimatter และอ่าน /etc/antimatter/antimatter.env systemd จะรีสตาร์ทเซิร์ฟเวอร์เมื่อมันสิ้นสุด และให้เวลาสูงสุดหนึ่งชั่วโมงในการเริ่มทำงาน เนื่องจาก database migrations ของเวอร์ชันใหม่อาจใช้เวลานาน
  • บันทึกการดำเนินงาน (logs) อยู่ใน journal: journalctl -u antimatter
  • มีการเสริมความปลอดภัย: /usr และ /etc เป็น read-only สำหรับเซิร์ฟเวอร์ ยกเว้น /etc/antimatter/config และไม่สามารถเข้าถึง /home, /root หรือ /run/user ได้ หากคุณย้ายที่เก็บไฟล์ (FileSettings.Directory) ให้เลือกไดเรกทอรีที่อยู่ภายนอกเหล่านี้ และเป็นของ antimatter
  • การอัปเกรดจะแทนที่ไฟล์บริการ หากต้องการแก้ไข ให้ใช้ sudo systemctl edit antimatter ซึ่งจะเก็บการเปลี่ยนแปลงของคุณไว้ในไฟล์แยกต่างหาก

อัปเกรดแพ็กเกจ

  1. สำรองข้อมูล (ดู การสำรองข้อมูลและการอัปเกรด)
  2. ดาวน์โหลดแพ็กเกจใหม่และ SHA256SUMS แล้วตรวจสอบ
  3. หยุดเซิร์ฟเวอร์ ติดตั้งแพ็กเกจใหม่ทับตัวเก่า แล้วเริ่มทำงานอีกครั้ง:
    sudo systemctl stop antimatter
    sudo apt install ./antimatter_<new version>-1_amd64.deb     # or: sudo dnf install ./antimatter-<new version>-1.x86_64.rpm
    sudo systemctl start antimatter
    journalctl -u antimatter -f

แพ็กเกจจะไม่รีสตาร์ทเซิร์ฟเวอร์ด้วยตัวเอง หลังอัปเกรดจะพิมพ์ข้อความ Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: หากไม่ได้หยุดเซิร์ฟเวอร์ไว้ก่อน ให้รีสตาร์ททันที การอัปเกรดจะแทนที่ /opt/antimatter และไฟล์บริการ แต่จะเก็บ antimatter.env, config.json, /var/lib/antimatter และล็อกไว้ เมื่อเซิร์ฟเวอร์เริ่มทำงาน ระบบจะอัปเกรดฐานข้อมูลและติดตั้งเวอร์ชันใหม่ของแอปที่มากับระบบ

หากเวอร์ชันใหม่มีการเปลี่ยนแปลงค่าเริ่มต้นใน antimatter.env apt จะถามว่าจะเก็บเวอร์ชันของคุณไว้หรือไม่: ให้เลือกเก็บ dnf จะเก็บเวอร์ชันของคุณไว้และบันทึกเวอร์ชันใหม่เป็น /etc/antimatter/antimatter.env.rpmnew การอัปเกรดทำได้เฉพาะไปข้างหน้าเท่านั้น: ห้ามติดตั้งเวอร์ชันเก่าทับเวอร์ชันใหม่

การลบแพ็กเกจ

sudo apt remove antimatter หรือ sudo dnf remove antimatter จะหยุดและปิดการใช้งานบริการ และลบโปรแกรมออก ระบบจะเก็บข้อมูล (/var/lib/antimatter), การตั้งค่า (/etc/antimatter), ฐานข้อมูล และผู้ใช้ antimatter ไว้: คุณต้องลบสิ่งเหล่านี้ด้วยตนเองหากต้องการลบ Antimatter ออกไปทั้งหมด

แอปในแพ็กเกจและไฟล์อาร์ไคฟ์

แพ็กเกจและไฟล์อาร์ไคฟ์มาพร้อมเวอร์ชันล่าสุดที่ลงนามรับรองของแอปเหล่านี้ ใน prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels และ Whiteboard แอปที่ยังไม่มีการเปิดตัวเวอร์ชัน ณ เวลาที่สร้างเวอร์ชันเซิร์ฟเวอร์จะถูกตัดออก: ใช้คำสั่ง ls /opt/antimatter/prepackaged_plugins เพื่อดูว่าเวอร์ชันของคุณมีอะไรบ้าง Memes และ Todo ถูกนำรวมมาแต่ยังไม่ได้เปิดใช้งาน: Bundled apps อธิบายวิธีการติดตั้งและเปิดใช้งาน

แอปอื่นๆ ใน Docker images ไม่มีอยู่ในแพ็กเกจหรือไฟล์อาร์ไคฟ์: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira และ Metrics ติดตั้งแต่ละแอปจากเวอร์ชันเปิดตัวของแอปนั้นเอง:

แอปเวอร์ชันเปิดตัวApp id
Kanbanantimatter-plugin-boardsfocalboard
เพลยบุ๊กantimatter-plugin-playbooksplaybooks
อีเมลantimatter-plugin-mailcom.antimatterchat.mail
ปฏิทินantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
ตัวชี้วัดAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

แต่ละเวอร์ชันของแอปจะมีไฟล์แพ็กเกจของแอป (ไฟล์ .tar.gz), ไฟล์ลายเซ็น (ชื่อเดียวกันแต่เพิ่ม .sig ต่อท้าย) และไฟล์ SHA256SUMS เพื่อติดตั้งแอป ให้เปิดการอนุญาตการอัปโหลด จากนั้นเพิ่มไฟล์แพ็กเกจด้วย amctl:

# 1. In /etc/antimatter/antimatter.env, add this line, then restart Antimatter
AM_PLUGINSETTINGS_ENABLEUPLOADS=true
sudo systemctl restart antimatter
# 2. Download the bundle where the antimatter user can read it, and install it
cd /tmp
curl -fLO https://github.com/AntimatterChat/antimatter-plugin-boards/releases/download/v<version>/<bundle>.tar.gz
sudo -u antimatter amctl --local plugin add <bundle>.tar.gz
sudo -u antimatter amctl --local plugin enable focalboard

เพื่ออัปเกรดแอปที่ติดตั้งด้วยวิธีนี้ ให้เพิ่มไฟล์แพ็กเกจเวอร์ชันใหม่ด้วย plugin add --force: การอัปเกรดแพ็กเกจจะอัปเกรดเฉพาะแอปที่อยู่ในแพ็กเกจเท่านั้น คุณสามารถลบบรรทัด AM_PLUGINSETTINGS_ENABLEUPLOADS ออกได้หลังจากทำเสร็จแล้ว ดู การติดตั้งแอปอื่น สำหรับวิธีติดตั้งแอปอื่น ๆ

ลายเซ็นของแอป

ไฟล์แพ็กเกจของแอปได้รับการลงนามด้วยคีย์การลงนามของแอป Antimatter: ไฟล์ .tar.gz.sig แต่ละไฟล์คือลายเซ็น GPG แบบแยกส่วน (detached) ของไฟล์แพ็กเกจนั้น ๆ เซิร์ฟเวอร์จะตรวจสอบลายเซ็นเหล่านี้ก่อนติดตั้งแอปที่อยู่ในแพ็กเกจ เพื่อตรวจสอบไฟล์แพ็กเกจด้วยตนเอง:

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 หรือโดเมนของคุณเมื่อตั้งค่า reverse proxy แล้ว (ดู โดเมนและ 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 และพร็อกซีการแจ้งเตือน

บริการ 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 วิดีโอ และสติกเกอร์เมื่อมีการนำเข้าหรือรับไฟล์ และจะทำงานได้แม้ไม่มีเครื่องมือเหล่านี้

เช่นเดียวกับเซิร์ฟเวอร์ บริการนี้จะถูกเปิดใช้งาน (enabled) แต่ไม่ถูกเริ่ม (started) ในระหว่างการติดตั้ง เริ่มทำงานตามที่แสดงใน ขั้นตอนที่ 5 ของแพ็กเกจ หลังจากอัปเกรด ให้รีสตาร์ท: sudo systemctl restart gifs-server การลบแพ็กเกจจะยังคงเก็บแคตตาล็อกไว้ใน /var/lib/gifs-server

push proxy

เวอร์ชัน: 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 อธิบายว่าข้อมูลรับรองเหล่านี้มาจากที่ใด

sudo apt install ./antimatter-push-proxy_*_amd64.deb      # or: sudo dnf install ./antimatter-push-proxy-*.x86_64.rpm
sudo install -o root -g antimatter-push-proxy -m 0640 \
    AuthKey_ABCDE12345.p8 firebase-service-account.json /etc/antimatter-push-proxy/certs/
sudoedit /etc/antimatter-push-proxy/antimatter-push-proxy.json
sudo systemctl start antimatter-push-proxy
journalctl -u antimatter-push-proxy -f

ในไฟล์การตั้้งค่า เส้นทางจะเป็นสัมพัทธ์กับ /etc/antimatter-push-proxy: ตัวอย่างเช่น "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" และ "ServiceFileLocation": "./certs/firebase-service-account.json" จากนั้นตั้้งค่า เซิรฟ์เวอร์การแจ้งเตือนแบบพุช ใน Antimatter เป็น http://<proxy host>:8066 หลังจากอัปเกรดแล้ว ให้รีสตาร์ท: sudo systemctl restart antimatter-push-proxy

พุชพร็อกซีจะฟังบนพอร์ต 8066 บนทุกระดัก (address) และไม่วิเคราะห์ว่าใครเป็นผู้เรียกใช้ ให้อย่าเปิดพอร์ตนี้บนเครือข่ายสาธารณะ หรือควรอยู่หลังรีเวอร์สพร็อกซีที่จำกัดการเข้าถึง

คำสั่งเซิร์ฟเวอร์อื่นๆ

นอกเหนือจากการรันเซิร์ฟเวอร์ (antimatter หรือ antimatter server) แล้ว ไบนารีนี้ยังมีคำสั่งบำรุงรักษาอีกหลายคำสั่ง ซึ่งอ่านค่าการตั้งค่าเดียวกันกับเซิร์ฟเวอร์

คำสั่งสิ่งที่ทำ
antimatter versionแสดงเวอร์ชัน, หมายเลขการสร้าง, วันที่สร้าง และแฮชของการสร้าง
antimatter db pingตรวจสอบว่าสามารถเข้าถึงฐานข้อมูลได้
antimatter db initสร้างการตั้งค่าในฐานข้อมูล (โดยตั้งค่า AM_CONFIG เป็น URL แบบ postgres://)
antimatter db migrateใช้การย้ายฐานข้อมูล (migrations) โดยไม่เริ่มเซิร์ฟเวอร์
antimatter db versionแสดงการย้ายฐานข้อมูลล่าสุดที่นำไปใช้กับฐานข้อมูล
antimatter import bulk, antimatter export bulkนำเข้าหรือส่งออกข้อมูลในรูปแบบก้อน (bulk format) (ดู การสำรองข้อมูลและการอัปเกรด)