Skip to main content

Configuration

Prerequisites

  • Docker Compose v2 (docker compose)
  • A domain pointing to your host with port 443 open (for Let's Encrypt TLS)
  • git (to clone the repo)

For local development without a public domain, substitute a self-signed cert or use Traefik's local CA.

Environment Variables

Packyard is configured via a .env file at the repository root. This file is never committed.

Production

# TLS
ACME_EMAIL=ops@example.org
PKG_DOMAIN=pkg.example.org

# RustFS staging storage (generate with: openssl rand -hex 20)
RUSTFS_ACCESS_KEY=<generate>
RUSTFS_SECRET_KEY=<generate>

Local Development

ACME_EMAIL=dev@localhost
RUSTFS_ACCESS_KEY=dev-access-key
RUSTFS_SECRET_KEY=dev-secret-key-value

Advanced (auth service)

These are set via compose.yml and only need overriding when deploying with a non-standard volume layout:

VariableDefaultDescription
RPM_DATA_ROOT/data/rpmRoot directory for RPM tree initialisation inside the auth container. Must match the mount point of the rpm-data volume. The auth service creates trees under {RPM_DATA_ROOT}/rpm/{component}/{series}/{os_family}-{arch}/ — note the extra rpm/ subdirectory level.

Compose Override Files

Two scenarios are supported for non-production work — pick the override that matches what you're doing.

FilePurpose
compose.ymlBase configuration (production: TLS via Let's Encrypt, no host-port forwarding).
compose.override.ci.ymlPlain-HTTP fast path for CI runs and casual local development. No TLS; admin API exposed on localhost:8080, Prometheus metrics on localhost:9090. Used by verify.sh, the e2e tests, and the Getting Started walkthrough.
compose.override.dev.ymlTLS-path debugging override. Keeps the production TLS path with a self-signed fallback (curl -k required) and switches routing to PathPrefix-only rules so endpoints are reachable by IP or localhost without a real Host header / DNS entry. Use this when you're verifying TLS or Traefik routing behaviour — not for "just run the stack".
compose.override.arm64.ymlApple Silicon — swaps zot to the arm64 image variant. Stack on top of either .ci.yml or .dev.yml.