Leonard Schwier

My home server

  ·   2 min read

Introduction

I use a Raspberry Pi 5 with 8GB RAM as my home server.

The server uses openmediavault (based on Debian Linux) as the operating system, hosts multiple deployed Docker containers, and runs some custom scripts. I connect to my local network with my home server via WireGuard and use tailscale for key exchange and coordination.

I’m amazed by the selection of open-source projects out there and try to contribute even more in the future.

Why do I have a home server?

  1. It is fun to learn more about technology and try out new things
  2. It provides a privacy-friendly alternative to some other services
  3. It can be economically attractive if you have a lot of data (at least my business case is positive 😉)

Deployed services

Beyond using my home server as a network-attached storage (NAS), I deployed the following services.

Photo management

1. Immich

  • Photo management solution

Media management

2. Jellyfin

  • Media server to host videos

3. Audiobookshelf

  • Media server to host podcasts & audiobooks
  • Mobile app: currently in beta

4. Calibre-web

5. Miniflux-rss

Document management

6. Paperless-ngx

  • Mobile app: undecided

Infrastructure

7. Apache web server with MySQL database

  • Server to run custom PHP scripts (e.g., daily birthday reminder, advanced calendar reminder)

8. Syncthing

  • Continuous peer-to-peer file synchronization
  • Mobile app: Möbius Sync

9. Gitea

  • Local git version control server
  • Also used to synchronise Obsidian (see here for instructions)

10. Pi-hole

  • Network-wide DNS blocking
  • I use Quad9 as upstream DNS provider

Custom scripts

I also run some custom scripts outside of the Docker containers.

11. Python scripts

  • A collection of custom scripts to back up my contacts (CardDav server), calendars (CalDav server), and MySQL databases.

Further hardware details

I have a 2TB solid-state drive (SSD) connected to the Raspberry Pi and use the official Raspberry Pi 27W USB-C Power Supply. The data of all deployed services and custom scripts is stored on the SSD.

The SSD is encrypted with the Linux Unified Key Setup (LUKS) to protect it against data loss resulting from theft.

The Raspberry Pi has a 3D-printed case which has enough space for the SSD as well.

Raspberry Pi case
Raspberry Pi case

Backups

openmediavault creates regular backups of the entire operating system partition to the SSD using the openmediavault-backup plugin.

Furthermore, the openmediavault-borgbackup plugin creates regular encrypted backups (see more information here) to a Hetzner Storage Box.