Git.
I write everything in markdown, and sync to my personal repo (backed up locally and as part of an encrypted backup elsewhere), which also goes to my personal codeberg in a private repo.
Passwords are maintained in a dedicated keepass db, also backed up elsewhere in the same fashion.
Config files themselves are always stored on my NAS in a symlinked or mapped directory, but primarily mapped since its (almost) all containers. These also get backed up the same way.
So as long as I structure my NAS/mapping the same way, everything else works the same way, no matter where its hosted. I do all my addressing by dhcp reservation so IP config is all in one place, and I have a local cert so everything is referenced by hostname.
Makes this all pretty easy to document imo, though the only one who will ever read it is me. I’m also in the middle of changing up auth, so I’ll get to redo a good chunk of it, but I really only need to change configs.
… I’m lazy. I only like doing something once.












For docker, use compose, and map it all to one spot with subdirectories, and also map the config for the service to a spot on your disk/nas.
I put them in one spot on my NAS under services, so it looks like:
/services/service_name/docker-compose.yml /services/service_name/config/
Easy peasy lemon squeezy.