docs
PullPreview documentation
Everything you need to deploy pull request preview environments to your own AWS or Hetzner infrastructure.
PullPreview is a GitHub Action that automatically deploys your pull requests as live preview environments on your own cloud infrastructure — no third-party SaaS required. Add the pullpreview label to a PR, and the action provisions a server, deploys your Docker Compose stack, and posts the preview URL back to the PR. Remove the label (or close the PR), and the server is destroyed.
How it works
Once installed, the action fires whenever a labeled PR changes:
- Checks out your code on the GitHub runner (via
actions/checkout), then syncs those sources to the preview server over SSH. - Provisions an instance with Docker + Docker Compose on your chosen provider (AWS Lightsail by default, Hetzner as an alternative).
- Deploys continuously — every push to the labeled PR triggers a redeploy.
- Reports the URL as a PR comment and a job summary, so reviewers can click straight through.
The lifecycle is fully automated. You pay only for the underlying compute while the server is running — there is no per-preview markup on top of your provider bill. See How it works for the full lifecycle and event model.
Features
- Works with any app that runs with Docker Compose — no rewrite required.
- Environments start and stop from PR labels.
- Runs on your own cloud account (AWS Lightsail or Hetzner Cloud).
- Your code stays within GitHub and your own infrastructure.
- Preview state (Docker volumes) persists across deploys on the same PR.
- Reviewer access via the preview link in the PR comment, plus SSH access via installed GitHub user keys.
- Auto HTTPS via
proxy_tls(Caddy sidecar + Let’s Encrypt). - Custom domains, or the built-in
my.preview.runsubdomain (withrev1.click–rev9.clickalternatives to spread Let’s Encrypt rate limits). - Helm support for teams that prefer Kubernetes-style deployments.
- TTL-based auto-cleanup: set
ttl: 24hand the scheduled cleanup run destroys idle environments.
Explore the docs
| Page | What’s in it |
|---|---|
| Getting started | Install the action, set up secrets, open your first preview |
| How it works | The full lifecycle and the GitHub event model |
| Configuration | Full input and output reference, built from action.yml |
| Workflow examples | Complete copy-paste workflows for Lightsail and Hetzner |
| Providers | Lightsail vs Hetzner — defaults, sizing, regions |
| Deployment targets | Docker Compose (default) or Helm on k3s |
| HTTPS and custom domains | TLS termination, DNS suffixes, rate-limit tips |
| FAQ | Common questions answered concisely |
Guides cover seeding data, pre-deploy scripts, private registries, multiple environments per PR, and troubleshooting.
Pricing
The action is open source. Commercial use requires a license (300 €/year per organization). Non-profit and individual use can be free — contact us or purchase a license ↗.
You pay your cloud provider’s compute cost directly — there is no per-preview markup.