Under Construction

I'm still working on this post. Some parts might be incomplete or subject to change. Check back later for the finished article!

My Homelab

ProjectIn progress

Is it still a homelab if everything is routed through Oracle Cloud?

Published

Tags

Tech stack

  • programming
  • server
  • Not
  • Finished
  • Listing
  • Them
My Homelab

I've been wanting to set up some sort of homelab / server for a while, especially after I upgraded my gaming computer and essentially had a whole second computer left over.

My apartment thankfully has some Ethernet cables in the walls running to a few points throughout the unit, so I didn't have to attempt to stuff the server in a closet full of clothes or run an absurdly long cable.

I did still have to run around with my laptop and an Ethernet cable to figure out which cable went where in the apartment, though.

But the problems started well before that.

The BIOS is Gone

This was not a fun discovery.

A photo of the messy desk with the computer on top, an NVMe drive held in place with a bottle of allergy meds

I'd set up the computer on top of my extremely messy desk, put an NVMe drive in place with a bottle of allergy meds to hold it down, prepared a live Debian USB, and attempted to boot.

Video of the BIOS being completely messed up

This is not what I expected to see.

I attempted to figure out why this was happening: resetting the CMOS, tried all the RAM in different slots one at a time, but nothing worked.

Occasionally the BIOS would load somewhat correctly, but it was extremely unstable and would constantly crash or freeze.
Nonetheless, after about an hour of fighting with it, I managed to get Debian installed.

…which did not like my Realtek networking controller.

Networking Woes

After spending some time trying to get third-party drivers working, I resorted to using Ubuntu Server, which cost me another hour of blindly navigating the BIOS while attempting to change the default boot order to boot from USB again.

Thankfully, that installed fine. I went through the setup and had an internet connection.

I set up SSH, connected from my laptop, and started configuring things. I wanted to set up Traefik as a reverse proxy to route traffic to different services, and logged into my Telus router to configure port forwarding.

After an hour of trying to figure out why I couldn't access the server from outside my network, messing about with the router firewall, DNS and more, I discovered that Telus had us behind CGNAT, meaning port forwarding wouldn't work no matter what I did on the router.

A Brief Look at Cloudflare Tunnels

I considered using Cloudflare Tunnels to work around this, but ultimately decided against it. I planned to host a few game servers, and running those through Cloudflare Tunnels would not work without even more complicated setups—such as requiring my friends to install mods just to connect, even for something like Minecraft.

Oracle Cloud to the Rescue

A while ago, I discovered Oracle Cloud's free tier, and the massive amount of resources they provide for free if you use their ARM instances, along with a generous bandwidth allowance.

It works quite well for running Minecraft servers, but I figured I could also use it as an entry point for my homelab server. I removed my existing instance that was hosting a few Minecraft servers and created a new ARM instance, then set up Tailscale and Traefik on it.

Tailscale essentially acts as a VPN, allowing me to connect to my home server from the Oracle Cloud instance without needing to open any ports on my router. From there, I configured Traefik to route traffic to my home server over Tailscale and set up DNS records in Cloudflare pointing to the Oracle Cloud instance.

This way, when I access my domain, the request goes to the Oracle Cloud instance, which then routes the traffic over Tailscale to my home server.

As a bonus, this setup also means my home server is not directly exposed to the internet, adding an extra layer of security.

Current Setup and Future Plans

Currently, I'm running a few services on my homelab server, all in Docker containers:

  • A Minecraft server for me and my friends
  • WordPress for hosting an in-development site for a community centre
  • n8n for automating tasks
  • Jellyfin for media streaming

I'm planning to set up monitoring on top of Traefik, as well as possibly add a few more game servers in the future.

Licensed under CC BY-NC 4.0.