Matrix – Element
1. Co je Matrix & Element (Princip sítě)
Matrix není samostatná aplikace, ale otevřený, decentralizovaný a šifrovaný komunikační protokol. Funguje na velmi podobném principu jako e-mail nebo síť Mastodon.
- Decentralizace a federace: Neexistuje žádné jedno datové centrum, které by vlastnilo tvá data. Každý si může spustit svůj vlastní server (tzv. Homeserver), který plně ovládá. Tyto servery spolu umí komunikovat (federovat) – uživatel ze serveru
abc.czsi může napřímo psát s uživatelem ze serverumatrix.orgnebo z jakéhokoli jiného nezávislého serveru na světě. - Sdílená realita v místnostech: Pokud je v chatovací místnosti přítomno více lidí z různých serverů, historie zpráv a šifrovací klíče se replikují (synchronizují) napříč všemi těmito servery současně. Pokud jeden server vypadne, místnost žije dál na ostatních.
- Oddělení backendu a frontendu: Matrix představuje „neviditelný“ motor na pozadí (v našem případě softwarový server Synapse). Element (případně nová generace Element X) je pak pouze grafická aplikace (klient), kterou si uživatel stáhne do mobilu nebo otevře v prohlížeči, aby se k tomuto motoru připojil.
2. Manuál pro nasazení Matrix (Synapse + Coturn) na Synology přes Dockhand
Aby v aplikaci Element X spolehlivě fungovala registrace pomocí tokenů a audio/video hovory i mimo domov (přes mobilní data operátorů), je nutné vedle samotného Matrix serveru (Synapse) nasadit také Coturn (TURN/STUN server), který funguje jako síťový prostředník pro obcházení firewallů a NATů.
Krok 1: Struktura složek na Synology NAS
Vytvoř v souborovém manažeru (File Station), nebo přes FTP (Total Commander…) následující adresářovou strukturu:
/volume1/docker/matrix//volume1/docker/matrix/data/(Zde si Synapse vygeneruje konfiguraci)
Pokud chceš jistotu, přihlas se přes ssh do NASu a použij:
# 1. Vytvoření kompletní struktury složek najednou (parametr -p vytvoří i podadresáře)
mkdir -p /volume1/docker/matrix/data
# 2. Nastavení plných přístupových práv pro celou složku matrix a její podsložky
chmod -R 777 /volume1/docker/matrix/
# 3. Kontrola, zda se složky správně vytvořily a jaká mají práva
ls -la /volume1/docker/matrix/Krok 2: Konfigurace Coturnu (coturn.conf)
Vytvoř textový soubor v umístění /volume1/docker/matrix/coturn.conf a vlož do něj toto nastavení:
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
# Zabezpečení sdíleným klíčem (vymysli si vlastní dlouhý náhodný řetězec)
use-auth-secret
static-auth-secret=TVUJ_TAJNY_DLOUHY_RETEZEC_KLIC
realm=abc.cz
# Rozsah portů pro samotný přenos audio/video streamů
min-port=49152
max-port=49172
total-quota=100
bps-capacity=0
stale-nonce=600
no-multicast-peers
Pokud preferuješ ssh…
cat << 'EOF' > /volume1/docker/matrix/coturn.conf
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
# Zabezpečení sdíleným klíčem
use-auth-secret
static-auth-secret=TVUJ_TAJNY_DLOUHY_RETEZEC_KLIC
realm=abc.cz
# Rozsah portů pro samotný přenos audio/video streamů
min-port=49152
max-port=49172
total-quota=100
bps-capacity=0
stale-nonce=600
no-multicast-peers
EOFPro jistotu ještě ověř práva
chmod 644 /volume1/docker/matrix/coturn.confKrok 3: Kompletní docker-compose.yml pro Dockhand
V rozhraní Dockhand (nebo Container Manageru) vytvoř projekt s tímto složením služeb. Zabezpečuje správný start a provázání kontejnerů.
version: '3.8'
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: matrix_synapse
restart: unless-stopped
ports:
- "8008:8008" # Port pro reverzní proxy (Client-Server API)
volumes:
- /volume1/docker/matrix/data:/data
environment:
- SYNAPSE_REPORT_STATS=no
coturn:
image: coturn/coturn:latest
container_name: matrix_coturn
restart: unless-stopped
ports:
- "3478:3478/udp"
- "3478:3478/tcp"
- "49152-49172:49152-49172/udp"
volumes:
- /volume1/docker/matrix/coturn.conf:/etc/coturn/turnserver.conf:ro
Krok 4: Úprava homeserver.yaml pro aktivaci hovorů
Jakmile projekt poprvé nastartuješ, Synapse si ve složce /volume1/docker/matrix/data/ vygeneruje svůj hlavní konfigurační soubor homeserver.yaml. Otevři ho a na jeho úplný konec doplň následující řádky, které propojí Matrix s Coturnem:
turn_uris:
- "turn:matrix.abc.cz:3478?transport=udp"
- "turn:matrix.abc.cz:3478?transport=tcp"
turn_shared_secret: "TVUJ_TAJNY_DLOUHY_RETEZEC_KLIC" # Musí být totožný s klíčem v coturn.conf
turn_user_lifetime: 86400000
Po uložení souboru kontejner matrix_synapse v Dockhandu restartuj.
Krok 5: Nastavení síťových prvků (Firewall & Router)
- Reverzní proxy na Synology: V nastavení Synology NAS nasměruj doménu
matrix.abc.cz(protokol HTTPS, port 443) na interní IP adresu NASu, port 8008 (HTTP). - Port Forwarding na routeru (UniFi): Pro funkční hovory odkudkoli ze světa musíte na hlavním routeru propustit a nasměrovat na lokální IP adresu Synology NASu tyto porty:
- 3478 (TCP i UDP)
- rozsah 49152 až 49172 (čistě UDP)
3. Spuštění a správa (Rozcestník vstupů a klientské aplikace)
Aby v systému nevznikal zmatek, je nutné striktně rozlišovat tři základní pilíře celého ekosystému, se kterými jako admin a uživatelé pracujete:
- Matrix Server (Backend): Běží na pozadí na adrese
https://matrix.abc.cz. Běžný uživatel na tuto adresu v prohlížeči nechodí, slouží pouze jako spojovací bod (Homeserver URL), který uživatelé zadávají do svých aplikací při přihlášení či registraci. - Matrix Admin (Správa): Webové grafické rozhraní (např. Synapse Admin, obvykle provozovaný na subdoméně
admin.abc.cz), kde ty jako administrátor spravuješ uživatele, mažeš místnosti a konfiguruješ role. Uživatelé k němu nemají přístup. - Element / Element X (Klientská aplikace): Uživatelské rozhraní. Buď tvůj self-hosted webový Element na
https://element.abc.cz, nebo mobilní/desktopové aplikace.
Podporované aplikace pro různé platformy:
- iOS (iPhone/iPad): Element X (nejnovější, extrémně rychlá verze, která však aktuálně postrádá možnost změny hesla přímo v aplikaci) nebo FluffyChat (uživatelsky přívětivější alternativa, která zvládá registraci s tokeny i změnu hesla interně).
- Android: Element X (oficiální) nebo FluffyChat (komunitní, vizuálně čistý, vhodný pro rodiny a komunity).
- Web & Desktop (PC/Mac): Oficiální webový Element (otevřený v prohlížeči), nebo moderní desktopový klient Cinny, který svým vzhledem věrně kopíruje Discord a je pro komunity přehlednější.
4. Architektonické porovnání: Centralizovaná vs. Decentralizovaná řešení
Pokud se při správě větší komunity ukáže, že technická komplexnost Matrixu (nutnost vysvětlovat uživatelům zadávání domovského serveru, chybějící správa hesel v Elementu X, nastavování TURN serverů) převyšuje přínosy federace, je rozumné zvážit přechod na centralizovaný self-hosted model.
V tomto uspořádání vlastníš server i data stále jen ty na svém hardware, ale síť je uzavřená, izolovaná a pro koncové uživatele maximálně jednoduchá.
Srovnávací tabulka platforem
| Vlastnost / Funkce | Matrix (Synapse + Element X) | VoceChat | Zulip |
| Architektura | Decentralizovaná / Federovaná (Propojená s celým světem) | Centralizovaná / Izolovaná (Soukromý ostrov jen pro tvou komunitu) | Centralizovaná / Izolovaná (Podnikový/komunitní uzavřený server) |
| Náročnost na hardware | Střední (Synapse vyžaduje optimální RAM a občasné čištění DB) | Extrémně nízká (Celý server má ~15 MB, minimální spotřeba RAM) | Vysoká (Enterprise řešení, vyžaduje PostgreSQL, Redis, RabbitMQ; min 1.5GB RAM) |
| Uživatelská přívětivost (UX) | Nízká (Zmatky kolem Homeserver URL, chybějící prvky v app) | Vysoká (Vzhled jako WhatsApp/Signal, vše funguje out-of-the-box) | Vysoká (Pokročilé řazení do témat a vláken, perfektní mobilní klienti) |
| Správa uživatelů a hesel | Složitá (Změna hesla v Elementu X chybí, nutno řešit přes web) | Banální (Registrace přes link, změna hesla přímo v mobilní app) | Kompletní (Plná správa profilů a hesel přímo z prostředí aplikace) |
| Hovory a Video zvenčí | Složité (Nutná instalace a konfigurace externího Coturn serveru) | Jednoduché (Nativní WebRTC, funguje automaticky přes HTTPS proxy) | Jednoduché (Možnost integrace Jitsi/Zoom na jedno kliknutí v adminu) |
| Vhodnost pro 80% jednosměrné vysílání | Omezená (Nutno složitě ohýbat práva místností přes Power Levels) | Ideální (Kanály lze přepnout do režimu Read-Only, povolit jen emoji reakce či vlákna) | Skvělá (Streamy lze striktně moderovat a uzamknout pro zápis pouze adminům) |
Shrnutí rozdílů z předchozí diskuse:
- Matrix je stavěný jako robustní, nezničitelná síť pro globální decentralizovanou komunikaci. Daň za tuto svobodu je však vysoká složitost pro koncového uživatele a náročná administrace síťových prvků na straně správce.
- VoceChat představuje protipól. Je to lehký, centralizovaný chat navržený speciálně pro to, aby se snadno hostoval a okamžitě používal. Pro komunitu, kde admin převážně vysílá informace do různých skupin a uživatelé mají pouze číst či reagovat, je ideální díky možnosti vypnout psaní v kanálech a nechat aktivní pouze emoji nebo komentáře ve vláknech. Uživatele nezatěžuje žádnou síťovou teorií.
- Zulip nabízí špičkový nástroj pro velké organizované struktury (stovky až tisíce lidí). Pokud komunita vyžaduje pokročilé třídění informací do témat a detailní hierarchii oprávnění, Zulip funguje bezchybně, ale vyžádá si podstatně více hardwarových prostředků tvého serveru.