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:

  1. Checks out your code on the GitHub runner (via actions/checkout), then syncs those sources to the preview server over SSH.
  2. Provisions an instance with Docker + Docker Compose on your chosen provider (AWS Lightsail by default, Hetzner as an alternative).
  3. Deploys continuously — every push to the labeled PR triggers a redeploy.
  4. 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.run subdomain (with rev1.clickrev9.click alternatives to spread Let’s Encrypt rate limits).
  • Helm support for teams that prefer Kubernetes-style deployments.
  • TTL-based auto-cleanup: set ttl: 24h and the scheduled cleanup run destroys idle environments.

Explore the docs

PageWhat’s in it
Getting startedInstall the action, set up secrets, open your first preview
How it worksThe full lifecycle and the GitHub event model
ConfigurationFull input and output reference, built from action.yml
Workflow examplesComplete copy-paste workflows for Lightsail and Hetzner
ProvidersLightsail vs Hetzner — defaults, sizing, regions
Deployment targetsDocker Compose (default) or Helm on k3s
HTTPS and custom domainsTLS termination, DNS suffixes, rate-limit tips
FAQCommon 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.