tchivert 2883ced5d0
docker / docker (push) Successful in 3m34s
Add README and LICENSE
2025-11-05 23:57:35 +01:00
2025-10-31 14:50:00 +01:00
2025-10-31 14:50:00 +01:00
2025-11-05 14:07:18 +01:00
2025-10-31 14:50:00 +01:00
2025-11-05 23:57:35 +01:00
2025-11-05 23:57:35 +01:00
2025-11-05 14:07:18 +01:00
2025-11-05 14:07:18 +01:00

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.

Description
Lightweight HTTP and SOCKS5 proxy server
Readme MIT 41 KiB
v1.1 Latest
2025-11-05 13:07:18 +00:00
Languages
Go 98.9%
Dockerfile 1.1%