Podman Quadlets

I have started a slow migration of my docker-compose stack to fully rootless Podman + Quadlets. Things I had to do so far:

  • create .container and .network units (obviously)
  • create scripts which will automatically install these units and pre-pull/pre-build images
  • create a separate user for podman containers
  • create a package for Debian Bookworm with version of Podman which includes quadlets (sidenote: The biggest challenge was getting Go 1.21 and reading through the list of Podman dependencies, because docs mix runtime and build dependencies.)
  • fix that package to include a correct PREFIX in Podman’s build target, which Quadlets use to generate a full path to podman binary in Exec entries of systemd units
  • learn the hard way about lack of support for User= in systemd units and work it around with systemd lingering
  • un-privilege ports <1024
  • chown some files
  • move some config files around

It took me ~3 days, including 2 days of convincing myself that I really need to make that Debian package, and 3 hours of actually making it…