#3194·odysseus

feat(podman): add Podman support with compose overlay, GPU overlay, and setup script

Author: hsnx999Created Jun 7, 2026Updated Sep 16, 2026
Labelsenhancementready for review

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 of docker-compose.yml via -f or COMPOSE_FILE. Explicitly sets extra_hosts to use Podman's resolved host-gateway.
  • docker/podman.gpu-nvidia.yml — NVIDIA GPU overlay using CDI device notation (nvidia.com/gpu=all), since podman-compose ignores the deploy.resources section in the existing docker/gpu.nvidia.yml.
  • scripts/podman-setup.sh — first-run setup script that checks prerequisites, enables the Podman socket, creates .env and data dirs, validates the merged compose config, and optionally starts the stack. Follows the same output helper conventions as the existing scripts/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 layerpodman compose (the built-in subcommand) handles host-gateway and deploy.resources differently 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