One thing that I wish I could improve about Fifthdread Services is making it easier to access stuff. For example- Look at my portal page. Now look at the URLs for a lot of Fifthdread services. Yeah, it’s all server.fifthdread.com:port number. That’s annoying. How are normies supposed to know that if they want to connect to element chat, they gotta use a specific port? The whole point of using DNS is so people don’t need to remember numbers like IP addresses etc. I want it to be easier. For example.
Element right now, is located at server.fifthdread.com:xxxx port. It’d be easier if it was something like
Realistically, it may need to be element.server.fifthdread.com, or I’ll need to get anther domain name purchased. Either that, or I start Self-hosting Fifthdread.com at my house instead of with my current provider… and to be honest, that’s not an easy option, and not one that I want to go through.
Anyway, back on topic. How do I go away from using :port identifiers for my services? The solution seems to be to use a reverse proxy.
A reverse proxy can do a few things for me, but the main one from a user perspective is it will enable me to filter all server.fifthdread.com content through a single host, and that host will allow me to forward requests to the appropriate servers depending on the URL. For example, say I make a forwarder for Element- call it element.server.fifthdread.com. That would go to my reverse proxy, which would forward the traffic to the appropriate server on my LAN. Awesome! This is a cool new feature that I hadn’t thought of adding before. Why? Well, a few reasons.
To setup a reverse proxy, I either have to self-host it on my LAN, or I have to host it on a VPS, or “virtual private server” hosted online by a VPS provider. Previously, purchasing a VPS online means paying a monthly payment to a company, and since Fifthdread Services is something of a non-profit situation, anything that costs more money to maintain must be damn well worth it, or absolutely essential. Since I’m new to reverse proxies, I didn’t think it was worth the hassle just so people could be less confused. Also, self-hosting a reverse proxy wasn’t going to work previously, because COX blocked common ports inbound. This means that you’d have to use a port number ANYWAY, since ports 80 and 443 were blocked, meaning the benefits of the reverse proxy would be taken away. LAME.
However, I’m somewhat having a change of heart regarding reverse proxies, for a few reasons. For one, I’m getting Verizon FIOS soon, and supposedly, they don’t block common ports like COX does. This is good! This means that I can self-host a reverse proxy and get the full benefits of using it. Maybe now is the time to go for it?
Pros and Cons
There are some AMAZING benefits that I’m super pumped about, not only from a user perspective, but from an administrative one as well. Yes, users will get the benefits of being able to use links like element.server.fifthdread.com, bitwarden.server.fifthdread.com, etc, but I’ll get the benefits of having to manage less SSL certificates, since I’ll have to apply the certificate to less hosts. I can get away with applying it to the reverse proxy, and I can also setup auto-certificate renewal. Big BIG wins, since I’m doing it manually every three months currently… It sucks.
One of the biggest cons is the amount of work it will take to setup. While I think in the long run, it could be mega worth it to have, it could present some challenges. For one, I’m unsure how well it will work with things like Element. Element, or more specifically, Matrix Synapse, has specific reverse proxy guidelines that I will have to read, understand, and implement. Not something I’m very excited about. Element has some specific pros and cons that I’m also looking into. Ideally, using reverse proxies and other stuff, I could get Element to work much better than it currently does.
Work work work
That’s what this boils down to- more work, more complication. I’m tired just thinking about it! But, the show must go on, and I think setting up a reverse proxy shows promise. We will see if I end up doing it- but in the meantime, this will remain on the “todo” list. I’m definitely interested to see what could become of this in the future.