My Raspberry Pi homelab with an overview of services I self-host.
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.
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
.
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.
I’m using Navidrome to organize and access my music library.
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).
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.
I’m using FreshRSS to manage and read RSS feeds.
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.
Iām using Baikal to have a CalDAV server that can be used across my devices.
To track my media usage (or more likely store information about my recently consumed media) Iām using Yamtrack.
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.
Iām also self-hosting my own Anki sync server to sync Anki decks across my devices.
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.
nmap
to find the Pi’s IP address if you don’t have an access to your router.hostname.local
in the browser on Linux, but can ssh into it then it means that your distro doesn’t have mDNS enabled/started.Well, it took some time to arrange, but I’m happy that I’m using so many services without relaying on third-parties.