Skip to main content
This guide provides step-by-step instructions for deploying Draftable API Self-Hosted v3 using Podman as an alternative to Docker. The deployment process is largely identical to Docker, with a few key differences noted below.

Prerequisites

Key Differences

Initial Setup

Proxy Configuration

Configuration

Deployment

Common Commands

Troubleshooting


Prerequisites

Software Requirements

Before you begin, ensure you have the following installed on your Linux server:
Critical: You must use podman compose (with a space). Do not use podman-compose (with a hyphen) — this is a different tool that is not compatible with this deployment.

Hardware Requirements

Your server should meet the following minimum requirements:

Container Images

Draftable API Self-Hosted v3 uses the following container images from Docker Hub (public, no authentication required):

Key Differences from Docker

If you’re familiar with the Docker deployment guide, here are the key differences when using Podman:
Good news: The same docker-compose.yaml file works with Podman Compose without modification.

Initial Setup

Verifying Podman Version

Podman 4.x or later is required for native Compose support. Check your version:
If you’re running a version below 4.x, you’ll need to upgrade Podman before proceeding.

Installing Docker Compose Plugin

Podman uses the Docker Compose v2 specification. You need to install the Docker Compose CLI plugin (not podman-compose).

On RHEL 8 / RHEL 9 / Rocky Linux / AlmaLinux:

This installs the Compose CLI to /usr/libexec/docker/cli-plugins/docker-compose.

On Fedora:

On Ubuntu / Debian:

Verify Installation

After installation, verify that podman compose works correctly:
You should see version information for Docker Compose.
Why this approach?
  • ✅ No Docker daemon required
  • ✅ No Python-based tools needed
  • ✅ Fully supported going forward by the Podman project
Do not use podman-compose: The hyphenated podman-compose tool is a separate Python-based implementation that is not compatible with this deployment. You must use podman compose (with a space) which uses the Docker Compose plugin.

Alternative: Using docker compose Command

On some systems, you can also use the docker compose command directly. Podman transparently intercepts Docker commands when Docker is not running.
To verify that Podman is handling Docker commands:
If the output shows Server: Podman, you’re good to go.

Upgrading Podman (if needed)

If your Podman version is below 4.x, upgrade using the following instructions:

RHEL 8

RHEL 9 / Rocky Linux 9 / AlmaLinux 9

Podman 4.x is included by default:

Fedora

After upgrading, verify your version:

Configuring Proxy for Image Downloads (Corporate Environments)

Many corporate environments require all internet traffic to go through a proxy server. If your organization uses a proxy, you’ll need to configure Podman to pull container images through it.

Option 1: Environment Variables

Set proxy environment variables before running Podman commands:
To make these permanent, add them to your shell profile (~/.bashrc or ~/.bash_profile).

Option 2: Podman Configuration File

Create or edit the Podman configuration file at ~/.config/containers/containers.conf (for rootless) or /etc/containers/containers.conf (for rootful):

Option 3: Systemd Service Override (Rootful Podman)

For system-wide configuration when running Podman as root:

Verify Proxy Configuration

Test that Podman can pull images through your proxy:
Replace proxy.yourcompany.com:8080 with your organization’s actual proxy address and port. Contact your IT department if you’re unsure of the correct proxy settings.

Enabling the Podman Socket

Podman Compose requires the Podman socket to be running. Enable and start it with the following commands:
You should see the socket file at /run/podman/podman.sock.

Rootless Podman Configuration

Podman supports rootless operation, which is recommended for security. The Draftable containers are built to run as user draftable with UID 1001 and GID 1001. If you’re running Podman in rootless mode, ensure your security context is configured correctly:

Configuration

Configuration Files

Download the Docker Compose file and sample .env configuration file from our GitHub repository:

https://github.com/draftable/apish

Environment Variables

Create a .env file in your deployment directory with the following key settings:

Server Configuration

ALLOWED_HOSTS automatically defaults to the value of SERVER_DNS if not explicitly set.

TLS Certificate Configuration

TLS certificates are managed directly in the .env file. Paste the full certificate and key content:
Unlike some Docker deployments where certificates are injected into the container filesystem, Podman deployments manage certificates entirely through the .env file.

Product Key

Django Secret Key

For a complete list of all available environment variables, see the Docker Compose Guide.

Deployment

Step-by-Step Deployment

1

Prepare your directory

Create a dedicated folder containing your .env file and the Docker Compose file:
Copy your docker-compose.yaml and .env files to this directory.
2

Verify Podman socket is running

Ensure the Podman socket is active before proceeding:
If not running, enable it:
3

Deploy the containers

Navigate to your deployment directory and start the services:
To run in the background (detached mode):
4

Verify deployment

Check that all containers are running:
You should see all services in a “running” state.
5

Access the web interface

Open your browser and navigate to the HTTPS address configured in your .env file:
6

Complete initial setup

On first launch, you’ll be prompted to:
  1. Create an Administrator account
  2. Log in with your new credentials
  3. Retrieve your API credentials from Account Settings
For detailed instructions on the initial setup wizard, see the Quick Start Guide.

Common Podman Commands

Here are the Podman equivalents of common Docker Compose commands:

Starting and Stopping

Viewing Logs

Container Management

Updating Draftable

To update to the latest version:

Troubleshooting

Podman Socket Not Running

Symptom: podman compose commands fail with connection errors. Solution: Enable and start the Podman socket:

Permission Denied on Volumes

Symptom: Containers fail to start with permission errors when accessing mounted volumes. Possible causes:
  1. Rootless mode UID mismatch: The container expects UID/GID 1001
  2. SELinux restrictions (on RHEL-based systems)
Solutions: For UID/GID issues, ensure your security context uses the correct user:
SELinux Note: On RHEL-based systems (RHEL, CentOS, Rocky Linux, AlmaLinux, Fedora), SELinux is enabled by default and may block container access to mounted host directories. If you encounter volume permission issues:
  1. Check if SELinux is enforcing: getenforce
  2. Try adding the :z or :Z suffix to volume mounts in your compose file
  3. Or configure appropriate SELinux policies for your deployment
Example volume mount with SELinux label:

Wrong Compose Command

Symptom: Commands fail, behave unexpectedly, or containers don’t work properly. Cause: Using podman-compose (hyphenated) instead of podman compose (with a space). Solution:
  1. Do not use podman-compose — this is a different tool that is not compatible with this deployment
  2. Ensure you have the Docker Compose plugin installed (see Installing Docker Compose Plugin)
  3. Always use podman compose (with a space):
If podman compose is not recognized, verify:
  • Podman version is 4.x or later: podman --version
  • Docker Compose plugin is installed: podman compose version
Alternative: You can also use docker compose if Podman is intercepting Docker commands:
Verify Podman is handling it by running docker info — it should show Server: Podman.

Container Images Not Pulling

Symptom: Podman cannot find or pull the Draftable images. Solution: Podman may default to a different registry. Explicitly specify Docker Hub:
Or configure Podman to search Docker Hub by editing /etc/containers/registries.conf:

Viewing Container Logs

To diagnose issues, check the logs for specific services:

Support

If you encounter issues during deployment, please contact us at support@draftable.com with:
  • Output of podman compose ps
  • Relevant container logs (podman compose logs)
  • Your .env file (with sensitive values redacted)
  • Output of podman version
  • Your Linux distribution and version