Install Matrix Server

First Step to Develop a Matrix Client: Set Up a Local Matrix Server

The first step to developing a Matrix client is to set up your own Matrix server. This allows for a simple configuration to get started quickly. The easiest way is to use a Matrix server via Docker. For simplicity, this setup uses an SQLite database instead of the PostgreSQL database typically used in production environments.


Below is a summary of the steps, based on the official instructions found here: https://hub.docker.com/r/matrixdotorg/synapse

Install docker


The installation method depends on your operating system. Follow the instructions on the official Docker website for your OS.

Download the docker image
docker pull matrixdotorg/synapse

Generate initial configuration
docker run -it --rm --mount type=volume,src=synapse-data,dst=/data -e SYNAPSE_SERVER_NAME=my.matrix.host -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate

Start Matrix server
docker run -d --name synapse -v synapse-data:/data -p 8008:8008 matrixdotorg/synapse:latest

Create users
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u user2 -p password2

This command creates a user named “user2” with password “password2”.

Repeat this command to create additional users as needed.

Conclusion

Now everything is up and running (the server is listening on http://your_ip:8008). If you shut down Docker, remember to restart both Docker and the container.

For example, on openSUSE:

systemctl start docker
sudo docker start /synapse

Matrust: A Matrix Client in Rust + Slint

I’ve just started a new open-source project called Matrust (naming things isn’t my strong suit 😅).

The Goal

The idea is to build a Matrix client (https://matrix.org) using:

But why this stack—especially when I have over 20 years of experience with C++ and Qt?

Why Rust + Slint?

Love it or hate it, Rust is one of the most exciting languages around today—safe, fast, and supported by a strong ecosystem.

As for Slint, I see it as a modern and lightweight alternative to Qt/QML, with a fresh take on UI development, especially in the Rust world.

So I thought: why not build a learning path, like I previously did for SwiftUI, but this time with Rust + Slint—on a real project?

This is a learning journey for me too—it’s the first time I’m combining these three technologies.

Current Status

The project is in a very early stage. At the moment, Matrust supports:

  • Logging in
  • Receiving messages from a test Matrix server

It’s basically a first commit. What’s in the repo today will likely evolve—or be completely rewritten—as the design and architecture solidify.

A Guide for Developers

I’ll be documenting every step of the process, to build a resource for:

  • Rust or Slint beginners
  • Developers curious about building a Matrix client
  • Anyone who, like me, prefers learning by building real things

What’s Next

One of the upcoming posts will walk through setting up a local Matrix server using Docker. That way, we’ll have all the components running locally, making development and testing easier and more consistent.


The repo:

https://github.com/niqt/matrust