I respect people calling out unnecessary bloat, but if I want to have 10 different web services running on one machine, and access each of them at [service].[host].lan, containers + Traefik just works.
virtualisation.oci-containers.containers."mainsail" = {
autoStart = true;
image = "ghcr.io/mainsail-crew/mainsail";
volumes = [
"/persist/containers/mainsail/config.json:/usr/share/nginx/html/config.json"
];
labels = {
"traefik.http.routers.mainsail.rule" = "Host(`mainsail.services.lan`)";
};
};