I want to host my own server, but I would like to know what I should know?
- user names cannot be changed
- never delete your database, have backups, all the state is in there, if you lose your DB, you essentially have to set up a new server: Your server will say you are not in a room while others say you are, so you cannot join. Always keep your DB backed up.
- How to make your computer publicly routable on the Internet (open firewall or forward port)
- Basics of Linux administrating and terminal
- Basics how to register domain name and point it dynamically or statically to the machine
Use MDAD and save yourself a ton of time and effort. https://github.com/spantaleev/matrix-docker-ansible-deploy
Lots of decent suggestions here so not going to repeat them, but I do have a couple of my own if using synapse:
- have plenty of RAM
- have plenty of CPU
- have plenty of DB storage space
- use Postgres as your database, SQLite sucks
Basically synapse is just a resource hog, and you need to plan for that. The database itself grows quicker than you’d expect as well
I thought that I could run the server on an old and not very good computer. Is not it?
You can use old machines for all kinds of servers, I’ve got a stack of old laptops running a Kubernetes cluster, but synapse would push some of them possibly further than they can go so I have it on my more powerful NAS, and even then it isn’t exactly speedy at times
You said on your PC, but don’t forget that the server should be accessible 24/7
Do yourself a favor and use something like etke.cc
- how to use apparmor or selinux
- how to run docker rootless
- use a reverse proxy like traefik or nginx
- use certbot or another way to get TLS certificates
- use a firewall, use secure ssh
- block spam traffic and matrix servers that host spam
- host synapse and sliding sync
sounds complicated
I mean you want to host an internet facing computer. That shit is poorly pretty complicated. But I think there are things that make that easier with presets etc.
I heard of people that Nix is awesome because there are preconfigured configurations, you apply them and also with your single config file you have the documentation of what you did.