모든 시스템 정상 작동 중 21 종 암호화폐 지원 · 모네로 환영 KYC 없음 정책
ChainVPS

채팅 · KYC 없음

Matrix (Synapse)를 해외 VPS에 호스팅

KYC 없는 해외 VPS에서 나만의 Matrix 홈서버를 운영하고, 종단간 암호화된 연합형 채팅 네트워크의 키를 직접 소유하세요.

설명

Synapse는 분산형, 종단간 암호화 실시간 채팅·음성·영상을 위한 개방형 프로토콜인 Matrix의 레퍼런스 서버 구현체입니다. Synapse를 셀프 호스팅하면 더 넓은 Matrix 네트워크와 연합(federate)하거나 완전히 비공개로 운영할 수 있는 나만의 홈서버를 갖게 되며, 모든 메시지·미디어 파일·계정이 직접 통제하는 하드웨어에 저장됩니다.

왜 해외에서 호스팅해야 할까요

채팅 메타데이터(누가, 언제, 어디서 누구와 대화했는지)는 중앙화된 플랫폼과 그 서버가 위치한 관할권이 정확히 기록하고 넘겨주는 유형의 데이터입니다. 암호화폐로 결제하는 KYC 없는 해외 VPS에서는, 커뮤니티의 메시지와 암호화 키를 보관하는 홈서버가 어떤 실제 신원에도 등록되지 않으며, 본국의 손이 닿지 않는 프라이버시 친화적 관할권에 위치합니다.

배포

실제로 작동하는 참고 설정

이 내용을 새 ChainVPS 인스턴스에 붙여넣으세요. 자리표시자를 실제 값으로 교체한 뒤 실행하세요.

docker-compose.yml
# ── One-time setup, run in order on Ubuntu 24.04 (Docker + compose-plugin installed) ──
#
# 1. Generate Synapse's config (replace matrix.example.com with your real domain):
#    mkdir -p synapse-data pgdata
#    docker run --rm -v "$(pwd)/synapse-data:/data" \
#      -e SYNAPSE_SERVER_NAME=matrix.example.com \
#      -e SYNAPSE_REPORT_STATS=no \
#      ghcr.io/element-hq/synapse:latest generate
#
# 2. In synapse-data/homeserver.yaml, REPLACE the generated sqlite `database:`
#    block with the postgres block shown at the bottom of this file, and add
#    `x_forwarded: true` under the port-8008 listener (you are behind a proxy).
#
# 3. Bring the stack up:  docker compose up -d
#
# 4. Create your admin user:
#    docker compose exec synapse register_new_matrix_user \
#      -u admin -a -c /data/homeserver.yaml http://localhost:8008
#
# 5. Put a TLS reverse proxy (Caddy/nginx) on 443 -> 127.0.0.1:8008 and serve
#    /.well-known/matrix/server + /.well-known/matrix/client for federation.

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: CHANGE_ME_STRONG_DB_PASSWORD
      POSTGRES_DB: synapse
      # Synapse REQUIRES the DB to use C locale — this is a hard requirement:
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse"]
      interval: 10s
      timeout: 5s
      retries: 5

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: matrix.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./synapse-data:/data
    ports:
      # Client + federation HTTP. Bound to localhost — TLS is terminated by
      # your reverse proxy. Never expose 8008 to the internet in the clear.
      - "127.0.0.1:8008:8008"

# ── Paste this into synapse-data/homeserver.yaml, replacing the sqlite block ──
# database:
#   name: psycopg2
#   args:
#     user: synapse
#     password: CHANGE_ME_STRONG_DB_PASSWORD
#     dbname: synapse
#     host: db
#     port: 5432
#     cp_min: 5
#     cp_max: 10

방화벽

열어야 할 포트

포트프로토콜용도
443TCPHTTPS 리버스 프록시: Element/클라이언트 API + /.well-known 연합(federation) 위임 (인터넷에 노출되어야 하는 유일한 포트)
8008TCPSynapse 클라이언트+연합(federation) HTTP 리스너 — 127.0.0.1에만 바인딩, TLS는 프록시에서 처리
8448TCP선택적 직접 연합(federation) 포트; .well-known 위임을 사용하지 않는 경우에만 필요 (자체 TLS 필요)
5432TCPPostgreSQL — 내부 Docker 네트워크 전용, 호스트나 인터넷에 절대 노출하지 말 것

적정 규모 산정

필요한 요금제

경량

VPS Nano / Small (2 vCPU, 2-4 GB RAM)

개인 또는 가족용 서버로, 사용자 약 10명 미만이며 연합(federation)이 거의 또는 전혀 없는 경우. Synapse는 메모리를 많이 사용합니다 — 현실적인 최소치는 2GB이며, 대규모 공개 방에 참여한다면 4GB가 필요합니다.

중간

VPS Pro (4 vCPU, 8 GB RAM)

수십 명에서 수백 명 초반대의 사용자를 보유하고 활발히 연합(federation)하는 소규모 커뮤니티. Synapse 캐시와 Postgres shared_buffers를 튜닝하세요; 미디어와 DB에는 SSD 스토리지가 중요합니다.

대규모

Dedicated (8+ cores, 16-32 GB RAM)

수백에서 수천 명의 사용자, 또는 매우 큰 연합 방(room)에 참여하는 경우. Synapse를 워커(연합 발신, 동기화, 미디어)로 분리하고 Postgres도 별도로 튜닝하세요; 무제한 트래픽 덕분에 미디어/연합 트래픽에 제한이 없습니다.

