Describe the container once and get a Quadlet file that systemd turns into a real service, with logs in journalctl, restarts on failure, and start at boot.
Podman reads .container files at daemon-reload and generates a normal .service unit from each. Because that unit is generated, systemctl enable does not work on it; the [Install] section in the .container file is what makes it start at boot. After any change, run daemon-reload and restart the service. For rootless containers to start at boot without you logging in, enable lingering for the user once with loginctl enable-linger.
This generator writes Podman Quadlet .container files, the replacement for the deprecated podman generate systemd. It fills in the [Container] section with Image, ContainerName, PublishPort, Volume with the :Z SELinux relabel option, Environment, Network, Exec, and AutoUpdate=registry for podman auto-update, plus a [Service] restart policy and an [Install] target that matches rootless or rootful mode. It also prints where to save the file, the dry-run command that shows the generated unit, and the systemctl commands to start it.
Rootless units go in ~/.config/containers/systemd/ and are managed with systemctl --user. Rootful units go in /etc/containers/systemd/ and are managed with plain sudo systemctl. Subdirectories are allowed in both.
On SELinux systems such as Fedora and RHEL, :Z relabels the host directory so only this container may use it, and :z relabels it for sharing between containers. Without one, SELinux blocks access and the container sees permission denied. On systems without SELinux the option is harmless.
With AutoUpdate=registry, running podman auto-update, or enabling podman-auto-update.timer, pulls newer images for the same tag and restarts the containers that use them, rolling back if the new container fails to start. Use a specific tag rather than latest so updates stay within a version you trust.
Yes. Create a .network file and reference it with Network= in each .container so they can reach each other by name, or group them in a .pod file. Quadlet also supports .volume, .kube, .image, and .build units.