My Server Setup

I've been in the server game for four or five years by this point. I've learned a lot over that time – from what hosting providers to consider, to how a server should be set up, to which battles to choose to do the hard way.

Here's is a sort of summary of what I've learned in the form of defences of my actions.

The Purpose of the Server

If you're reading this with a completely different idea of what you want from a server then you might not get very much out of this. So, the purpose of my server is to host useful services for myself (and perhaps a few select people), to provide a space for myself on the web, and to teach me server management. As you can tell, the server is very personal and not designed for the general public to have any reliance on. This allows me to try and fail, and while I have built up resilience over time, my setup is still certainly fallible.

Where I Put My Money

As a university student, money is not in flowing supply. As such, I need to minimize my cost while maximizing the thing I value. The domain name(s), DNS, hosting, and network security (DDoS protection, etc). Here's a quick breakdown of the best I've found

  1. Domain Name: Namecheap. They sell cheap names, what more do you want? They allow you to change your DNS and everything.
  2. DNS: I'm actually working on changing this one. I currently use Cloudflare because they provide free DNS and a large amount of security. However, privacy is now in question so I will likely switch to an alternative.
  3. Hosting: I used to use HostGator, but found that they were pricey for what I was getting. I have switched to Contabo and I have been satisfied ever since. I use their cheapest option, which has enough processing power for me and a large amount of storage.
  4. Network Security: Again, Cloudflare. This is an issue as I'm trying to change my DNS so I will likely have to make a more robust server-side solution.

Hosting Multiple Services

One of my goals was to host multiple services. To accomplish this under the same domain name and same server hardware, I elected to use Docker and a reverse proxy. The flow is that DNS points a subdomain to my server, which is then caught by the reverse proxy. The proxy looks up the service and funnels the traffic to the proper Docker service.

It's worth noting that not all services have to use the reverse proxy. I also have a personal VPN and onion service which don't use a proxy. When setting up a Docker service, the proxy is optional. The nice thing about the reverse proxy is that is is nice and abstract for all parties involved (you may notice the .onion link above uses port :8888, but all my other subdomains use port 80 which is easier on users).

Conclusion

I've realized that that's pretty much it. I'm hopefully going to be writing more in-depth posts about the individual parts of my system, but that will be a future project.

Show Comments