
Quadlet lets you declare Podman containers as native systemd units. Instead of running podman generate systemd on a live container or gluing together brittle Compose + systemd files, you write a short .container file. Podman’s generator (/usr/libexec/podman/quadlet) reads it at boot or after daemon-reload and produces a regular .service you manage with systemctl.
Place the file at /etc/containers/systemd/app.container (rootful) or ~/.config/containers/systemd/app.container (rootless). Add an [Install] section with WantedBy=multi-user.target so the service starts on boot. Then run systemctl daemon-reload && systemctl start app.service.
Named volumes and networks are also first-class units. Declare appdata.volume and appnet.network, then reference them from the container file with Volume=appdata.volume:/data and Network=appnet.network. The generator provisions the dependencies automatically.
Key caveats: cgroup v2 is required, generated services are transient (use WantedBy, not enable), and rootless mode cannot use systemd User= directives. For long image pulls set TimeoutStartSec=900 in the [Service] section. Debug syntax errors with systemd-analyze --user --generators=true verify app.service.
Quadlet replaces ad-hoc container-to-systemd glue with portable, intent-only configuration that upgrades automatically when Podman fixes land. It is the cleanest way to run single-node container services on any modern Linux box.
Related areas
Related What I Do
These What I Do pages are matched from the subject matter of this article, creating a cleaner path from educational content to implementation work.
Continue reading
Related articles
Based on shared categories first, then the strongest overlap in tags.

