archettitechnology/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!

★ 0Forks 0TypeScriptGitHub ↗Compare

README

Pingora Proxy Manager

ppnicon-removebg-preview

Rust React TailwindCSS Docker License Donate

A high-performance, zero-downtime reverse proxy manager built on Cloudflare's Pingora.

Simple, Modern, and Fast. Now supports Wildcard SSL & TCP/UDP Streams!


✨ Features

  • ⚡️ 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.
image image image image

❤️ Support the Development

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! ☕️

Buy Me A Coffee

Your support keeps the code flowing.

🚀 Getting Started

Quick Start (Docker Hub)

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:latest

Using 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=info

Then run:

docker compose up -d

Access the Dashboard

  • Open your browser and go to http://localhost:81.
  • Default Credentials:
    • Username: admin
    • Password: changeme (Please change this immediately!)

🛠️ Building from Source

If you want to build the image yourself:

  1. Clone the repository:

    git clone https://github.com/dduldduck/pingora-proxy-manager.git
    cd pingora-proxy-manager
  2. Build and Start:

    docker compose up --build -d

🏗️ Architecture

  • Data Plane (8080/443): Pingora handles all traffic with high efficiency.
  • Control Plane (81): Axum serves the API and Dashboard.
  • SSL Management: Integrated Certbot for robust ACME handling.
  • State Management: ArcSwap for lock-free configuration reads.
  • Database: SQLite for persistent storage of hosts and certificates.

📦 Development

To run locally without Docker (requires Rust and Node.js):

Backend:

cd backend
cargo run

Frontend:

cd frontend
npm install
npm run dev

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributors

DDULDDUCKCopilotarchettitechnology

Issues