Setting Up an XMPP Server (not a guide)

I have recently set up an XMPP server, running on Compared to, it isn't as open to registration. Since I don't really know how to run a server like that (I have tried for testing), I don't really know all the good practices and measures.

One of the first things I did was decide on what server I wanted to run it on, I was thinking of using a different server for the job, but due to a limited budget, I just used the server. Personally, I try to use different computers for each service, but I don't think that would be a good use of my money compared to just using a pre-existing computer.

Now that the server I wanted to use was chosen, I started researching what software I wanted to use. Now, this was very easy since I have tried running an XMPP server before. So, I chose Prosody. I had the most experience with it (also known as like maybe up to an hour) so I was just a bit biased to this option. If I were to restart this project, I would have probably done more research into other options.

The software chosen, what now? Well, you need to configure it! I went through the configuration and set the values to what I needed (For example: setting the VirtualHost to instead of localhost). However, during this step, I got stumped on the certificates. In hindsight, I don't know how and why I was stuck on this step for so long. I think because it was nearing 1:00AM, I was getting extremely tired. However, in the end, I did get the certificates working using Certbot and we are now able to get into the fun stuff (possibly)!

Using Prosody's CLI tool (prosodyctl), I was able to create a user account. I decided to create two accounts, one was my main account, and the other was a testing account to test how messaging within the server worked. I also made an account off-site to test cross-site messaging (it isn't called that, but it works). At this point, the messaging was all working as expected. Now, I wanted to add three more things for it to become usable as a primary messaging platform.

The first thing I did was set up File Sharing since I wanted to be able to send images and videos to my friends. This was actually very simple, I specified what the image-sharing URL was going to be, got the certificate, and then set it up in NGINX. Then setting up Multi-User Chat was essentially the same thing.

Setting up Calls was the hardest one of the three to be set up. Not that it was hard, but as in if I had to list the three in a 'Hardest to set up' list, it would be first. Calls required a TURN server and I used eturnal since it was pretty easy to set up and configure.

So then I ask myself, was it all worth it? Why XMPP? Why couldn't I just use a publicly available XMPP server and use that? For the first question, I will have to wait to find out. The second question, I did think of setting up Matrix, which is also able to message and call people but in my experience, I just didn't really like it enough for a primary source of contact. I do have a Matrix account on but I don't really use it that often. The third question is simple, I have too much time on my hands and needed a project to work on.

Thank you for reading. This is my first proper attempt at writing a blog post so I apologize for anything I did incorrectly.

Fediverse Account