Been running services myself for a few years now. This is what I'm lately running. Maintenance is just running apt-get update and upgrade myself every 2 weeks. Apart from that, I don't spend much time on it. The config is basically a Git repo with one folder per Docker Compose service. And then one Caddy which reverse proxies to the other services. I just give each service a unique port. Not Docker network namespaces nonsense. Everything is just a separately running Docker service and they connect via the ports.
- fx (my own blog software)
- syncthing (sync files to remote servers for backup)
- borgbackup (store old copies of files for backup; via cron)
- radicale (calendar)
- pingvin-share-x (file sharing with other people)
- Forgejo (GitHub-like clone; using it many times a day most days)
- vaultwarden (self-hosted Bitwarden)
- immich (not really using it much)