Modern self-hosted reverse proxy management powered by Caddy.
Important
Current public release: v1.0.0-beta.3.1. This is beta software: breaking changes are possible. Back up your data before upgrades.
Image migration: Beta 3.1 and newer images use ghcr.io/rentnerproxy/platform.
Update existing deployments from ghcr.io/rentnerkev/rentnerproxy explicitly.
Beta 3.1 includes Caddy 2.11.9 with upstream security fixes.
- Proxy hosts and redirects with HTTP/2, HTTP/3, and WebSocket support.
- Duplicate proxy and redirect hosts into a draft with new domains, using existing creation, certificate and access-policy validation. Proxy copies inherit global HTTP settings; separate per-host Config overrides are not copied.
- Global quick search with Ctrl+K on Windows/Linux and Cmd+K on macOS, plus a mobile search control. Find authorized hosts, certificates, access policies and settings with bounded results and keyboard navigation.
- Automatic TLS via ACME HTTP-01, provider-based DNS-01, manual DNS-01 and delegated DNS-01, plus wildcard and imported certificates.
- Shared Cloudflare, deSEC and Hetzner Cloud DNS connections for certificates and DDNS, with scheduling, retries and recovery.
- Guided domain diagnostics for DNS, upstream connectivity and TLS.
- Per-host availability monitoring, response-time history and outage/recovery notifications.
- Upstream pools with load balancing, health-aware failover and configurable retries.
- Opt-in Docker discovery that manages proxy hosts from labeled containers.
- Email and webhook notifications with event subscriptions and delivery status.
- Release detection, update notifications and guided upgrades.
- Host tags, groups, filters and permission-aware bulk actions.
- Configurable Zstd/Gzip response compression, browser-cache rules and an optional bounded response cache for public assets.
- Access policies with Basic Auth, Forward Auth, and IP allow/deny rules; verified HTTPS upstreams.
- CrowdSec protection: managed or external Local API, optional community/Console connection, and a dedicated security dashboard.
- Users, roles, permissions, TOTP, passkeys, OIDC sign-in with account linking and group-to-role mapping, and audit logs.
- Scheduled backups with retention, restore tools and encrypted off-host storage.
- Personal accent colors and light/dark themes; login and public pages retain the default green.
- Live status and access logs; English, German, Spanish, French, Italian, Portuguese, Dutch, and Polish UI.
- Single-container appliance with Caddy, PostgreSQL, Valkey, and a Rust controller, available for AMD64 and ARM64.
- Docker/Compose and Podman/Quadlet deployment, plus signed Debian 13 APT/DEB and Fedora 44 DNF/RPM packages.
See the DNS-01 operations guide for provider setup, manual challenges, supported delegation targets, renewal and recovery.
Beta 3.1 is available for linux/amd64 and linux/arm64.
| Installation | Get started |
|---|---|
| Docker / Compose | Compose setup below |
| Podman / Quadlet | Signed installation guide |
| Debian 13 APT / DEB | Repository setup and package verification |
| Fedora 44 DNF / RPM | Repository setup and package verification |
Requirements:
linux/amd64orlinux/arm64host with Docker Engine and Docker Compose.- Free ports
80/tcp,443/tcp, and443/udp. - HTTPS management origin and SMTP credentials.
This Compose example is pinned to the Beta 3.1 image:
ghcr.io/rentnerproxy/platform:v1.0.0-beta.3.1. The public image supports
anonymous pulls; no GitHub or registry login is required.
Save this as docker-compose.yml (or use the repository file):
services:
rentnerproxy:
image: ${RENTNERPROXY_IMAGE:?Set RENTNERPROXY_IMAGE to a RentnerProxy image}
environment:
# Older Compose versions eagerly expand required-value fallbacks; startup validates the origin.
PUBLIC_ORIGIN: ${PUBLIC_ORIGIN-${RENTNERPROXY_PUBLIC_ORIGIN-}}
PROXY_TRUSTED_PROXY_CIDRS: ${PROXY_TRUSTED_PROXY_CIDRS-${RENTNERPROXY_PROXY_TRUSTED_PROXY_CIDRS:-}}
SMTP_FROM: ${SMTP_FROM:?Set SMTP_FROM}
SMTP_HOST: ${SMTP_HOST:?Set SMTP_HOST}
SMTP_PASSWORD: ${SMTP_PASSWORD:?Set SMTP_PASSWORD}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_SECURE: ${SMTP_SECURE:-false}
SMTP_USER: ${SMTP_USER:?Set SMTP_USER}
ports:
- '80:8080'
- '127.0.0.1:81:3000'
- '443:8443/tcp'
- '443:8443/udp'
restart: unless-stopped
stop_grace_period: 30s
volumes:
- rentnerproxy:/var/lib/rentnerproxy
volumes:
rentnerproxy:Create .env beside it (see also .env.production.example):
# Pin the public Beta 3.1 image; use :beta to follow the latest beta instead.
RENTNERPROXY_IMAGE=ghcr.io/rentnerproxy/platform:v1.0.0-beta.3.1
PUBLIC_ORIGIN=https://management.example.com
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=rentnerproxy@example.com
SMTP_PASSWORD=replace-me
SMTP_FROM=RentnerProxy <rentnerproxy@example.com>
# Optional: only the direct IP/CIDR of a trusted proxy in front of RentnerProxy.
# PROXY_TRUSTED_PROXY_CIDRS=192.0.2.10/32To build from this checkout instead, run the following command and set
RENTNERPROXY_IMAGE=rentnerproxy:local in your Compose .env:
docker build --file docker/production/Dockerfile --tag rentnerproxy:local .Start the appliance:
docker compose config
docker compose up -d- Complete first-owner setup at
http://localhost:81. For a remote host, keep port 81 private and usessh -L 8181:127.0.0.1:81 user@server. - Use the configured HTTPS
PUBLIC_ORIGINfor normal access, email links, and passkeys. - Application data lives in the persistent
rentnerproxyDocker volume.
During restart or recreation, the controller recovers supported persisted proxy snapshots after preparing CrowdSec, before waiting for PostgreSQL and Valkey. Existing HTTP/HTTPS routes can serve while those independent services recover; management readiness still waits for the database, cache and migrations. Fresh installations and unsupported snapshot versions use the safe default site until the application reconciles their configuration. Replacing a single appliance container still interrupts its connections and listeners; this startup order does not provide zero downtime.
The signed Linux distribution runs the same appliance with rootful Podman/Quadlet. Supported package targets are Debian 13 and Fedora 44 on AMD64 and ARM64. They require Podman 5.4 or newer, systemd 252 or newer, cgroup v2 and nftables. Rootless deployment is unsupported.
Follow the installation and verification guide to verify the signing-key fingerprint, configure APT or DNF, or install a versioned DEB, RPM or Quadlet archive. Versioned packages, checksums, signatures and architecture-specific instructions are also available in the Beta 3.1 downloads.
From Beta 2 onward, v1.0.0-beta.1 is the minimum supported upgrade source.
Back up the installation with its current release's tools before changing the image.
Keep the persistent volume, encryption material and deployment configuration.
From Beta 3.1 onward, releases and the :dev image use ghcr.io/rentnerproxy/platform. Existing
installations do not switch registries automatically: older clients still expect
the previous registry and source identity. After backing up, explicitly change
the image in RENTNERPROXY_IMAGE and recreate the Compose service, or install the
package published for the new registry. Use the old registry path for the exact
already published Beta and Alpha pins below; those tags have not been moved.
Alpha installations must first upgrade to the exact image
ghcr.io/rentnerkev/rentnerproxy:v1.0.0-beta.1. Complete startup and configuration
reconciliation, verify hosts and certificates, and create a new v4 backup before
upgrading to Beta 2 or a later supported beta. Use the pinned Beta 1 tag for the
intermediate step; :beta follows the newest beta and skips it.
Alpha v3 backups must first be restored with Beta 1 and that release's restore tools, then backed up again as v4. Direct Alpha upgrades, direct v3 restores and the old environment-file secret import are unsupported in Beta 2 and later releases.
See upgrade, backup and rollback instructions.
New RentnerProxy images are published to the public package ghcr.io/rentnerproxy/platform.
All tags in this package, including :dev, can be pulled without authentication.
The immutable image for this release is ghcr.io/rentnerproxy/platform:v1.0.0-beta.3.1.
| Tag | Channel |
|---|---|
:latest |
Latest stable release |
:beta |
Latest beta release |
:alpha |
Latest alpha release |
:dev |
Development build from main for testing new and potentially unstable changes |
Previously published Beta and Alpha releases remain available under their original registry path. These exact tags are historical pins; new publications use the organization image above:
ghcr.io/rentnerkev/rentnerproxy:v1.0.0-beta.3
ghcr.io/rentnerkev/rentnerproxy:v1.0.0-beta.2
ghcr.io/rentnerkev/rentnerproxy:v1.0.0-beta.1
ghcr.io/rentnerkev/rentnerproxy:v1.0.0-alpha.6
Moving channel tags such as :latest, :beta, and :alpha always follow the newest release
in that channel. :dev is not a release and may change at any time.
Desktop UI in dark and light mode: hosts, certificates, DDNS, security and notifications. Screenshots include example records and labeled demo metrics. Click a thumbnail to view the full-size image.
- Architecture · Security policy · Assurance case
- Operations · Runtime checks
- Contributing · Report a bug
Licensed under MIT.










