Sites & Services (PaaS)
The PaaS layer is the everyday experience: add a domain and a repo, and podmaker handles the database, TLS and deploys.
Sites
A site is a deployable app. Add it from a public or private Git repo (SSH key or token). On creation:
- A database container is provisioned and its credentials are injected into the app’s environment.
- Caddy obtains and renews a Let’s Encrypt certificate automatically per domain.
- Each site runs isolated on its own network — one crash never touches another.
Deploy on the panel button or a webhook. You also get:
- Maintenance mode — flip a 503 page in front of the site instantly.
- Live logs — stream container logs in real time over SSE.
- Backup / restore — snapshot the volume + database dump and restore it.
Services
A service is shared infrastructure — MySQL, PostgreSQL, Redis, RabbitMQ, or a custom image. Provision it once and attach it to as many sites as you need; attachment provisions per-site database/role/ACL/vhost and injects connection details into the site’s env.
# attach a shared service to a site (panel or CLI)pdctl apply -f service.yml # kind: Servicepdctl apply -f site.yml # kind: Site, with an attachmentRegistries
A registry holds private container-registry credentials (host, username, password), used by services and sites that pull private images.
Declarative export / import
The whole live state — sites, services, registries — round-trips through the
declarative podmaker.sh/v1alpha spec, so you can version-control and replay it.
See the deploy YAML reference for the full
manifest schema.
→ Marketing overview: Sites & Services