Home Server Setup

This is a place to document my journey in setting up my home server, primarily to learn about server administration and to host services for my personal projects.

image

Technical Details

The home server is a Dell Optiplex 3070 equipped with an Intel i5-9500T. Originally, it came with 8GB of RAM and a 500GB HDD, but I upgraded it to 32GB of RAM and replaced the HDD with a 1TB NVMe SSD (Samsung Evo 970). This was to ensure I would not need to worry about storage usage for the forseeable future, and be able to run many containers in parallel without worrying about ram usage.

I acquired this machine with the intention of learning more about server administration and hosting servers for personal projects with docker. Because of this, I chose Ubuntu 22.04 LTS as the Operating System.

image

Configuration

The server acts as the backend for my domain, bats.li. All incoming traffic is routed through a Traefik reverse proxy, allowing different subdomains (e.g., git.bats.li and cloud.bats.li) to be routed to separate Docker containers, even though they share the same IP address on my home server.

Running Services

Currently, the server hosts several services that I use regularly:

Each service runs inside its own Docker container, making management, updates, and scaling simple.

Challenges & Learnings

Setting up Traefik was an painful experience at first, particularly because it was hard to understand unexpected behaviour. However after reading a lot of documentation I figured how to configure traefik and assign containers to traefik using labels and the correct docker network. The reverse proxy allows seamless routing of traffic to the appropriate service without exposing all ports individually.

Docker and Traefik have made it incredibly easy to run multiple services on the same server, all accessible through different subdomains, giving me a better grasp of network configuration and server management.


Written: 2024-09-15