Files
tchivert 2883ced5d0
docker / docker (push) Successful in 3m34s
Add README and LICENSE
2025-11-05 23:57:35 +01:00

3.7 KiB

rproxy

A lightweight, configurable HTTP and SOCKS5 proxy server with ACL support, custom DNS resolution, and flexible routing capabilities.

Features

  • Dual Protocol Support: HTTP (CONNECT & standard) and SOCKS5 proxy
  • ACL-based Access Control: Allow or deny requests based on domain patterns
  • Custom Outgoing IPs: Route traffic through specific IPv4/IPv6 addresses
  • ACL-based Routing: Route specific domains through different outgoing IPs
  • Custom DNS Resolution: Use custom DNS servers instead of system defaults
  • Hosts File Support: Override DNS with system hosts file entries
  • Flexible Logging: Multiple log levels for debugging and monitoring

Installation

Using Docker Compose:

# Clone the repository
git clone https://git.rznet.fr/tchivert/rproxy.git
cd rproxy

# Edit rproxy.conf to suit your needs
vim rproxy.conf

# Start the proxy
docker compose up -d

Binary

Download the latest binary for your platform from releases:

# Download binary (example for Linux amd64)
wget https://git.rznet.fr/tchivert/rproxy/releases/download/latest/rproxy-linux-amd64
chmod +x rproxy-linux-amd64
mv rproxy-linux-amd64 /usr/local/bin/rproxy

# Create config directory
sudo mkdir -p /etc/rproxy

# Download example config
sudo wget -O /etc/rproxy/rproxy.conf https://git.rznet.fr/tchivert/rproxy/raw/branch/main/rproxy.conf

# Run the proxy
rproxy /etc/rproxy/rproxy.conf

Configuration

The proxy is configured via a simple text file (default: /etc/rproxy/rproxy.conf).

Basic Configuration

# Bind address (default: all interfaces)
# addr 0.0.0.0    # IPv4
# addr ::         # IPv6

# Ports
http_port 3128
socks_port 1080

# Enable protocols (default: http only)
proto http socks  # Enable both HTTP and SOCKS5

# Log level: 0=silent, 1=system, 2=warnings, 3=full
log_level 1

# Allow all requests
req_allow all

Access Control Lists (ACLs)

Block or allow specific domains:

# Define ACL patterns (supports wildcards)
acl blocked badsite.com
acl blocked *.malware.com

# Deny requests matching ACL
req_deny blocked

# Allow everything else
req_allow all

Custom Outgoing IP

Route traffic through specific network interfaces:

# Default outgoing IP for all traffic
net_out 192.168.1.100

# Or specify IPv6
net_out 2001:db8::1

ACL-based Routing

Route specific domains through different IPs (useful for VPNs):

# Define ACL for VPN traffic
acl vpn iplk.fr
acl vpn *.streaming-service.com

# Route VPN ACL through specific IP
net_out 10.8.0.2 vpn

# IPv6 example
net_out 2001:db8::100 vpn

Custom DNS

Use custom DNS servers instead of system defaults:

# Single or multiple DNS servers
dns_servers 1.1.1.1 9.9.9.9

# With custom ports
dns_servers 9.9.9.9:53 1.1.1.1:53

System Hosts File

Use system /etc/hosts for DNS resolution:

system_hosts true

Usage

HTTP Proxy

Configure your application to use HTTP proxy:

# Test with curl
curl -x http://localhost:3128 https://iplk.fr

SOCKS5 Proxy

Configure your application to use SOCKS5 proxy:

# Test with curl
curl --socks5 localhost:1080 https://iplk.fr

Configuration File Location

By default, rproxy looks for /etc/rproxy/rproxy.conf. You can specify a different location:

rproxy /path/to/custom/config.conf

Log Levels

  • 0 - Silent (no logs)
  • 1 - System (startup and errors only)
  • 2 - Warnings (system + warnings)
  • 3 - Full (all requests and connections)

License

This project is licensed under the MIT License. See the LICENSE file for more information.