https://github.com/ipmartnetwork/ratholepro
Next-generation high-performance reverse proxy tunnel with built-in multiplexing, multi-transport encryption, UDP forwarding, load balancing, P2P NAT traversal, and HTTP proxy support. Engineered for raw speed, zero-compromise security, and dead-simple deployment.
https://github.com/ipmartnetwork/ratholepro
Last synced: about 2 months ago
JSON representation
Next-generation high-performance reverse proxy tunnel with built-in multiplexing, multi-transport encryption, UDP forwarding, load balancing, P2P NAT traversal, and HTTP proxy support. Engineered for raw speed, zero-compromise security, and dead-simple deployment.
- Host: GitHub
- URL: https://github.com/ipmartnetwork/ratholepro
- Owner: iPmartNetwork
- License: other
- Created: 2026-06-10T10:47:35.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2026-06-10T11:31:25.000Z (2 months ago)
- Last Synced: 2026-06-10T13:15:32.490Z (2 months ago)
- Language: Shell
- Size: 69.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RatholePro
**By iPmart Network (Ali Hassanzadeh)**
> **RatholePro** — Next-generation high-performance reverse proxy tunnel built in Go with real yamux multiplexing, multi-transport encryption (TLS / Noise / WebSocket / wss), auto-TLS, and UDP forwarding. Single binary, zero config headache.
[](https://github.com/iPmartNetwork/RatholePro/stargazers)
[](https://github.com/iPmartNetwork/RatholePro/blob/master/LICENSE)
[](https://github.com/iPmartNetwork/RatholePro/releases)
---
## Features
| Category | Features |
|----------|----------|
| **Core** | Real yamux multiplexing (single TCP, many streams) |
| **Transports** | TCP, TLS (auto-cert!), Noise (X25519 + AES-256-GCM), WebSocket, WebSocket-over-TLS (wss) |
| **Protocols** | TCP forwarding, UDP forwarding |
| **Security** | SHA-256 token auth, TLS 1.2+ (auto-generated cert), authenticated X25519/AES-256-GCM "Noise" transport |
| **Networking** | IPv6 |
| **Operations** | Auto reconnect, yamux keepalive, Systemd service, Menu-driven installer |
---
## Quick Install (Linux)
```bash
bash <(curl -Ls https://raw.githubusercontent.com/iPmartNetwork/RatholePro/master/install.sh)
```
---
## Manual Download
Download from [Releases](https://github.com/iPmartNetwork/RatholePro/releases/latest):
| Platform | Architecture | File |
|----------|-------------|------|
| Linux | x86_64 (AMD/Intel) | `rathole-pro-linux-amd64` |
| Linux | ARM64 (aarch64) | `rathole-pro-linux-arm64` |
| Linux | ARMv7 (32-bit) | `rathole-pro-linux-armv7` |
| Linux | MIPS64 | `rathole-pro-linux-mips64` |
| Linux | MIPS | `rathole-pro-linux-mips` |
| Windows | x86_64 | `rathole-pro-windows-amd64.exe` |
| macOS | x86_64 (Intel) | `rathole-pro-darwin-amd64` |
| macOS | ARM64 (Apple Silicon) | `rathole-pro-darwin-arm64` |
```bash
wget https://github.com/iPmartNetwork/RatholePro/releases/latest/download/rathole-pro-linux-amd64
chmod +x rathole-pro-linux-amd64
sudo mv rathole-pro-linux-amd64 /usr/local/bin/rathole-pro
```
---
## Build from Source
Requires Go 1.22+:
```bash
git clone https://github.com/iPmartNetwork/RatholePro.git
cd RatholePro/go-core
go build -ldflags="-s -w" -o rathole-pro .
sudo mv rathole-pro /usr/local/bin/
```
---
## Usage
```bash
# Server mode
rathole-pro server.toml
# Client mode
rathole-pro client.toml
# Validate config
rathole-pro --validate server.toml
# Generate Noise keypair
rathole-pro --gen-key
# Show version
rathole-pro --version
```
---
## Configuration Examples
### Basic TCP Tunnel
**Server** (public IP — Iran):
```toml
[server]
bind_addr = "0.0.0.0:2333"
default_token = "my_secret_token"
[server.services.web]
bind_addr = "0.0.0.0:8080"
```
**Client** (behind NAT — Kharej):
```toml
[client]
remote_addr = "IRAN_IP:2333"
default_token = "my_secret_token"
retry_interval = 3
mux_connections = 4
[client.services.web]
local_addr = "127.0.0.1:8080"
mux_streams = 8
```
---
### TLS with Auto-Cert (no domain needed!)
**Server:**
```toml
[server.transport]
type = "tls"
[server.transport.tls]
auto_cert = true
```
**Client:**
```toml
[client.transport]
type = "tls"
[client.transport.tls]
# Nothing needed! Encryption active, no cert file required.
```
> Certificate is auto-generated on first run. No domain, no manual setup.
---
### TLS with Custom Cert
```toml
[server.transport]
type = "tls"
[server.transport.tls]
trusted_root = "/etc/certs/cert.pem"
pkcs12 = "/etc/certs/key.pem"
```
---
### Noise Protocol (no certificates!)
```toml
# Server
[server.transport]
type = "noise"
[server.transport.noise]
local_private_key = "BASE64_PRIVATE_KEY"
# Client
[client.transport]
type = "noise"
[client.transport.noise]
remote_public_key = "BASE64_PUBLIC_KEY"
```
Generate keys: `rathole-pro --gen-key`
---
### WebSocket (bypass firewalls)
```toml
[server.transport]
type = "ws"
[server.transport.websocket]
path = "/tunnel"
```
---
### WebSocket over TLS / wss (CDN bypass: Cloudflare, ArvanCloud)
```toml
# Server
[server.transport]
type = "wss"
[server.transport.tls]
auto_cert = true
[server.transport.websocket]
path = "/tunnel"
# Client
[client.transport]
type = "wss"
[client.transport.tls]
hostname = "your-server.com"
[client.transport.websocket]
path = "/tunnel"
```
---
### UDP Forwarding (WireGuard, games, DNS)
```toml
# Server
[server.services.wireguard]
type = "udp"
bind_addr = "0.0.0.0:51820"
# Client
[client.services.wireguard]
type = "udp"
local_addr = "127.0.0.1:51820"
```
---
## Architecture
```
Transport Layer
(TCP / TLS / Noise / WebSocket)
│
┌────┴────┐
│ yamux │ ← single TCP connection, many streams
└────┬────┘
│
Visitor ─► [Server:8080] ──┼──► stream 1 ──► [Client] ──► [127.0.0.1:8080]
Visitor ─► [Server:8080] ──┼──► stream 2 ──► [Client] ──► [127.0.0.1:8080]
Visitor ─► [Server:5022] ──┼──► stream 3 ──► [Client] ──► [127.0.0.1:22]
UDP pkt ─► [Server:51820] ─┼──► stream 4 ──► [Client] ──► [127.0.0.1:51820]
```
---
## Install Script Menu
```
╔═══════════════════════════════════════════════════════════╗
║ Rathole Pro v0.4.0 (Go + Yamux) ║
║ Transports: TCP │ TLS (auto-cert) │ Noise │ WebSocket ║
║ Developer: iPmart Network (Ali Hassanzadeh) ║
╚═══════════════════════════════════════════════════════════╝
1) Install Binary
2) Configure IRAN Server (users connect here)
3) Configure KHAREJ Server (services run here)
4) Start / 5) Stop / 6) Restart
7) Status / 8) Logs / 9) View Config
10) Update / 11) Uninstall
0) Exit
```
---
## Comparison
| Feature | rathole | frp | Backhaul | **RatholePro** |
|---------|---------|-----|----------|----------------|
| Yamux Multiplexing | ✗ | ✗ | ✓ | ✓ |
| TLS Auto-Cert | ✗ | ✗ | ✗ | ✓ |
| Noise Protocol | ✓ | ✗ | ✗ | ✓ |
| WebSocket / wss | ✓ | ✗ | ✓ | ✓ |
| UDP Forward | ✓ | ✓ | ✓ | ✓ |
| IPv6 | Partial | ✓ | ✗ | ✓ |
| Install Script | ✗ | ✗ | ✗ | ✓ |
| Single Binary | ✓ | ✓ | ✓ | ✓ |
---
## License
Apache-2.0 — [iPmart Network (Ali Hassanzadeh)](https://github.com/iPmartNetwork)