Rust MIT

pingora-proxy-manager

A high-performance, zero-downtime reverse proxy manager built on Cloudflare's Pingora. Simple, Modern, and Fast. Now supports Wildcard SSL & TCP/UDP Streams!

D

DDULDDUCK

Dernière activité 1 avr. 2026
DDULDDUCK/pingora-proxy-manager

401

étoiles

18

forks

1

issues ouvertes

Ce README est souvent en anglais.

Pingora Proxy Manager Logo

Pingora Proxy Manager

High-Performance • Zero-Downtime • Modern UI

Built on Cloudflare's Pingora and Rust.

GitHub Wiki License Docker

Rust React Tailwind

Features • Quick Start • Documentation • Contributing


📖 Overview

Pingora Proxy Manager is a next-generation reverse proxy solution designed for speed and reliability. It combines the raw performance of Rust and Cloudflare's Pingora framework with a beautiful, modern React dashboard.

Unlike traditional proxies, PPM supports zero-downtime configuration reloading, meaning your active connections are never dropped when you add hosts or change SSL settings.

image image image image

✨ Features

Feature Description
⚡️ High Performance Powered by Rust & Pingora for ultra-low latency and high throughput.
🔄 Zero-Downtime Dynamic architecture allows configuration changes without restarting the process.
🔒 SSL Automation HTTP-01 and DNS-01 (Wildcard) support via Let's Encrypt.
🌐 Proxy Hosts Easy management of virtual hosts, path routing, and advanced rewriting.
📡 L4 Streams TCP/UDP forwarding for databases, game servers, and other non-HTTP services.
🛡️ Access Control Secure your services with IP Whitelists/Blacklists and Basic Authentication.
📊 Real-time Stats Live traffic monitoring, status codes, and historical data visualization.
🐳 Docker Ready Single-container deployment with a lightweight footprint.

🚀 Quick Start

The fastest way to get started is using Docker Compose.

1. Create docker-compose.yml

services:
  pingora-proxy:
    image: dduldduck/pingora-proxy-manager:latest
    container_name: pingora-proxy
    restart: always
    network_mode: host # Recommended for performance & L4 streams
    volumes:
      - ./data:/app/data        # Database & Certs
      - ./letsencrypt:/etc/letsencrypt # Certbot account, renewal, and live cert state
      - ./logs:/app/logs        # Access Logs
    environment:
      - JWT_SECRET=changeme_in_production_please
      - RUST_LOG=info

Note: We recommend network_mode: host for best performance and simplified port management. If you prefer bridge mode, ensure you map ports 80:8080, 443:443, and 81:81.

For Let's Encrypt, keep both ./data:/app/data and ./letsencrypt:/etc/letsencrypt mounted. HTTP-01 validation reaches PPM over host port 80, which the container forwards to the app's internal port 8080.

Advanced upstream controls

Proxy Hosts and Locations now support optional advanced upstream overrides in the UI:

  • connection_timeout_ms
  • read_timeout_ms
  • write_timeout_ms
  • max_request_body_bytes

If left blank, PPM keeps its current built-in defaults:

  • connection timeout: 500ms
  • read timeout: 10000ms
  • write timeout: 5000ms

Location-level values override host-level values. Upgrade/WebSocket requests continue to disable upstream read/write timeouts to avoid idle disconnects.

Optional: If you run PPM behind another reverse proxy

If your traffic path is Client -> Cloudflare/Nginx/ALB -> PPM, set PPM_TRUSTED_PROXY_IPS (or TRUSTED_PROXY_IPS) to the IP(s) of the immediate proxy hop. Otherwise, PPM only trusts loopback for forwarded headers and may not use X-Forwarded-For / X-Forwarded-Proto.

Example:

PPM_TRUSTED_PROXY_IPS=127.0.0.1,10.0.0.10

2. Start the Service

docker compose up -d

3. Access Dashboard

Visit http://localhost:81 (or your server IP) and log in:

  • Username: admin
  • Password: changeme

⚠️ Important: Please change your password immediately after logging in.

📚 Documentation

We have comprehensive documentation available in our GitHub Wiki:

🛠️ Development

Want to contribute or build from source?

Native Development

You can run the backend (Rust) and frontend (React/Vite) independently for faster iteration.

  1. Backend: cd backend && cargo run (Listens on 81 & 8080)
  2. Frontend: cd frontend && npm run dev (Proxies API to 81)

See the Development Setup guide for details.

❤️ Support the Project

Is Pingora Proxy Manager saving you time?

This project is built with love, caffeine, and many sleepless nights. If you'd like to support the development, server costs, and new features, consider buying me a coffee! ☕️

🤝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Please check our Contributing Guide for guidelines.

📄 License

Distributed under the MIT License. See LICENSE for more information.

Projets similaires

A reverse proxy like nginx, built on pingora, simple and efficient.

Rustpingorareverse-proxy
Vvicanso
1,4 k étoiles101

A library for building fast, reliable and evolvable network services.

Rust
Ccloudflare
27,5 k étoiles1,8 k

Sōzu HTTP reverse proxy, configurable at runtime, fast and safe, built in Rust. It is awesome!

Rusthttphttp-proxyperformance
Ssozu-proxy
3,7 k étoiles216