Everything running on my Raspberry Pi 5 (and what I removed)

The full map of my home server: which services it runs, which port each uses, how I organise them with Docker and systemd, and what I tried and dropped.

Iván· Published on · 3 minLeer en español →

People often ask me what I run on my Raspberry Pi, so here’s the full map. It’s a real home server: I use it every day, it has backups and it pings my phone if anything goes down.

The hardware

  • Raspberry Pi 5, 8 GB.
  • 256 GB NVMe SSD as the boot drive, on an adapter board. No microSD: cards wear out with the constant writes from databases and logs, and NVMe is far faster.
  • Raspberry Pi OS, based on Debian 12.

With everything below running, it uses about 1.7 GB of RAM and 9% of the disk. Plenty of headroom.

How I organise it

I follow a simple rule:

  • Docker for self-contained apps with an official image: they install, update and uninstall without leaving a trace.
  • systemd for my own Python programs, which are one file and little else. They don’t need a container.

The “home” containers all live in a single docker-compose.yml in ~/servicios/, with one data folder per service next to it. So backing up means copying that folder.

Services in Docker

Service What for Port
Homepage Start page with links and the status of everything 80
Gitea My own “GitHub” for my projects 3000 (SSH on 2222)
Uptime Kuma Checks everything responds and alerts me on Telegram 3001
Vaultwarden Bitwarden-compatible password manager local only, published over HTTPS via Tailscale
openGym App to log my workouts 8081
Portainer View and manage containers from the browser 9443

A security detail: Vaultwarden doesn’t listen on the network, only on 127.0.0.1. It reaches my devices through Tailscale with a real HTTPS certificate. I explain it in its own article.

systemd services

Service What for
Command centre My Python dashboard: live status, last backup and to-dos
3D printer panel Watches the Elegoo Centauri Carbon 2 over MQTT
OctoEverywhere Remote access to the printer
Tailscale Private network between my devices, plus HTTPS certificates
WayVNC Remote desktop on the Pi, just in case

And two things that aren’t services but matter just as much:

  • A nightly backup to the NAS at 3:30, via cron.
  • A small weekly script that analyses my workouts and sends me a summary.

How I get in from outside

I have two routes, each with its own job:

  • WireGuard on the router: connects me to the home network as if I were on the sofa.
  • Tailscale: besides connecting, it provides names and automatic HTTPS certificates, which the password manager needs.

There are no ports open on the router to the Pi. Everything goes through a VPN.

What I tried and removed

This is the part people rarely talk about. Running a home server also means saying no:

  • n8n (automations): I had it for a while and replaced it with an AI agent.
  • An AI agent connected to a cloud service: the free plan fell short and the local fallback didn’t work. I uninstalled it. It has its own article.
  • A proxy to compress AI requests: it had been installed for weeks with nothing using it. Gone.
  • Pi-hole, Nextcloud and Home Assistant: I considered them and didn’t install them. I didn’t need Pi-hole for now, Nextcloud duplicated what the NAS already does and Home Assistant didn’t add anything with the gear I have.

Every service is one more thing to update, watch and secure. If nobody uses it, it goes.

What I’d do differently if I started today

  1. Alerts from day one. I had three days of failing backups without noticing because monitoring wasn’t alerting anyone.
  2. Fixed IPs for everything important. The NAS and the printer changed address and broke things.
  3. Write down every change. I keep a file with what runs, on which port and why. It’s what made this article possible.
Mini quiz

Did it stick?

Three quick questions. Each right answer is worth 10 XP.

  1. Why does the Pi boot from an NVMe drive instead of the microSD card?
  2. What rule do I follow to decide between Docker and a systemd service?
  3. Why did I remove a service that worked fine?
  • #raspberry-pi
  • #docker
  • #systemd
  • #homelab
  • #self-hosted
Esc