A “successful” call that was actually going through the VPN
I wanted messaging “like iMessage” (photos, videos, voice messages), with group calls for 4 or 5 people, for fewer than ten people close to me and with 4 to 5 GB of RAM available on the NAS. I compared Matrix with five other solutions, then deployed Synapse, PostgreSQL and LiveKit with Docker Compose on the TrueNAS, with one ZFS dataset per component.
First pitfall: my “successful” test call was actually going through the VPN, as the LiveKit logs showed. I made it again over 4G, with the VPN and Wi-Fi off, to check that the public path really worked.
On the security side, federation and sign-ups are closed, and the admin API is blocked from the Internet. I replaced the web admin interface with the command line over SSH: one fewer service and one fewer exposed port. Before moving authentication to MAS (OIDC), I took a ZFS snapshot and a database backup: 10 checks out of 10 passed, with accounts and messages kept.
Result: end-to-end encrypted video calls, using less than 300 MB of RAM during a call. Still open: audio doesn't get through between two phones outside the local network, and a packet capture is planned.
My takeaway: a test that works proves nothing until you've checked which way the traffic goes.