feat(podman): add Podman support with compose overlay, GPU overlay, and setup script
Prerequisites
- I searched open issues and this has not already been proposed.
- I searched discussions and this is not already being debated there.
- This is a concrete, actionable proposal — not a vague "it would be nice if..." request.
Area
Docker / Deployment
Problem or Motivation
Docker requires a root daemon, which is overkill for a single-user self-hosted app and blocks adoption on systems where Podman is the default (Fedora, RHEL, Arch, CentOS). The existing docker-compose.yml is largely compatible, but podman-compose does not support Docker's deploy.resources section for NVIDIA GPU passthrough, and some extra_hosts values resolve differently. Without dedicated overlay files and a setup script, Podman users have to manually work around these differences or miss GPU acceleration entirely.
Proposed Solution
Three new files and two documentation-only modifications:
docker/podman.yml— compose overlay applied on top ofdocker-compose.ymlvia-forCOMPOSE_FILE. Explicitly setsextra_hoststo use Podman's resolvedhost-gateway.docker/podman.gpu-nvidia.yml— NVIDIA GPU overlay using CDI device notation (nvidia.com/gpu=all), since podman-compose ignores thedeploy.resourcessection in the existingdocker/gpu.nvidia.yml.scripts/podman-setup.sh— first-run setup script that checks prerequisites, enables the Podman socket, creates.envand data dirs, validates the merged compose config, and optionally starts the stack. Follows the same output helper conventions as the existingscripts/check-docker-gpu.sh.README.md— brief Podman usage note inside the Docker quick-start section, referencing the overlay files and setup script..env.example— Podman GPU overlay paths added alongside the existing Docker GPU examples.
Usage:
scripts/podman-setup.sh # full setup + start
podman-compose -f docker-compose.yml -f docker/podman.yml up -d --build # manual
# GPU:
podman-compose -f docker-compose.yml -f docker/podman.yml -f docker/podman.gpu-nvidia.yml up -d
podman-compose -f docker-compose.yml -f docker/podman.yml -f docker/gpu.amd.yml up -d
The existing docker-compose.yml and docker/gpu.amd.yml remain unchanged — they work with Podman as-is.
Alternatives Considered
- Modify docker-compose.yml directly — ruled out because it would break Docker users. The base compose works on both runtimes; overlays keep the Docker path unchanged.
- Write a standalone podman-compose.yml — ruled out because it would duplicate the entire service definition, creating a maintenance burden every time the base compose changes. Overlays merge on top instead.
- Use podman's docker-compose compatibility layer —
podman compose(the built-in subcommand) handleshost-gatewayanddeploy.resourcesdifferently depending on the version, and many distros ship podman-compose (the Python tool) separately. Overlays cover both paths explicitly. - Document-only, no scripts — existing check-docker-gpu.sh is the precedent: a first-run diagnostic script that handles the wiring so users don't miss steps. Skipping it would make Podman support harder to discover and use.
Prior Art / Related Issues
None. This is a new feature with no existing issue or prior PR. The project's existing docker/gpu.nvidia.yml overlay and scripts/check-docker-gpu.sh served as the structural template for the Podman counterparts.
Are you willing to implement this?
Yes — I can open a PR
Source: odysseus-dev/odysseus