Chat · kein KYC
Matrix (Synapse) hosten auf einem Offshore-VPS
Betreiben Sie Ihren eigenen Matrix-Homeserver auf einem Offshore-VPS ohne KYC und behalten Sie die Schlüssel zu Ihrem eigenen Ende-zu-Ende-verschlüsselten, föderierten Chat-Netzwerk selbst in der Hand.
Was es ist
Synapse ist die Referenz-Serverimplementierung von Matrix, einem offenen Protokoll für dezentralen, Ende-zu-Ende-verschlüsselten Echtzeit-Chat, Sprach- und Videokommunikation. Wenn Sie Synapse selbst hosten, erhalten Sie Ihren eigenen Homeserver, der mit dem größeren Matrix-Netzwerk föderieren oder vollständig privat bleiben kann – jede Nachricht, jede Mediendatei und jedes Konto liegt auf Hardware, die Sie selbst kontrollieren.
Warum offshore hosten
Chat-Metadaten (wer mit wem spricht, wann und von wo) sind genau die Art von Daten, die zentralisierte Plattformen und ihre Standort-Jurisdiktionen protokollieren und herausgeben. Auf einem mit Krypto bezahlten Offshore-VPS ohne KYC ist der Homeserver, der die Nachrichten und Verschlüsselungsschlüssel Ihrer Community verwaltet, an keine reale Identität gebunden und befindet sich in einer datenschutzfreundlichen Jurisdiktion außerhalb der Reichweite Ihres Heimatlandes.
Das Deployment
Ein funktionierendes Referenz-Setup
Kopieren Sie dies auf eine neue ChainVPS-Instanz. Ersetzen Sie die Platzhalter und starten Sie sie anschließend.
# ── 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
Firewall
Zu öffnende Ports
| Port | Protokoll | Zweck |
|---|---|---|
| 443 | TCP | HTTPS-Reverse-Proxy: Element-/Client-API + /.well-known-Föderationsdelegation (der einzige Port, der aus dem Internet erreichbar sein muss) |
| 8008 | TCP | Synapse-HTTP-Listener für Client und Föderation — nur an 127.0.0.1 gebunden, TLS wird vom Proxy übernommen |
| 8448 | TCP | Optionaler direkter Föderationsport; nur nötig, wenn Sie KEINE .well-known-Delegation verwenden (erfordert eigenes TLS) |
| 5432 | TCP | PostgreSQL — nur internes Docker-Netzwerk, niemals am Host oder im Internet veröffentlichen |
Richtige Dimensionierung
Welchen Plan Sie brauchen
VPS Nano / Small (2 vCPU, 2-4 GB RAM)
Privater oder familiärer Server mit unter ca. 10 Nutzern, wenig oder keine Föderation. Synapse ist speicherhungrig — 2 GB sind das realistische Minimum, 4 GB, wenn Sie größeren öffentlichen Räumen beitreten.
VPS Pro (4 vCPU, 8 GB RAM)
Kleine Community mit einigen Dutzend bis niedrigen Hunderten Nutzern mit aktiver Föderation. Synapse-Caches und Postgres shared_buffers entsprechend anpassen; SSD-Speicher ist für Medien und Datenbank wichtig.
Dedicated (8+ cores, 16-32 GB RAM)
Hunderte bis Tausende Nutzer oder Mitgliedschaft in sehr großen föderierten Räumen. Synapse in Worker aufteilen (Federation Sender, Sync, Media) und Postgres separat tunen; unbegrenzte Bandbreite hält Medien-/Föderationstraffic ohne Deckelung.
Beste Standorte: Wählen Sie für einen Kommunikationsserver einen Standort der Privacy-Tier-Kategorie: Die Schweiz und Island bieten starke Datenschutz-Jurisdiktionen und sind ein natürlicher Standort für einen Homeserver, der Nachrichten-Metadaten und Schlüssel verwaltet, während die Niederlande und Luxemburg latenzarme, gut angebundene Routen nach Europa für einen reibungsloseren Echtzeit-Chat und Anrufe bieten. Da Matrix in Echtzeit arbeitet, wählen Sie die Privacy-Tier-Region, die Ihren Kernnutzern am nächsten liegt; unbegrenzte Bandbreite und inkludierter DDoS-Schutz sind wichtig, da ein föderierter, öffentlich erreichbarer Homeserver ein ständiges Ziel ist.
Sichern Sie es ab
Hardening-Checkliste
- Offene Registrierung deaktivieren: enable_registration: false setzen oder Anmeldungen über registration_requires_token mit individuellen Einladungs-Tokens absichern — ein offener Matrix-Server wird innerhalb weniger Tage gefunden und mit Spam-Bots geflutet.
- Föderation kontrollieren: /.well-known/matrix/server-Delegation verwenden, damit Ihr server_name sauber bleibt (@user:example.com), und bei einem privaten Server federation_domain_whitelist setzen (oder Föderation komplett deaktivieren), damit unbekannte Server Sie nicht erreichen können.
- URL-Vorschauen und Medien absichern: url_preview_enabled lädt serverseitig beliebige URLs (SSRF-Risiko) — die Standard-url_preview_ip_range_blacklist für private Adressbereiche beibehalten, max_upload_size begrenzen und regelmäßig eine Medien-Aufbewahrung/-Bereinigung durchführen, da der Medienspeicher unbegrenzt wächst.
- Rate-Limits hinter dem Proxy verschärfen: x_forwarded: true am 8008-Listener setzen, damit Synapse die echten Client-IPs sieht, und anschließend rc_login, rc_registration und rc_message anpassen, um Brute-Force und Missbrauch abzuschwächen; der DDoS-Schutz von ChainVPS deckt darunter die L3/4-Ebene ab.
- Postgres und den Signaturschlüssel sichern: regelmäßig ein DB-Dump erstellen und synapse-data/*.signing.key extern kopieren — der Verlust des Signaturschlüssels bedeutet, dass Ihre Serveridentität und das gesamte Föderationsvertrauen unwiederbringlich verloren sind.
- Aktuell halten: den ghcr.io/element-hq/synapse-Tag festlegen und regelmäßig aktualisieren, report_stats: no beibehalten und Port 8008 oder 5432 niemals im Internet veröffentlichen — nur 443 (und optional 8448) sollten erreichbar sein.
Bereitstellen auf
Das richtige ChainVPS-Produkt
Fragen
Hosting Matrix (Synapse) — FAQ
Brauche ich eine eigene Domain?
Ja. Matrix-Nutzer-IDs und Föderation sind an eine Domain gebunden (z. B. @you:example.com). Sie benötigen eine Domain mit DNS unter Ihrer Kontrolle, um auf den VPS zu zeigen und die /.well-known-Föderationseinträge auszuliefern. Die Domain kann über einen datenschutzfreundlichen Registrar registriert werden; der Server selbst bleibt ohne KYC.
Kann ich Synapse vollständig privat betreiben, ganz ohne Föderation?
Ja. Setzen Sie eine leere federation_domain_whitelist oder lassen Sie den Föderations-Listener weg, damit Ihr Homeserver nie mit dem öffentlichen Matrix-Netzwerk kommuniziert. Ihre Nutzer erhalten trotzdem vollständig Ende-zu-Ende-verschlüsselten Chat, Sprach- und Videokommunikation untereinander, komplett auf Ihrem Offshore-Server.
Warum PostgreSQL statt der Standardeinstellung SQLite?
Synapse wird nur zum schnellen Testen mit SQLite ausgeliefert. Es kann keine Nebenläufigkeit oder Föderationslast bewältigen und lässt sich nicht mit Workern skalieren. Jede reale Bereitstellung muss PostgreSQL mit C-Locale verwenden (die obige Compose-Datei erledigt das für Sie); eine spätere Migration ist schmerzhaft, also gleich mit Postgres starten.
Wie viel RAM benötigt Synapse wirklich?
Mehr, als man erwarten würde. Ein ruhiger Server für einen einzelnen Nutzer kommt mit ~1,5-2 GB aus, doch sobald Sie großen föderierten Räumen beitreten, lassen Pro-Raum-Caches den Speicherbedarf explodieren. Planen Sie 4 GB für eine kleine Community ein und skalieren Sie die Caches (caches: global_factor) passend zu Ihrem RAM, statt sie unkontrolliert wachsen zu lassen.
Welchen Client installieren meine Nutzer?
Element (Web, Desktop, iOS, Android) ist der Standard-Matrix-Client und verbindet sich mit Ihrem Homeserver durch Eingabe seiner URL. Der /.well-known/matrix/client-Eintrag, den Sie auf 443 ausliefern, ermöglicht es Element, Ihren Server allein anhand der Matrix-ID eines Nutzers automatisch zu erkennen.
Beeinträchtigt Offshore-Hosting die Föderation oder die Anrufqualität?
Nein. Föderation funktioniert unabhängig vom Standort über Standard-HTTPS, und der inkludierte DDoS-Schutz hält den öffentlich erreichbaren Server stabil. Für Echtzeit-Sprache und -Video wählen Sie die Privacy-Tier-Region, die Ihren Nutzern am nächsten liegt, um die Latenz zu minimieren; die Niederlande und Luxemburg sind für europäischen Traffic gut angebunden.
Mehr zum Selbst-Hosten
Weitere One-Click-Stacks
Bereitstellen Matrix (Synapse)
in den nächsten 60 Sekunden.
Unlimitierte Bandbreite · DDoS inklusive · 21 Kryptowährungen · Kein KYC.