Encrypted Chat & Call Server

Custom hosted and configured Element Synapse server.

A custom and fully self hosted instance of Element Synapse.

Encrypted Chat & Call Server preview

Built With

Element SynapseMatrixPythonpostgreSQL

Goals

The core objectives driving this projects development and design

1

Provide a fully functional, user friendly, & reliable self hosted alternative to popular chat services.

2

To fully support voice calls, video calls & group chats.

3

To create a seamless user experience that is feature rich and easy to use.

Key Features

1

End to end encryption

2

Voice & Video chat with TURN + LiveKit

3

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.

Want to see more?