Skip to content
RentnerProxyPublic

About

Modern self-hosted reverse proxy manager powered by Caddy.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

16 stars

Watchers

1 watching

Forks

Latest commit

 

History

673 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RentnerProxy project logo

RentnerProxy

Modern self-hosted reverse proxy management powered by Caddy.

CI status CodeQL status OpenSSF Best Practices badge Current GitHub release MIT license

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.

Features

  • 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.

Installation

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

Docker / Compose

Requirements:

  • linux/amd64 or linux/arm64 host with Docker Engine and Docker Compose.
  • Free ports 80/tcp, 443/tcp, and 443/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/32

To 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 use ssh -L 8181:127.0.0.1:81 user@server.
  • Use the configured HTTPS PUBLIC_ORIGIN for normal access, email links, and passkeys.
  • Application data lives in the persistent rentnerproxy Docker 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.

Podman / Quadlet, Debian and Fedora

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.

Upgrade

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.

Docker images

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.

Screenshots

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.

Dark mode
Proxy hosts in dark mode with tags, groups, example domains and bulk selection.
Proxy hosts
Certificate management in dark mode with ACME operations, imported certificates and expiry status.
TLS certificates
DDNS management in dark mode with Cloudflare A and AAAA records, proxy status and paused automatic updates.
Cloudflare DDNS
Security dashboard in dark mode with labeled synthetic metrics, charts and IP bans.
Security dashboard
Notification settings in dark mode with an email channel, event subscriptions and delivery status.
Notifications
Light mode
Proxy hosts in light mode with colored tags, host status, search and filtering.
Proxy hosts
Certificate management in light mode with domains, certificate sources and ACME status.
TLS certificates
DDNS management in light mode with Cloudflare A and AAAA records, proxy status and paused automatic updates.
Cloudflare DDNS
Redirect management in light mode with host tags, a 301 redirect, HTTPS status and pagination.
Redirect hosts
Notification settings in light mode with an enabled channel and successful test deliveries.
Notifications

More information

Licensed under MIT.

About

Modern self-hosted reverse proxy manager powered by Caddy.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages