Jun 6 2025
technical howto

My homelab

My Raspberry Pi homelab with an overview of services I self-host.

Example Raspberry Pi NAS

Hardware and software šŸ”—︎

I have 3 disks connected to my Raspberry Pi 4b (1 GB model) and cockpit (with file sharing and podman addons) to manage it graphically from any device without the need of SSH.

Network Attached Storage (NAS) šŸ”—︎

On the first disk that is mounted in /srv I have my samba share connected to /srv/smb, but other services in /srv/<service_name>. I’m using cockpit-file-sharing to ease setting it up. I also have cron jobs with rsync to copy my data on other disks.

TIP: To set up a new user for SMB share: sudo smbpasswd -a $USER and sudo smbpasswd -e $USER.

Reverse proxy šŸ”—︎

I tried setting up Adguard Home with Nginx Proxy Manager, but couldn’t get DNS rewrites and reverse proxy to work, so I left it. I also don’t have admin access to the router, and after calling my ISP they said they cannot set up any custom DNS, nor set a static address, great…

My quasi-solution is to use mDNS on the Pi, so that I can use the hostname.local:PORT to access it, while it’s IP changes.

Music library šŸ”—︎

I’m using Navidrome to organize and access my music library.

Personal knowledge base/notes šŸ”—︎

I’m using silverbullet, because I wanted something simple with Markdown support (it’s super extensive which I think will be of use in the future).

Media server šŸ”—︎

I’ve set up Jellyfin server on it and it works great without transcoding.

TIP: If you are using mDNS then instead of network_mode: host in the example docker-compose file you can simply forward the 8096 port.

RSS Reader šŸ”—︎

I’m using FreshRSS to manage and read RSS feeds.

Password Manager šŸ”—︎

Since I don’t have a reverse proxy I can’t set up a secure HTTPS connections and using a password manager while leaking passwords would be meaningless.

Calendar šŸ”—︎

I’m using Baikal to have a CalDAV server that can be used across my devices.

Media tracker šŸ”—︎

To track my media usage (or more likely store information about my recently consumed media) I’m using Yamtrack.

Dashboard šŸ”—︎

To get an overview of all of my services I’m using mafl as my dashboard, which is conveniently served at the port 80 for easy access.

Anki sync server šŸ”—︎

I’m also self-hosting my own Anki sync server to sync Anki decks across my devices.

Systemd units šŸ”—︎

Since I’m running rootless podman containers and podman systemd generate is now deprecated I’m using Quadlet to run containers as systemd services. This guide shows how to work with them and podlet can help you generate .container files for your containers. That way I can set it up to run after (re)boot and enable other options like auto-update.

Other tips šŸ”—︎

Well, it took some time to arrange, but I’m happy that I’m using so many services without relaying on third-parties.