Skip to content

Paduraksa

Gateway to your homelab

A self-hosted reverse proxy for homelabs, managed from a web dashboard or a REST API, with every change reviewed first, versioned and reversible.

The Paduraksa dashboard: live traffic for the last hour, counts of hosts, upstreams and certificates, the hosts and the recent changes

What it does

HTTP/1.1, HTTP/2 and HTTP/3

A certificate per name, WebSockets and HSTS, and the real client address from behind Cloudflare, a trusted proxy or the PROXY protocol.

Automatic certificates

ACME issuance and renewal (HTTP-01, DNS-01 with Cloudflare or deSEC), and a built-in local CA for LAN names.

Access control

Access lists, rule sets, rate limits, a proof-of-work browser check, and forward-auth to authentik, Authelia or oauth2-proxy.

A review before every change

Each change is shown as a diff before it goes live. Collect changes in a draft, and roll back any revision.

Logs, metrics and analytics

Access and error logs, a live tail with each request's timing, Prometheus metrics, traffic analytics and notifications.

REST API, YAML, CLI and MCP

An OpenAPI-described API, YAML import and export, a command line, and an MCP endpoint for AI assistants.

Secrets stay encrypted

Certificate keys, DNS credentials, TOTP secrets and access-list passwords are kept in a vault that one master key opens.

Quick start

With Docker and Compose v2:

mkdir paduraksa && cd paduraksa

# Download the compose file
curl -fsSLO https://raw.githubusercontent.com/hizkifw/paduraksa/main/deploy/compose.yaml

# Create the master key
head -c 32 /dev/urandom | base64 | sudo install -m 400 -o 10001 -g 10001 /dev/stdin master.key

# Start Paduraksa
docker compose up -d

# Print the one-time setup token
docker logs paduraksa 2>&1 | grep -A8 "Paduraksa first-run setup"

master.key is the only key to the vault, and a backup does not contain it. Open https://localhost:9443/ on the server and create the Owner with the setup token. Getting started goes on from there to a service behind HTTPS.