My homelab now uses runit-managed podman containers. If, for some reason, `runit` and all its variants disappear, you can get everything going this way: ```sh for service in */; do (cd $service && ./run) & done ``` Architecture ------------ Many of these services are web-based. All my web-based services run behind [caddy](caddy/). [simpleauth](simpleauth/) authenticates requests to most web-based services, using caddy's forward-authentication mechanism. [portal](portal/) is a basic landing page that lists services, so people don't have to remember a dozen URLs. Because I'm double-NATted, I run [coredns](coredns/) so that LAN machines can get to the services. A few odd ducks: * [atlas](atlas/) is a RIPE Atlas Probe, used by RIPE to do research on the Internet. I don't get anything out of this, other than feeling like I'm being helpful. * [oscar](oscar/) is a full-featured login shell that I ssh into, instead of the host OS, which has hardly anything installed. * [sys-backup](sys-backup/) is a periodic job to back up the host OS configuration. * [service-sync](service-sync/) copies all this stuff from the host OS into my repo, and occasionally I commit the changes. This is covered by sys-backup, but I like having these services on my git server, so people can look at how it works.