추천 로케이션: 커뮤니케이션 서버에는 프라이버시 등급이 높은 위치를 선택하세요: 스위스와 아이슬란드는 강력한 데이터 보호 관할권을 제공하여 메시지 메타데이터와 키를 보관하는 홈서버에 자연스러운 위치이며, 네덜란드와 룩셈부르크는 유럽으로의 저지연·우수한 피어링 경로를 제공해 더 원활한 실시간 채팅과 음성 통화를 지원합니다. Matrix는 실시간 서비스이므로 핵심 사용자와 가장 가까운 프라이버시 등급 지역을 선택하세요; 연합되고 인터넷에 노출된 홈서버는 상시 공격 대상이 되므로 무제한 트래픽과 기본 제공되는 디도스(DDoS) 방어가 중요합니다.

보안을 강화하세요

보안 강화 체크리스트

  • 공개 회원가입 비활성화: enable_registration: false로 설정하거나, 초대별 토큰을 사용하는 registration_requires_token으로 가입을 제한하세요 — 개방된 Matrix 서버는 며칠 안에 발견되어 스팸 봇에 의해 도배됩니다.
  • 연합(federation) 제어: /.well-known/matrix/server 위임을 사용해 server_name을 깔끔하게 유지하고(@user:example.com), 서버를 비공개로 운영한다면 federation_domain_whitelist를 설정하거나(또는 연합을 완전히 비활성화하여) 알 수 없는 서버가 접근하지 못하도록 하세요.
  • URL 미리보기와 미디어 제한: url_preview_enabled는 서버 측에서 임의의 URL을 가져옵니다(SSRF 위험) — 사설 대역용 기본 url_preview_ip_range_blacklist를 유지하고, max_upload_size를 제한하며, 미디어 저장 공간이 무한정 늘어나므로 주기적으로 미디어 보존/삭제를 실행하세요.
  • 프록시 뒤에서 속도 제한 강화: 8008 리스너에 x_forwarded: true를 설정해 Synapse가 실제 클라이언트 IP를 인식하도록 한 다음, rc_login, rc_registration, rc_message를 조정하여 브루트포스와 남용을 완화하세요; 그 아래 L3/4 계층은 ChainVPS의 디도스(DDoS) 방어가 담당합니다.
  • Postgres와 서명 키 백업: DB를 정기적으로 덤프하고 synapse-data/*.signing.key를 외부에 복사해 두세요 — 서명 키를 분실하면 서버 아이덴티티와 모든 연합 신뢰가 영구적으로 사라집니다.
  • 최신 상태 유지: ghcr.io/element-hq/synapse 태그를 고정하고 정기적으로 업데이트하며, report_stats: no를 유지하고, 8008이나 5432 포트를 절대 인터넷에 공개하지 마세요 — 443(및 선택적으로 8448)만 접근 가능해야 합니다.

질문

호스팅 Matrix (Synapse) — FAQ

도메인이 꼭 필요한가요?

네. Matrix 사용자 ID와 연합(federation)은 도메인에 연결됩니다(예: @you:example.com). VPS를 가리키고 /.well-known 연합 레코드를 제공하려면 직접 관리하는 DNS를 가진 도메인이 필요합니다. 도메인은 프라이버시를 존중하는 등록기관을 통해 등록할 수 있으며, 서버 자체는 KYC 없이 유지됩니다.

Synapse를 연합 없이 완전히 비공개로 운영할 수 있나요?

네. federation_domain_whitelist를 비워두거나 연합 리스너를 생략하면 홈서버가 공개 Matrix 네트워크와 전혀 통신하지 않습니다. 사용자들은 여전히 완전한 종단간 암호화 채팅·음성·영상을 서로 주고받을 수 있으며, 모든 것이 해외 서버 안에서 이루어집니다.

기본값인 SQLite 대신 왜 PostgreSQL을 사용해야 하나요?

Synapse는 빠른 테스트용으로만 SQLite를 기본 제공합니다. 동시성이나 연합 부하를 처리하지 못하며 워커로 확장할 수도 없습니다. 실제 운영 환경에서는 반드시 C 로케일로 생성한 PostgreSQL을 사용해야 하며(위 compose 파일이 이를 자동으로 처리합니다), 나중에 마이그레이션하는 것은 매우 번거로우므로 처음부터 Postgres로 시작하세요.

Synapse에는 실제로 RAM이 얼마나 필요한가요?

사람들이 예상하는 것보다 많습니다. 조용한 단일 사용자 서버는 약 1.5-2GB로 충분하지만, 대규모 연합 방에 참여하는 순간 방별 캐시가 메모리를 급격히 늘립니다. 소규모 커뮤니티라면 4GB를 예산으로 잡고, 캐시(caches: global_factor)를 방치해 무한정 늘어나게 두지 말고 보유한 RAM에 맞게 조정하세요.

사용자들은 어떤 클라이언트를 설치해야 하나요?

Element(웹, 데스크톱, iOS, Android)는 표준 Matrix 클라이언트로, URL을 입력하는 것만으로 홈서버에 연결됩니다. 443에서 제공하는 /.well-known/matrix/client 레코드 덕분에 Element는 사용자의 Matrix ID만으로도 서버를 자동으로 찾을 수 있습니다.

해외 호스팅이 연합이나 통화 품질에 영향을 미치나요?

아니요. 연합(federation)은 위치와 관계없이 표준 HTTPS로 작동하며, 기본 제공되는 디도스(DDoS) 방어가 공개된 서버를 안정적으로 유지해줍니다. 실시간 음성/영상을 위해서는 지연 시간을 최소화하도록 사용자와 가장 가까운 프라이버시 등급 지역을 선택하세요; 네덜란드와 룩셈부르크는 유럽 트래픽에 대해 우수한 피어링을 제공합니다.

생성하기 Matrix (Synapse)
60초 안에 배포하세요.

무제한 트래픽 · 디도스 방어 포함 · 21종 암호화폐 · KYC 없음.