Matrix (Synapse) a Element – Raspberry Pi Ubuntu 24.04 server LTS Docker

Funkcie (Čo to dokáže?)
- End-to-End šifrovanie (E2EE): Tvoje správy sú šifrované priamo v zariadení. Ani ty ako admin servera si ich (teoreticky) neprečítaš v databáze.
- Federácia: Môj server na IP
10.10.8.5sa môže (ak to dovolím) prepojiť s ostatnými servermi na svete (napr. matrix.org). - Mosty (Bridges): Matrix dokáže pomocou doplnkov prepojiť správy z WhatsAppu, Telegramu alebo Signalu do jednej aplikácie.
- Multimédiá: Podpora pre prenos súborov, hlasové správy a video hovory (cez Jitsi alebo LiveKit).
- Synchrónnosť: Môžeš byť prihlásený na mobile, webe aj desktope naraz a všetko sa okamžite synchronizuje.
Minimálne HW požiadavky (Raspberry Pi / Ubuntu)
Matrix (Synapse) je napísaný v Pythone a vie byť celkom „hladný“ na RAM, najmä ak začneš používať federáciu (pripájať sa do veľkých miestností).
| Komponent | Minimum (1-5 používateľov) | Odporúčané (pre plynulý chod) |
|---|---|---|
| CPU | ARMv7 / ARMv8 (RPi 3 a novšie) | RPi 4 alebo 5 (4 jadrá) |
| RAM | 1 GB (veľmi tesné, treba Swap) | 2 GB – 4 GB |
| Disk | 16 GB MicroSD (Class 10) | 32 GB+ (ideálne SSD cez USB 3.0) |
| Sieť | 100 Mbps (Ethernet) | 1 Gbps Ethernet |
Poznámka
Nakoľko tento manuál vznikol po inštalácií a konfigurácií Matrix Chat, tak sa mi odlišujú IP adresy a porty.
Vytvorenie priečinkov
V kontajneroch vytvoríme nový priečinok napr. chat
mkdir chat

Vytvoríme tomto priečinku chat vytvoríme ďalší priečinok s názvom element
mkdir element

Vytvorenie config.janson
v textovom editore vytvoríme config.janson
nano config.janson
Do neho vložíme, IP adresu, na ktorej chceme aby bežala služba
{
"default_server_config": {
"m.homeserver": {
"base_url": "http://10.10.8.5:8008",
"server_name": "10.10.8.5"
}
}
}
Generovanie počiatočnej konfigurácie Synapse
Pred spustením samotného Compose musíme vygenerovať základné konfiguračné súbory Synapse (homeserver.yaml), inak kontajner nenaštartuje správne.
sudo docker run -it --rm \
-v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=10.10.8.5 \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
Výstup:
sudo docker run -it --rm \
> -v $(pwd)/data:/data \
> -e SYNAPSE_SERVER_NAME=10.10.8.5 \
> -e SYNAPSE_REPORT_STATS=no \
> matrixdotorg/synapse:latest generate
[sudo] password for ivan:
Unable to find image 'matrixdotorg/synapse:latest' locally
latest: Pulling from matrixdotorg/synapse
53196b1f47bd: Pull complete
e7f2a93f0c7a: Pull complete
3c389b3eef21: Pull complete
b08101a833d6: Pull complete
ad999efbff48: Pull complete
6a1e34c16502: Pull complete
2bc10f896e2b: Pull complete
338cdf1f8dc0: Pull complete
ddd420bbfc56: Pull complete
fcc2c9933709: Pull complete
Digest: sha256:9d6bef0a269608d4422bbc5a39140f4a7f667802bcdac143eac0f41f80924dcf
Status: Downloaded newer image for matrixdotorg/synapse:latest
Creating log config /data/10.10.8.5.log.config
Setting ownership on /data to 991:991
Generating config file /data/homeserver.yaml
Generating signing key file /data/10.10.8.5.signing.key
A config file has been generated in '/data/homeserver.yaml' for server name '10.10.8.5'. Please review this file and customise it to your needs.
Vytvorenie docker-compose.yaml
Vytvoríme docker-compose.yaml (ja som to chcel zámerne na porte 4000)
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: synapse
restart: always
environment:
SYNAPSE_SERVER_NAME: "10.10.8.5"
SYNAPSE_REPORT_STATS: "no"
volumes:
- ./data:/data
ports:
- "8008:8008"
element:
image: vectorim/element-web:latest
container_name: element
restart: always
ports:
- "4000:80"
volumes:
- ./element/config.json:/app/config.json
Spustenie docker compose
Potom spustíme príkazok
sudo docker compose up -d

Môžeme sledovať logy
sudo docker logs -f synapse
sudo docker logs -f element
Teraz môžeme ísť na webovú stránku
http://10.10.8.5:4000/

Vytvorenie užívateľa
Keď všetko prebehne v poriadku, vytvoríme užívateľa idealne prveho, ako admin
sudo docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml

Nevytvárajú sa účty pomocou GUI, ale len pomocou príkazového riadku
Otvoríme si, chat vo webovom prehliadači a klikneme na Invite už vopred vytvoreného užívateľa


Vypisuje sa to v takomto tvare


Verejný chat
Ak chceme mať chat verejný je potrebné urobiť portforwarding. Je potrebné urobiť 2.
- Jedno pravidlo na prístup na webové rozhranie u mňa port 3090
- Druhé, aby sa mohli odosielať správy
Vo fortigate to vyzerá následovne


Potom následne ísť do FireWall Policy

A tu vytvorené pravidla pridať

Potom následne kliknúť na Apply

Potom u poskytovateľa domený je potrebné urobiť A záznam

Upozornenie mobilná aplikácia potrebuje SSL certifikát, inak sa nedokáže pripojiť na server