Matrix는 개방형 채팅 네트워크입니다. 자체 Matrix 홈서버를 운영하면 메시지와 계정이 내 서버에 있으면서도 다른 Matrix 서버의 사용자와 계속 대화할 수 있습니다. 이 가이드는 참조 홈서버인 Synapse를 Docker와 PostgreSQL로 HTTPS 뒤에 설치합니다.
먼저 알아둘 점
- 페더레이션. 서버가 다른 서버와 통신할 수 있으므로, 참여한 방을 저장하는 데 대역폭과 디스크를 사용합니다. 소규모 비공개 서버는 부담이 적지만, 매우 큰 공개 방에 참여하면 그렇지 않습니다.
- 사양. 소규모 그룹에는 2 vCPU와 4 GB RAM이면 적합합니다. Matrix 서버 호스팅을 참고하세요.
- 도메인. 도메인이 필요합니다. 서버 이름(예:
example.com)은 모든 사용자 ID의 일부이며 나중에 바꿀 수 없습니다.
1단계: 설정 생성
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
2단계: PostgreSQL로 전환
SQLite가 기본값이지만 테스트 이상의 용도에는 PostgreSQL이 더 낫습니다. data/homeserver.yaml을 편집해 database 블록을 교체하세요.
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
3단계: Compose 파일
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
4단계: HTTPS와 페더레이션
Synapse를 matrix.example.com에서 제공하고, 서버 이름이 example.com으로 유지되도록 위임 파일을 게시하세요.
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
DNS가 적용되면 Matrix Federation Tester로 페더레이션을 테스트하세요.
5단계: 사용자 생성 및 가입 잠금
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
공개 가입을 원하지 않는다면 enable_registration을 false로 homeserver.yaml에서 유지하세요.
클라이언트와 관리
Element 또는 아무 Matrix 클라이언트를 사용해 서버 이름으로 로그인하세요. data 폴더와 Postgres 데이터를 백업하고 Synapse를 최신 상태로 유지하세요. 먼저 서버 보안 강화를 읽어 보세요.