Antimatter 설치
준비된 compose 파일, 릴리스의 .deb 또는 .rpm 패키지, 또는 릴리스 아카이브로 Antimatter를 설치합니다. 그런 다음 첫 번째 관리자 계정을 만듭니다.
Docker Compose로 설치
이것이 권장하는 방법입니다. 하나의 compose 파일로 Antimatter, PostgreSQL, 파일 저장소 및 GIF 서비스를 실행합니다. Docker Engine 및 Compose 플러그인(docker compose)이 설치된 Linux 서버, 2개의 CPU 코어 및 4GB 이상의 메모리가 필요합니다.
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 파일을 유지하세요. 데이터베이스와 스토리지가 처음 시작할 때 이 파일의 비밀번호를 사용하며, AI 모델 연결의 API 키는 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 파일에서는 .env에 두 줄과 https 프로필만 추가하면 됩니다.
.env 변수
| 변수 | 기본값 | 기능 |
|---|---|---|
SITE_URL | 필수 | Antimatter의 공개 주소(ServiceSettings.SiteURL). |
POSTGRES_PASSWORD | 필수 | antimatter 데이터베이스 사용자의 비밀번호. |
S3_SECRET_KEY | 필수 | 파일 저장소의 시크릿 키. |
GIFS_API_KEY | 필수 | Antimatter가 GIF 서비스를 호출하는 데 사용하는 키. |
AM_AI_ENCRYPTION_KEY | 빈 값 | AI 모델 연결의 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 프로필에서만: 포트 80과 443에서 HTTPS를 제공합니다. |
PostgreSQL, 스토리지 및 GIF 서비스는 인터넷 접근이 없는 내부 네트워크(private)에 있으며, Antimatter만 이 네트워크에 참여합니다. 이 서비스들은 포트를 공개하지 않습니다.
Antimatter 컨테이너는 디스크에 아무것도 저장하지 않습니다. 설정은 데이터베이스에 있으며(AM_CONFIG가 이를 가리킴) 파일과 앱은 스토리지 서비스에 있습니다. 컨테이너를 언제든지 삭제하고 다시 생성할 수 있습니다. data 볼륨에는 AM_AI_ENCRYPTION_KEY가 비어 있을 때 서버가 생성하는 AI 암호화 키 파일만 포함됩니다. 백업해야 할 모든 것은 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 파일은 GIF 서비스와 이 사이트에서 설명하는 대부분의 앱이 해당 이미지에만 포함되어 있기 때문에 antimatter-next를 사용합니다. 이미지를 변경하려면 .env에서 ANTIMATTER_IMAGE를 설정하고 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/에 프로덕션 환경 설정이 포함되어 있습니다. 자체 인증서 또는 Let's Encrypt(certbot)를 사용하는 nginx, PostgreSQL, 선택적 GIF 서비스(프로필 gifs), 그리고 서버의 설정, 데이터, 로그를 위한 이름 지정 볼륨이 README에 문서화되어 있습니다. 기본적으로 안정 버전 이미지를 사용하며, S3 스토리지 대신 로컬 볼륨에 파일을 저장합니다. Caddy 대신 nginx를 선호하거나 이미 인증서를 보유하고 있는 경우 이 설정을 사용하세요.
첫 번째 관리자 생성
브라우저에서 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 설정 시), 또는 로그인 후 비밀번호를 변경하세요.
로그인 후 다음 단계를 진행하세요:
- 회사나 조직의 경우, 새 커뮤니티 종류를 업무 공간으로 설정하고, 이미 만든 커뮤니티의 종류는 해당 설정에서 변경합니다: 업무 공간 또는 커뮤니티.
- 누가 계정을 생성할 수 있는지 결정하세요: 로그인 및 계정.
- 초대 및 비밀번호 재설정이 작동하도록 이메일을 설정하세요: 이메일 및 푸시 알림.
- 방화벽에서 통화 포트를 열세요: 통화 및 음성.
- 활성화된 앱을 확인하세요: 번들된 앱.
릴리스 다운로드
Docker 없이 GitHub의 릴리스 파일로 Antimatter를 설치합니다: 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/ 디렉터리에 있습니다. 정적(static) 바이너리이므로 해당 아키텍처의 모든 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 명령은 릴리스 버전을 빌드 번호로, 빌드된 커밋을 빌드 해시로 출력합니다. 버전 줄은 Antimatter의 기반이 되는 Mattermost 라인 버전입니다.
다운로드 확인
필요한 파일과 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는 서명되지 않았습니다. 이는 손상된 다운로드를 감지할 수 있지만, GitHub에서 HTTPS로 다운로드하는 것 이상의 것을 증명하지는 않습니다.
.deb 또는 .rpm 패키지 설치
패키지는 Antimatter를 systemd 서비스로 설치하며, 시작하려면 데이터베이스만 필요합니다. systemd가 있는 64비트 Debian, Ubuntu, Fedora 또는 RHEL 호환 서버에서 사용하십시오.
패키지가 설치하는 내용
| 경로 | 포함 내용 |
|---|---|
/opt/antimatter | 프로그램: bin/antimatter, bin/amctl, 웹 앱(client/, client-fusion/), 번들 앱(prepackaged_plugins/), 템플릿, 번역, 폰트. 각 업그레이드 시 이 내용이 교체됩니다. |
/etc/antimatter/antimatter.env | 서비스 설정, AM_ 변수로 저장됩니다: 데이터베이스, 사이트 URL, GIF 서비스. 루트 사용자만 읽을 수 있습니다. 업그레이드 시 이 설정은 유지됩니다. |
/etc/antimatter/config/config.json | 설정 파일, 서버가 시스템 콘솔에서 변경한 설정을 저장합니다. 최초 설치 시 /opt/antimatter/defaults/config.json에서 생성되며, 이후에는 절대 교체되지 않습니다. |
/var/lib/antimatter | 업로드된 파일(data/)과 설치된 앱(plugins/, client-plugins/). |
/var/log/antimatter | 파일 로깅을 켜면 생성되는 로그 파일입니다. 기본적으로 꺼져 있으며, 로그는 저널(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(Debian과 Ubuntu에서는 postgresql, Fedora와 RHEL에서는 postgresql-server), media-types(.rpm의 경우 mailcap), 그리고 자체 릴리스가 있는 GIF 서비스인 gifs-server(아래 참조)를 권장합니다. apt와 dnf는 권장 패키지를 찾으면 자동으로 설치합니다. poppler-utils, wv, unrtf, tidy(.rpm에는 wv 없음)를 제안합니다. 이 도구들은 업로드된 문서의 텍스트를 추출하여 검색이 문서 내부의 단어를 찾을 수 있도록 합니다. 이 기능을 원하시면 직접 설치해 주세요.
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 이상이 필요합니다. psql --version로 배포판의 PostgreSQL 버전을 확인하세요. 버전이 낮으면 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에서 비밀번호 인증 연결을 허용해야 합니다. pg_hba.conf 파일의 host 줄에 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를 열거나, 리버스 프록시가 설정된 경우 도메인을 열기( 도메인과 HTTPS 참고) 바로 첫 계정을 생성하세요. 이 계정은 시스템 관리자가 됩니다. 대신 명령줄에서 생성하려면 첫 관리자 생성의 amctl 명령을 사용하며, docker compose exec antimatter amctl --local 대신 sudo -u 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를 다시 시작하거나, 시스템 콘솔 › 플러그인 › GIF에서 API 키로 입력하세요. GIF 서비스가 다른 서버에서 실행되는 경우 AM_GIFS_SERVICE_URL을 해당 주소로 설정하세요. 사람들이 자신의 GIF와 스티커를 추가할 수 있도록 하려면 GIF를 참고하세요.
서비스
- 서비스는
antimatter사용자로/opt/antimatter에서 실행되며,/etc/antimatter/antimatter.env를 읽습니다. systemd는 서버가 종료될 때마다 다시 시작하며, 새 버전의 데이터베이스 마이그레이션이 오래 걸릴 수 있으므로 최대 1시간까지 시작을 허용합니다. - 로그는 저널에 있습니다:
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 앱이 포함되지 않습니다. 각 앱은 자체 릴리스에서 설치하세요:
| 앱 | 릴리스 | 앱 ID |
|---|---|---|
| 칸반 | 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 패키지가 없는 배포판이나 사용자 정의 레이아웃에 적합합니다. 여기에는 bin/antimatter, bin/amctl, config/config.json, 웹 앱(client/ 및 client-fusion/), 번들된 앱(prepackaged_plugins/, 위 참고), 이메일 템플릿 및 번역 파일이 포함된 단일 antimatter/ 디렉터리가 들어 있습니다.
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. 서비스로 실행
/etc/systemd/system/antimatter.service에 systemd 유닛을 추가하세요:
[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에 기록(루트만 읽을 수 있도록)한 다음:
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 서비스(아래 참고)를 설치하고 패키지의 5단계와 같이 AM_GIFS_SERVICE_URL 및 AM_GIFS_API_KEY를 설정합니다.
GIF 서비스 및 푸시 프록시 패키지
GIF 서비스와 푸시 프록시는 서버와 동일한 규칙을 따르는 자체 릴리스를 제공합니다. .tar.gz 아카이브, amd64 및 arm64용 .deb와 .rpm 패키지, 그리고 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가 다른 위치에 실행되는 경우, gifs-server.env에서 AM_GIFS_LISTEN=:8080를 설정하고 방화벽으로 해당 포트에 대한 접근을 제한해야 합니다. 이 파일에는 다른 설정도 나열되어 있습니다: AM_GIFS_UPLOAD_KEYS(GIF와 스티커를 추가하고, 해당 키로 추가된 항목을 삭제할 수 있는 권한이 있는 키), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY, AM_GIFS_LOG_LEVEL. 이 패키지는 ffmpeg, gifsicle, librsvg2-bin(.rpm의 경우 librsvg2-tools) 및 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를 읽습니다(업그레이드 시 유지됨). 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"입니다. 그런 다음 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:// URL로 설정). |
antimatter db migrate | 서버를 시작하지 않고 데이터베이스 마이그레이션을 적용합니다. |
antimatter db version | 데이터베이스에 마지막으로 적용된 마이그레이션을 출력합니다. |
antimatter import bulk, antimatter export bulk | 벌크 형식으로 데이터를 가져오기 또는 내보내기합니다(백업 및 업그레이드 참고). |