Chat · tanpa KYC
Host Matrix (Synapse) di VPS Offshore
Jalankan homeserver Matrix Anda sendiri di VPS offshore tanpa KYC dan pegang sendiri kunci jaringan chat terfederasi yang terenkripsi end-to-end milik Anda.
Apa itu
Synapse adalah implementasi server referensi dari Matrix, sebuah protokol terbuka untuk chat, suara, dan video real-time yang terdesentralisasi dan terenkripsi end-to-end. Meng-host Synapse sendiri memberi Anda homeserver sendiri yang bisa berfederasi dengan jaringan Matrix yang lebih luas atau tetap sepenuhnya privat, dengan setiap pesan, file media, dan akun berada di hardware yang Anda kendalikan sendiri.
Mengapa hosting di offshore
Metadata chat (siapa berbicara dengan siapa, kapan, dan dari mana) adalah jenis data yang persis dicatat dan diserahkan oleh platform tersentralisasi dan yurisdiksi tempat mereka berada. Di VPS offshore tanpa KYC yang dibayar pakai kripto, homeserver yang menyimpan pesan dan kunci enkripsi komunitas Anda tidak terdaftar atas identitas dunia nyata mana pun dan berada di yurisdiksi ramah privasi di luar jangkauan negara asal Anda.
Proses deploy
Contoh setup referensi yang berfungsi
Salin ini ke instance ChainVPS baru. Ganti placeholder-nya, lalu jalankan.
# ── Pengaturan sekali jalan, jalankan berurutan di Ubuntu 24.04 (Docker + compose-plugin sudah terpasang) ──
#
# 1. Buat konfigurasi Synapse (ganti matrix.example.com dengan domain asli Anda):
# 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. Di synapse-data/homeserver.yaml, GANTI blok `database:` sqlite yang
# dihasilkan dengan blok postgres yang ditampilkan di bagian bawah file ini,
# dan tambahkan `x_forwarded: true` di bawah listener port 8008 (Anda berada di belakang proxy).
#
# 3. Jalankan stack-nya: docker compose up -d
#
# 4. Buat pengguna admin Anda:
# docker compose exec synapse register_new_matrix_user \
# -u admin -a -c /data/homeserver.yaml http://localhost:8008
#
# 5. Pasang reverse proxy TLS (Caddy/nginx) di 443 -> 127.0.0.1:8008 dan sajikan
# /.well-known/matrix/server + /.well-known/matrix/client untuk federasi.
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME_STRONG_DB_PASSWORD
POSTGRES_DB: synapse
# Synapse MEWAJIBKAN DB menggunakan locale C — ini persyaratan mutlak:
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:
# HTTP untuk client + federasi. Terikat ke localhost — TLS diterminasi oleh
# reverse proxy Anda. Jangan pernah expose 8008 ke internet tanpa enkripsi.
- "127.0.0.1:8008:8008"
# ── Tempelkan ini ke synapse-data/homeserver.yaml, menggantikan blok sqlite ──
# database:
# name: psycopg2
# args:
# user: synapse
# password: CHANGE_ME_STRONG_DB_PASSWORD
# dbname: synapse
# host: db
# port: 5432
# cp_min: 5
# cp_max: 10
Firewall
Port yang perlu dibuka
| Port | Protokol | Tujuan |
|---|---|---|
| 443 | TCP | Reverse proxy HTTPS: API Element/client + delegasi federasi /.well-known (satu-satunya port yang wajib terjangkau dari internet) |
| 8008 | TCP | Listener HTTP client+federasi Synapse — hanya terikat ke 127.0.0.1, TLS ditangani oleh proxy |
| 8448 | TCP | Port federasi langsung opsional; hanya diperlukan jika Anda TIDAK menggunakan delegasi .well-known (memerlukan TLS sendiri) |
| 5432 | TCP | PostgreSQL — hanya untuk jaringan Docker internal, jangan pernah dipublikasikan ke host atau internet |
Penyesuaian ukuran yang tepat
Paket mana yang Anda butuhkan
VPS Nano / Small (2 vCPU, 2-4 GB RAM)
Server pribadi atau keluarga, di bawah ~10 pengguna, federasi sedikit atau tidak ada. Synapse cukup rakus memori — 2 GB adalah batas minimum realistis, 4 GB jika Anda bergabung dengan room publik yang besar.
VPS Pro (4 vCPU, 8 GB RAM)
Komunitas kecil puluhan hingga ratusan pengguna dengan federasi aktif. Sesuaikan cache Synapse dan shared_buffers Postgres; penyimpanan SSD penting untuk media dan database.
Dedicated (8+ core, 16-32 GB RAM)
Ratusan hingga ribuan pengguna atau keanggotaan di room federasi yang sangat besar. Pecah Synapse menjadi worker (federation sender, sync, media) dan beri Postgres tuning tersendiri; bandwidth unmetered menjaga traffic media/federasi tetap tanpa batas.
Lokasi terbaik: Pilih lokasi kelas privasi untuk server komunikasi: Swiss dan Islandia menawarkan yurisdiksi perlindungan data yang kuat dan menjadi rumah alami bagi homeserver yang menyimpan metadata pesan dan kunci, sementara Belanda dan Luksemburg memberi rute berlatensi rendah dan terkoneksi baik ke Eropa untuk chat dan panggilan suara real-time yang lebih lancar. Karena Matrix bersifat real-time, pilih wilayah kelas privasi yang paling dekat dengan pengguna inti Anda; bandwidth unmetered dan proteksi DDoS yang disertakan penting karena homeserver terfederasi yang menghadap internet adalah target tetap.
Amankan sekarang
Daftar periksa hardening
- Nonaktifkan registrasi terbuka: atur enable_registration: false, atau kunci pendaftaran di balik registration_requires_token dengan token undangan per pengguna — server Matrix yang terbuka akan ditemukan dan dibanjiri bot spam dalam hitungan hari.
- Kontrol federasi: gunakan delegasi /.well-known/matrix/server agar server_name Anda tetap bersih (@user:example.com), dan jika server bersifat privat, atur federation_domain_whitelist (atau nonaktifkan federasi sepenuhnya) untuk mencegah server tak dikenal menjangkau Anda.
- Kunci pratinjau URL dan media: url_preview_enabled menarik URL sembarang di sisi server (risiko SSRF) — pertahankan url_preview_ip_range_blacklist default untuk rentang privat, batasi max_upload_size, dan jalankan retensi/pembersihan media secara berkala karena penyimpanan media terus bertambah tanpa batas.
- Perketat rate limit di balik proxy: atur x_forwarded: true pada listener 8008 agar Synapse melihat IP client yang sebenarnya, lalu sesuaikan rc_login, rc_registration, dan rc_message untuk menumpulkan brute-force dan penyalahgunaan; proteksi DDoS ChainVPS mencakup lapisan L3/4 di bawahnya.
- Backup Postgres dan signing key: dump database secara rutin dan salin synapse-data/*.signing.key ke tempat lain — kehilangan signing key berarti identitas server Anda dan seluruh kepercayaan federasi hilang permanen.
- Selalu perbarui: pin dan rutin naikkan tag ghcr.io/element-hq/synapse, pertahankan report_stats: no, dan jangan pernah publikasikan port 8008 atau 5432 ke internet — hanya 443 (dan opsional 8448) yang boleh terjangkau.
Pertanyaan
Hosting Matrix (Synapse) — FAQ
Apakah saya perlu domain sendiri?
Ya. ID pengguna Matrix dan federasi terikat pada domain (misalnya @you:example.com). Anda memerlukan domain dengan DNS yang Anda kendalikan untuk mengarah ke VPS dan menyajikan record federasi /.well-known. Domain bisa didaftarkan lewat registrar yang menghormati privasi; servernya sendiri tetap tanpa KYC.
Bisakah saya menjalankan Synapse sepenuhnya privat, tanpa federasi sama sekali?
Bisa. Atur federation_domain_whitelist kosong atau hilangkan listener federasi agar homeserver Anda tidak pernah berkomunikasi dengan jaringan Matrix publik. Pengguna Anda tetap mendapat chat, suara, dan video terenkripsi end-to-end sepenuhnya antar sesama mereka, seluruhnya di server offshore Anda.
Mengapa PostgreSQL, bukan SQLite yang jadi default?
Synapse dilengkapi SQLite hanya untuk pengujian cepat. SQLite tidak menangani konkurensi atau beban federasi dan tidak bisa diskalakan dengan worker. Setiap deployment nyata harus menggunakan PostgreSQL yang dibuat dengan locale C (compose file di atas sudah melakukannya untuk Anda); migrasi belakangan menyakitkan, jadi mulailah langsung dengan Postgres.
Berapa banyak RAM yang benar-benar dibutuhkan Synapse?
Lebih banyak dari yang orang kira. Server sepi untuk satu pengguna muat dalam ~1,5-2 GB, tetapi begitu Anda bergabung dengan room federasi besar, cache per-room membengkak dan menggelembungkan penggunaan memori. Anggarkan 4 GB untuk komunitas kecil dan skalakan cache (caches: global_factor) sesuai RAM Anda, alih-alih membiarkannya tumbuh tak terkendali.
Client mana yang harus dipasang pengguna saya?
Element (web, desktop, iOS, Android) adalah client Matrix standar dan terhubung ke homeserver Anda dengan memasukkan URL-nya. Record /.well-known/matrix/client yang Anda sajikan di 443 memungkinkan Element menemukan server Anda secara otomatis hanya dari ID Matrix pengguna.
Apakah hosting offshore mengganggu federasi atau kualitas panggilan?
Tidak. Federasi bekerja lewat HTTPS standar terlepas dari lokasi, dan proteksi DDoS yang disertakan menjaga server yang menghadap publik tetap stabil. Untuk suara/video real-time, pilih lokasi kelas privasi yang paling dekat dengan pengguna Anda untuk meminimalkan latensi; Belanda dan Luksemburg terkoneksi baik untuk traffic Eropa.
Lebih banyak untuk di-self-host
Stack one-click lainnya
Jalankan Matrix (Synapse)
dalam 60 detik ke depan.
Bandwidth unmetered · DDoS Termasuk · 21 mata uang kripto · Tanpa KYC.