Skip to content

SSL HTTPS Configuration

Cyril Rohr edited this page Feb 10, 2026 · 9 revisions

Recommended: proxy_tls

PullPreview can automatically inject a Caddy service that obtains Let's Encrypt certificates and proxies HTTPS traffic to your app service.

Set:

with:
  proxy_tls: web:80

That means:

  • incoming HTTPS traffic is terminated by Caddy
  • requests are proxied to web service on port 80
  • preview URL output/comment/status uses https://...:443

If your compose already publishes host port 443, PullPreview logs a warning and skips proxy injection.

Strongly recommended: When using proxy_tls, set up a custom domain or use one of the built-in revN.click alternatives (see below). The default my.preview.run domain is shared across all PullPreview users, and you will likely hit Let's Encrypt rate limits if multiple environments request certificates on the same domain.

Let's Encrypt rate limits

Let's Encrypt enforces a limit of 50 certificates per registered domain per week. If you run many preview environments with proxy_tls enabled, you may hit this limit on the default my.preview.run domain.

To work around this, PullPreview provides built-in alternative DNS suffixes that you can rotate between:

rev1.click, rev2.click, rev3.click, rev4.click, rev5.click, rev6.click, rev7.click, rev8.click, rev9.click

Set the dns input in your workflow:

with:
  dns: rev1.click
  proxy_tls: web:80

Each revN.click domain has its own rate-limit quota, giving you up to 500 certificates per week across all built-in domains (including my.preview.run).

You can also use a custom domain to get your own independent quota.

Manual TLS compose setup

You can still manage TLS directly in your own compose files if preferred (custom Caddy/Nginx/Traefik config).

In that case, keep proxy_tls empty and configure service/ports yourself.

Related env vars

These environment variables are available to your runtime:

  • PULLPREVIEW_PUBLIC_DNS
  • PULLPREVIEW_PUBLIC_IP
  • PULLPREVIEW_URL
  • PULLPREVIEW_FIRST_RUN

Clone this wiki locally