Built from the ground up
Hardware and custom case
I assembled the server hardware myself, using a Gigabyte A520M DS3H V2 motherboard and an AMD Ryzen 5 3600 processor. I also designed the enclosure rather than using a pre-built case: I modelled the assembly in Fusion 360 and 3D-printed the components to fit the hardware and networking equipment.
- Server hardware
- A self-assembled system built around an AMD Ryzen 5 3600 and Gigabyte A520M DS3H V2 motherboard, running Ubuntu Server without a desktop environment.
- CAD design
- Designed and modelled the custom rack-style enclosure in Fusion 360, working around component dimensions and allowing space for rear cables.
- Fabrication
- 3D-printed the case components, considering practical constraints such as airflow, hardware access, and space for networking equipment.


Under the hood
Architecture and technology
The homelab provides a headless Linux environment for running applications and services. Docker and Docker Compose keep services separated into containers, while remote access and an automated image build process make it practical to maintain the applications hosted on the server.
- Operating system: Ubuntu Server, administered remotely over SSH without a desktop environment.
- Containerisation: Docker and Docker Compose run applications and supporting services independently, making deployments easier to configure and maintain.
- Website deployment: My personal website runs on the homelab in a Docker container, with PostgreSQL running as a separate service. GitHub Actions builds the application image and publishes it to GitHub Container Registry (GHCR) for deployment.
- Remote access: Cloudflare Tunnels provide access to configured services through hostnames without requiring inbound ports to be opened on my home router. SSH is used for remote server administration.
- Hardware and fabrication: AMD Ryzen 5 3600, Gigabyte A520M DS3H V2, Fusion 360, and 3D printing.
What I am practising
Skills developed through the project
- Linux systems administration: installing and maintaining a headless Ubuntu Server environment and administering it remotely over SSH.
- Deployment and containerisation: running services with Docker Compose and using a GitHub Actions and GHCR workflow to build and distribute application images.
- Networking and remote access: configuring Cloudflare Tunnels and hostnames to make selected self-hosted services accessible remotely.
- Hardware and CAD: assembling a computer from individual components, modelling a custom enclosure in Fusion 360, and manufacturing it through 3D printing.
- Troubleshooting: diagnosing issues across the server, container configuration, application builds, and network access.
Next stages
Where the project is going
The homelab is an ongoing project that will provide hosting for my future applications and experiments with self-hosted services. Rather than treating each project as a separate deployment, I want to use this server as a shared platform for running and maintaining the software I build.
As the setup develops, I plan to explore further automation, additional services, and ways to manage deployments centrally. This gives me a practical environment to develop skills across hardware, Linux, networking, and application infrastructure.