A high-performance, zero-downtime reverse proxy manager built on Cloudflare's Pingora.
Simple, Modern, and Fast. Now supports Wildcard SSL & TCP/UDP Streams!
- ⚡️ High Performance: Built on Rust & Pingora, capable of handling high traffic with low latency.
- 🔄 Zero-Downtime Configuration: Dynamic reconfiguration without restarting the process.
- 🔒 SSL/TLS Automation:
- HTTP-01: Standard challenge for single domains.
- DNS-01: Wildcard certificate support (
*.example.com) via Cloudflare, AWS Route53, etc. (powered by Certbot).
- 🌐 Proxy Hosts: Easy management of virtual hosts, locations, and path rewriting.
- 📡 Streams (L4): TCP and UDP forwarding for databases, game servers, etc.
- 🛡️ Access Control: IP whitelisting/blacklisting and Basic Authentication support.
- 🎨 Modern Dashboard: Clean and responsive UI built with React, Tailwind CSS, and shadcn/ui.
- 🐳 Docker Ready: Single container deployment for easy setup and maintenance.
Is Pingora Proxy Manager saving you time?
This project is built with love, caffeine, and many sleepless nights to provide a high-performance, free alternative for the community. Maintaining an open-source project takes significant effort.
If you'd like to support the ongoing development, bug fixes, and new features, please consider buying me a coffee! ☕️
You can run the pre-built image directly from Docker Hub.
Using Docker CLI:
docker run -d \
--name pingora-proxy \
-p 80:8080 \
-p 81:81 \
-v ./data:/app/data \
-v ./logs:/app/logs \
dduldduck/pingora-proxy-manager:latestUsing Docker Compose:
Create a docker-compose.yml:
services:
pingora-proxy:
image: dduldduck/pingora-proxy-manager:latest
container_name: pingora-proxy
restart: always
ports:
- "80:8080" # HTTP Proxy (Backend listens on 8080)
- "81:81" # Dashboard/API (Backend listens on 81)
# Map 443 if you want to serve HTTPS directly (requires privilege or capability)
# - "443:443"
volumes:
- ./data:/app/data # DB and Certs persistence
- ./logs:/app/logs # Logs persistence
environment:
- JWT_SECRET=changeme_in_production_please
- RUST_LOG=infoThen run:
docker compose up -d- Open your browser and go to
http://localhost:81. - Default Credentials:
- Username:
admin - Password:
changeme(Please change this immediately!)
- Username:
If you want to build the image yourself:
-
Clone the repository:
git clone https://github.com/dduldduck/pingora-proxy-manager.git cd pingora-proxy-manager -
Build and Start:
docker compose up --build -d
- Data Plane (8080/443): Pingora handles all traffic with high efficiency.
- Control Plane (81): Axum serves the API and Dashboard.
- SSL Management: Integrated
Certbotfor robust ACME handling. - State Management:
ArcSwapfor lock-free configuration reads. - Database: SQLite for persistent storage of hosts and certificates.
To run locally without Docker (requires Rust and Node.js):
Backend:
cd backend
cargo runFrontend:
cd frontend
npm install
npm run devContributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
