Dendrite on fly

Dendrite is a lightweight Matrix Homeserver.

Seems I was totally wrong here in saying federation is done through port 8443. The correct federation port is 8448 :woman_facepalming:

I’ll post some instructions which I have so far later here…

2 Likes

After reading some matrix documentation, I think I got it working partially. It is possible to use a SRV DNS record to tell the world to use a different port for federation, so 8443 also works.

On ipv4 this seems to work, but on ipv6 connection times out. Maybe I still have to wait for some changes in the fly infra

I’ve written a short how-to here: gerald/dendrite-on-flyio: How to run a matrix homeserver (dendrite) on fly.io - dendrite-on-flyio - Codeberg.org

I still have to think about how to backup the sqlite and media files.

2 Likes

Oh wow this is great! You will find a gift on your Fly account. :smiley:

You might see if you can use Litestream for streaming sqlite backups to s3 or similar: https://litestream.io/

We’ve been wanting a reason to demo Litestream too!

1 Like

Seems like litestream could work. Thanks for the suggestion!

Do you have any suggestion regarding an init system? Or is there even systemd available in the firecracker VMs? Looking at GitHub - superfly/init-snapshot: Fly it seems there is nothing provided from your side?

Or could this be running in another VM/app mounting the same volume?

If you do try and run systemd, you’ll have to set it in a way that it doesn’t mind not being PID 1.

Indeed, all we provide from our init are the basic functions of an init system. Our init doesn’t launch multiple processes for supervision. However, we have been thinking about doing that at some point.

You can’t mount the same volume in 2 VMs.

If you want to run more than 1 process, I suggest using something like supervisord or overmind!

Nice, I’ll look at overmind and supervisord :slight_smile:

Finally had some time to take a look again at this:

I’m currently a little stuck with IPv6 connectivity of the main dendrite process to the outside world.

Here is what I did: (Code here: gerald/dendrite-on-flyio: How to run a matrix homeserver (dendrite) on fly.io - dendrite-on-flyio - Codeberg.org)

  • Took the superfly/rchab repository and changed it to run dockerd in a tmux session
  • Used docker-compose to start dendrite and litestream containers

I’m surprised this really works. One thing that does not work is connecting using IPv6.

Is there anything I’m not seeing? Currently, the dendrite container uses the host network becaouse I also could’nt make it work with a container network with enabled ipv6.

Edit: Seems the docker daemon complains Could not add route to IPv6 network fd00::1/80 via device docker0: network is down. I’ll investigate that

Edit2: My plan: upon starting, determine the internal ip and patch the fixed-cidr-v6 docker daemon configuration option. This seems possible, but gives the same error as in Edit 1 but with different ip :slight_smile:
I have very few experience with networking and especially ipv6, so maybe someone has a good idea for me.