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:| Component | Requirement |
|---|---|
| Podman | Version 4.x or later (required for native Compose support) |
| Docker Compose plugin | Provides the Compose CLI (see Installing Docker Compose Plugin) |
| Linux distribution | Any distribution that supports Podman (RHEL, CentOS, Rocky Linux, Fedora, Ubuntu, Debian, etc.) |
Hardware Requirements
Your server should meet the following minimum requirements:| Component | Minimum Requirement |
|---|---|
| Processor | 4 cores running at 2.5 GHz (Intel Xeon 8000 series or better) |
| Memory | 8 GB RAM |
| Storage | 20 GB free disk space |
Container Images
Draftable API Self-Hosted v3 uses the following container images from Docker Hub (public, no authentication required):| Image | Purpose |
|---|---|
draftable/apish | Main application orchestrator |
draftable/apish-web | Django web application and API endpoints |
draftable/apish-compare | Document comparison engine |
draftable/apish-converter | Office-to-PDF document conversion |
draftable/apish-load-balancer | Load balancer and SSL termination |
Key Differences from Docker
If you’re familiar with the Docker deployment guide, here are the key differences when using Podman:| Aspect | Docker | Podman |
|---|---|---|
| Compose command | docker compose | podman compose |
| Daemon | Requires Docker daemon | Uses Podman socket (daemonless) |
| Compose installation | Included with Docker Desktop / plugin | Requires Docker Compose plugin (docker-compose-plugin) |
| Minimum version | Docker 20.10+ | Podman 4.x+ |
| Rootless support | Requires configuration | Native support |
| TLS certificates | Can be injected or via .env | Managed via .env only |
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:Installing Docker Compose Plugin
Podman uses the Docker Compose v2 specification. You need to install the Docker Compose CLI plugin (notpodman-compose).
On RHEL 8 / RHEL 9 / Rocky Linux / AlmaLinux:
/usr/libexec/docker/cli-plugins/docker-compose.
On Fedora:
On Ubuntu / Debian:
Verify Installation
After installation, verify thatpodman compose works correctly:
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.
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
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:~/.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:/run/podman/podman.sock.
Rootless Podman Configuration
Podman supports rootless operation, which is recommended for security. The Draftable containers are built to run as userdraftable 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/tree/v3
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:
Product Key
Django Secret Key
Deployment
Step-by-Step Deployment
Prepare your directory
Create a dedicated folder containing your Copy your
.env file and the Docker Compose file:docker-compose.yaml and .env files to this directory.Verify Podman socket is running
Ensure the Podman socket is active before proceeding:If not running, enable it:
Deploy the containers
Navigate to your deployment directory and start the services:To run in the background (detached mode):
Verify deployment
Check that all containers are running:You should see all services in a “running” state.
Access the web interface
Open your browser and navigate to the HTTPS address configured in your
.env file:Complete initial setup
On first launch, you’ll be prompted to:
- Create an Administrator account
- Log in with your new credentials
- Retrieve your API credentials from Account Settings
Common Podman Commands
Here are the Podman equivalents of common Docker Compose commands:Starting and Stopping
| Action | Command |
|---|---|
| Start services (foreground) | podman compose up |
| Start services (background) | podman compose up -d |
| Stop services | podman compose down |
| Restart services | podman compose restart |
| Stop without removing containers | podman compose stop |
Viewing Logs
| Action | Command |
|---|---|
| View all logs | podman compose logs |
| View logs for specific service | podman compose logs web |
| Follow logs in real-time | podman compose logs -f |
| View last 100 lines | podman compose logs --tail=100 |
Container Management
| Action | Command |
|---|---|
| List running containers | podman compose ps |
| List all containers | podman compose ps -a |
| Execute command in container | podman compose exec web bash |
| Pull latest images | podman compose pull |
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:- Rootless mode UID mismatch: The container expects UID/GID 1001
- SELinux restrictions (on RHEL-based systems)
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:
- Check if SELinux is enforcing:
getenforce - Try adding the
:zor:Zsuffix to volume mounts in your compose file - Or configure appropriate SELinux policies for your deployment
Wrong Compose Command
Symptom: Commands fail, behave unexpectedly, or containers don’t work properly. Cause: Usingpodman-compose (hyphenated) instead of podman compose (with a space).
Solution:
- Do not use
podman-compose— this is a different tool that is not compatible with this deployment - Ensure you have the Docker Compose plugin installed (see Installing Docker Compose Plugin)
- Always use
podman compose(with a space):
podman compose is not recognized, verify:
- Podman version is 4.x or later:
podman --version - Docker Compose plugin is installed:
podman compose version
docker compose if Podman is intercepting Docker commands:
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:/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
.envfile (with sensitive values redacted) - Output of
podman version - Your Linux distribution and version