Encrypted Chat & Call Server
Custom hosted and configured Element Synapse server.
A custom and fully self hosted instance of Element Synapse.

Built With
Goals
The core objectives driving this projects development and design
Provide a fully functional, user friendly, & reliable self hosted alternative to popular chat services.
To fully support voice calls, video calls & group chats.
To create a seamless user experience that is feature rich and easy to use.
Key Features
End to end encryption
Voice & Video chat with TURN + LiveKit
Completely configurable and self managed.
Challenges & Solutions
Challenge: Procurement & Configuration of Cloud server
In order to run the chat service I needed a server, a domain, DNS, SSL certificates, a database and a reverse proxy.
Solution
First I commissioned a cloud server running Ubuntu. Then, using SSH, I set up users and permissions as well as a firewall to block unauthorized access. From here, I installed the services I would need such as postgreSQL and nginx. I then installed the SSL certificates and configured my DNS.
Challenge: Installing and configuring Element Call
When I had first set up the server & synapse it was using a simple TURN server coturn. Since the Initial installation, Element launched their element call feature which needed to be set up separately. This was especially challenging as their was not good documentation or guides on how to do so without using Docker.
Solution
I used some Docker based guides as well as reading through the Docker set up files and reverse engineered a normal non-container installation.
Knowledge accquired
Key insights and knowledge gained throughout this project
Configure, manage & install dependencies on linux via SSH.
Reverse proxy configuration.
Certificate installation with certbot.
Firewall configuration.
Ubuntu service configuration and management.