Projects

Homelab · Self-hosting

Hearth

A small self-hosted infrastructure project built around repurposed hardware, practical experimentation, and learning how the pieces of a network fit together.

Status Active · evolving
Host Proxmox VE
Approach Reuse first

01 · Overview

A home for useful services.

Hearth began as an experiment in giving older hardware another useful life. Rather than building around one application, I use it as a small platform for learning Linux administration, networking, storage, containers, reverse proxies, DNS, monitoring, and self-hosting.

The system is deliberately modest. That constraint has made resource allocation and service boundaries part of the project rather than something I can simply solve with more hardware.

02 · Constraints

Working with what I already had.

Hearth is deliberately built around hardware I already owned. The main host is a 2011 Mac mini with 16 GB of memory, so resource efficiency is part of the architecture rather than an afterthought.

Storage uses ordinary ext4 filesystems on external disks instead of a more complex storage stack. This keeps the drives portable, makes the system easier to understand, and leaves room to replace the host later without tying the data to one machine.

03 · Stack

Small services, clear responsibilities.

Proxmox VE Virtualisation & LXC
Jellyfin Media streaming
Caddy Reverse proxy & HTTPS
Samba LAN file sharing
Pi-hole DNS filtering
Uptime Kuma Service monitoring

04 · Architecture

Separate the services that matter.

Internet Public traffic
CT 103 Caddy Proxy HTTPS · reverse proxy
CT 101 Jellyfin
CT 107 Portfolio

Administrative services remain on the local network; only explicitly selected services are exposed publicly.

05 · Learning in practice

Connecting coursework with real infrastructure.

Building Hearth has helped me connect the web-development concepts I am learning at university with a real deployment environment. Although this portfolio is deliberately static, many of the underlying skills are the same ones involved in dynamic web development: understanding how requests reach a server, organising site structure, configuring a web server, managing permissions, handling DNS, and deciding what should or should not be publicly accessible.

Working with dynamic server-side technologies such as PHP has also made the trade-offs more apparent. A static site removes much of the application runtime and database surface area, but it still needs to be deployed, routed, secured, and maintained. This has helped me think less in terms of individual languages or tools and more in terms of the complete path between a user and an application.

My networking studies reinforce the same idea from another direction. DNS resolution, IP addressing, and service discovery are things I now use directly rather than only studying conceptually. Running services such as Pi-hole and Caddy has made it easier to see how the networking, web-server, and application layers fit together.

06 · Next

Still evolving.

Future work includes expanding game-server experiments, improving backup automation, refining monitoring, and continuing to document the infrastructure as it grows.

Technologies used in practice

Tools connected to real work.

Proxmox VE

Created and managed lightweight LXC containers with separate responsibilities and resource limits.

Caddy

Configured reverse proxying and HTTPS for selected public-facing services.

Pi-hole

Deployed DNS filtering, tested client resolution, and connected DNS behaviour to networking theory.

Samba

Configured authenticated LAN file sharing across mounted storage and Unix permissions.

Linux

Administered Debian-based services, systemd units, storage mounts, permissions, networking, and service troubleshooting.

Python

Used small maintenance scripts to safely edit and validate portfolio content.