r3v3rs3, Rust ile yazılmış bir reverse proxy sunucusudur. TCP, UDP, TLS, HTTP ve WebSocket trafiğini proxy'ler, gelen HTTP/3 bağlantılarını da kabul eder. Taxy projesinin bir fork'udur.
Ayarları tarayıcıdan yaparsınız. Tek bir binary hem proxy'yi hem de İngilizce ve Türkçe WebUI'yi taşır; her port, proxy, sertifika ve hesap bu WebUI'de bir formdur. Değişiklik restart olmadan uygulanır. Aynı işlemler admin API üzerinden de yapılır. r3v3rs3 proxy'lerini Docker label'larından, Kubernetes Ingress'ten, Consul catalog'undan veya etcd key'lerinden de oluşturabilir.
Temel özellikler
Proxy
- TCP, UDP, TLS, HTTP/1.1 ve HTTP/2 proxy'leri. HTTP upgrade ve WebSocket bağlantıları da buna dahildir. Rust ile tokio ve hyper üzerine yazıldı.
- HTTP/3 desteği kısmidir: yalnız gelen QUIC bağlantıları kabul edilir. Upstream bağlantıları HTTP/2 veya HTTP/1.1 kullanır. WebTransport desteği yoktur.
- Host adına (tam, wildcard veya regex) ve path'e göre routing. Path rewrite, redirect kuralları ve redirect host ya da 404 host gibi fixed response'lar.
- Load balancing, aktif ve pasif health check, circuit breaker, sticky session, retry, upstream timeout ve traffic mirroring.
- DNS SRV kayıtlarından gelen upstream sunucuları (
http+srv://URL'leri). TTL bitince yenilenir. - Gelen bağlantılarda ve upstream sunuculara giden bağlantılarda PROXY protocol.
Güvenlik ve trafik kontrolü
- IP allow ve deny listeleri, istemci başına rate limit, request body boyut limiti. Bilinen CDN'lerin ve güvenilen proxy'lerin arkasında gerçek istemci IP'si bulunur.
- Basic, Bearer, forward ve yönetim paneli session authentication. Proxy'ler arasında paylaşılan erişim listeleri.
- Request ve response header kuralları, response sıkıştırma (brotli, zstd ve gzip) ve bellekte tutulan HTTP cache.
Sertifikalar
- Yüklenen veya self-signed server, client ve root sertifikaları.
- Mutual TLS: TLS portlarında client sertifikası doğrulanır, upstream sunuculara client sertifikası gönderilir.
- HTTP-01, TLS-ALPN-01 ve DNS-01 challenge'larıyla ACME v2 (örneğin Let's Encrypt). DNS-01, wildcard sertifikaları 12 DNS provider API'si, webhook, exec komutu veya RFC 2136 ile alır.
- Sertifika süresi uyarıları ve webhook bildirimleri.
Yönetim
- WebUI'ı içinde taşıyan tek bir binary. WebUI İngilizce ve Türkçedir. Config değişiklikleri yeniden başlatmadan uygulanır.
- OpenAPI dokümanı ve Swagger UI sunan yönetim API'si (Yönetim API'si).
admin,editorveviewerrolleri olan hesaplar, hesap başına proxy listesi ve audit log (Hesaplar).- Docker label'ları, Kubernetes Ingress ve
R3v3rs3Proxykaynakları, Consul ve etcd ile servis keşfi (Servis keşfi). - Yüksek erişilebilirlik: birden fazla node, etcd veya Consul'da şifreli tek bir state paylaşır (Kurulum rehberi, Cluster).
Kurulum
r3v3rs3'ü birkaç yolla kurabilirsiniz.
Linux sunucu
install.sh, son release binary'sini (x86_64 veya aarch64) sha256 kontrolüyle kurar, admin hesabını oluşturur ve r3v3rs3'ü systemd servisi olarak çalıştırır:
curl -fsSL https://raw.githubusercontent.com/KilimcininKorOglu/r3v3rs3/main/install.sh | sudo bash
Linux sunucuya kurulum rehberi option'ları, yolları, yükseltmeyi ve kaldırmayı anlatır.
Docker
İki volume ile tek container:
docker run -d \
-v r3v3rs3-config:/root/.config/r3v3rs3 \
-v r3v3rs3-data:/root/.local/share/r3v3rs3 \
-p 80:80 \
-p 443:443 \
-p 127.0.0.1:46492:46492 \
--restart unless-stopped \
--stop-signal SIGINT \
--name r3v3rs3 \
ghcr.io/kilimcininkoroglu/r3v3rs3:latest
Docker ile kurulum rehberi her option'ı, admin hesabını, Docker Compose'u ve yükseltmeyi anlatır.
Cargo binstall
cargo-binstall, platformunuza uygun hazır binary'yi indirip kurar. Hazır binary yoksa cargo install kullanır.
Önce cargo-binstall kurulu olmalıdır.
Ardından r3v3rs3'ü şu komutla kurabilirsiniz:
$ cargo binstall r3v3rs3
Cargo install
Rust toolchain kurulu olmalıdır. Kurulu değilse rustup.rs adresindeki talimatları izleyin.
crates.io paketinde WebUI statik asset olarak hazır gelir. Bu yüzden WebUI'ı kendiniz build etmeniz gerekmez; bunun için trunk ve wasm toolchain gerekirdi.
$ cargo install r3v3rs3
GitHub Releases
Linux için hazır binary'lerin (x86_64 ve aarch64) son sürümünü doğrudan releases sayfasından da indirebilirsiniz.
Arşivden çıkan binary'yi $PATH içindeki bir dizine koymanız yeterlidir.
Geliştirme
Ayrıntılar için Geliştirme bölümüne bakın.
İlk kurulum
Admin hesabı oluşturmak, sunucuyu başlatmak ve ilk proxy'nizi kurmak için Başlangıç rehberini izleyin.