Home server: How? What?
Since my last tech-stack update, the setup has grown both in complexity and capability. This calls for an update on what is running on my home server and how?. Hopefully it encourages to also try out this hobby.
Hardware overview
My home server setup consists of:
- A Raspberry Pi 4: Equipped with a USB stick for quick block storage and a USB-powered external hard disk.
- An Intel NUC: Configured with an internal NVMe SSD and an additional SATA hard disk.
- At my parent’s home, I also have a Raspberry Pi Zero: With a small microSD card for lightweight tasks. This is a remote node and not part of a cluster setup.
This is a pretty basic setup but you can achieve a lot with software. Keeping in mind, that I will add more hardware, I waned to look at software systems that allow me to easily expand to more devices.
Base services
- All of the devices are running Ubuntu server as the OS and have been assigned static IPs at my router.
- Storage is managed using a distributed file system via SeaweedFS. The NUC acts as the master node and both of them run volume servers to store redundant copies of data across two nodes. This setup allows flexible storage across multiple mediums (SSD/HDD) with customizable replication levels.
- Both devices are part of a Kubernetes cluster running k3s with the NUC being the master.
- The majority of services on my home server are accessible only within the internal network. For external access, I use a WireGuard VPN server, granting secure remote access.
Once you have an OS, job scheduling, networking and storage configured you are ready to run services on your cluster! I run everything else over k8s making it super easy to manage services.
Services I run?
Over time as I find some interesting use-case, I try to find self-hosted versions of a tool rather than relying on another cloud provider. A curated personal list of services I host (in no particular order):
- This blog that you are reading - Github
- Airtrail - Track my flight history.
- Home assistant - My self-hosted smart home
- Cloudflare tunnels - Access to some services over the public internet (like this blog)
- Immich - Self-hosted photos management
- Matrix server - Open network for decentralized communication
- Media stack - Plex and other stuff
- Ntfy - Push notifications
- Your Spotify - My spotify listening stats
- Pingvin - File-sharing platform
- Monitoring stack - Prometheus, Grafana
- Syncthing - Continuous file synchronization program.
- Tailscale - Secure remote access to other nodes
- Manager - A custom written service to manage the various periodic tasks like backups