Professional SOCKS5(h) & HTTP IPv6 proxy server
Run your own high-performance IPv6 proxy server with smart rotation, load balancing and API control. Generate millions of accounts.
What the server does
Everything needed to run a dependable proxy
SOCKS5(h) & HTTP
Full SOCKS5(h) support with DNS leak protection, plus HTTP CONNECT. Hybrid mode accepts both protocols on a single port at once.
Multi-profile p0f
Every p0f fingerprint — Windows, macOS, mobile — is available at once on separate ports. Route traffic through the OS you need without restarts or profile switching.
UDP & QUIC
Full UDP and QUIC (HTTP/3) support, conforming to the RFCs, with no performance penalty.
Multiple subnets
Flexible balancing of outbound traffic across many IPv6 subnets with configurable weights.
Lazy rotation
The IP changes only on re-authentication. Active sticky sessions are never interrupted.
Smart DNS failover
Built-in resolver with balancing and automatic failover to backup DNS servers.
A practical API
HTTP API for instant credential generation, statistics and a live graphical dashboard.
Access control
Allow and block lists for precise traffic filtering, blocking whole domains or IP addresses.
Traffic shaping
Built-in rate limiter with burst support. Keeps a single tenant from saturating the link and keeps every connection stable.
MITM mode: the fingerprint of a real browser
At the TLS and HTTP layers the traffic looks like genuine Chrome, Firefox or Safari
Browser network fingerprint
The MITM profile reproduces the fingerprint of a real Chrome, Firefox or Safari across every layer: JA4 in full, HTTP/2 and Akamai. Header set and header order match the real browser.
Your own CA
The server terminates TLS with its own certificate authority. The client trusts that CA once — it is downloaded from the server — and from then on all HTTPS traffic carries the chosen browser profile.
One port, every OS
A single MITM port serves every OS at once — Windows, macOS, Linux, mobile — picking the profile automatically from the client browser. Accounts, QoS and IPv6 rotation are shared with the regular modes.
How it is put together
How OxidProxy routes traffic
OxidProxy is installed on your own server, VPS or dedicated, and acts as a gateway. It accepts connections from your software over IPv4, authenticates them, resolves DNS through its built-in resolver, and sends the traffic out through one of the attached IPv6 subnets according to the configured weights.
Licence pricing
Priced per server instance
Annual
- One licence per server
- Saves $110 a year
- Every feature included
- Software updates
* Prices are in USD.
Download
Get the current release
Platform: Debian 12 (x64)
curl -fsSL https://oxidproxy.com/downloads/install.sh | bash
Deploying with an AI agent? Hand it this instruction — it will ask what it needs and set the server up itself.
Manual installation
| Package | Version | MD5 | Size |
|---|---|---|---|
| OxidProxy | … | … | … |
| Kernel (p0f) | … | … | … |
| Headers | … | … | … |
Changelog
Show ▼- [CHG] Config check without a path:
oxidproxy -tchecks the installed configuration at/etc/oxidproxy/config.yaml; no path required. - [CHG] Network profiles improved: connection characteristics are closer to real networks and profile behaviour is more natural.
- [ADD] Listener selected by port in
/allocate. Theportparameter names the listener exactly, which matters when several listeners share one profile and differ in their settings. Theosparameter keeps working. - [ADD] Parameter checking in
/allocate: a port or profile that is not in the configuration is answered with 400 and a list of what is configured. - [ADD] Configuration is checked at startup. The service points at unfilled mandatory fields at once and will not start while
license_key,master_tokenorpublic_ipstill hold template values. - [ADD] New DNS resolver: a shared cache across all listeners, per-server availability tracking and a parallel query to a backup. Resolution is faster and steadier, and the range of supported names is wider.
- [ADD] Detailed DNS statistics in
/stats: each server reports its state, weight and the kind of failures it returns. - [CHG] Browser mode improved: higher accuracy and better site compatibility; large uploads use less memory.
- [CHG] UDP mode optimised: session reliability and network compatibility improved.
- [CHG] HTTP mode optimised: better resilience under load and wider client compatibility.
- [CHG] SOCKS5 returns precise reply codes — the client is told the actual reason a connection did not happen.
- [CHG] Standard API status codes:
/allocate,/statsand/dashboardreturn 401 for a wrong token and 400 for an invalid request. - [CHG] iOS profiles brought in line with real devices.
- [CHG] Dashboard: dark theme readability improved.
Configuration
Full control through config.yaml Show ▼
# ==========================================
# OxidProxy Configuration File
# Doc: https://oxidproxy.com/downloads/Readme.txt
# Support: support@oxidproxy.com
# https://t.me/OxidProxy_com
# ==========================================
# ------------------------------------------
# 1. General settings and licensing
# ------------------------------------------
# [!!! IMPORTANT !!!] Your license key
license_key: "PUT_YOUR_KEY_HERE"
# Additional license servers. NOT required: the regular endpoints are built
# into the server itself, across two independently registered domains.
#
# Fill this in only if support gives you a specific address, for example if
# the usual endpoints become unreachable from your network. Entries here are
# tried BEFORE the built-in ones, so a working address takes effect at once.
#
# license_servers:
# - "backup.example.com:8000"
# Interface to accept incoming connections on (0.0.0.0 = all interfaces)
listen_ip: "0.0.0.0"
# [!!! IMPORTANT !!!] Public IPv4 address of this server.
# Used to build connection strings and API responses.
public_ip: "YOUR_EXTERNAL_IPV4"
# External network interface for kernel-level QoS (latency, jitter).
# Left commented out, the interface is detected automatically via the
# default gateway.
# ext_iface: "eth0"
# Ports and OS fingerprint profiles.
# mode: "socks" (default), "http", or "hybrid" (SOCKS5 + HTTP on one port)
# In hybrid mode the protocol is detected from the first byte of the
# connection. All profile features (p0f, TOS, congestion control and so on)
# behave identically in every mode.
#
# CHANGING THE FINE-TUNING PARAMETERS WITHOUT UNDERSTANDING THEM CAN LEAD TO
# UNPREDICTABLE RESULTS.
listeners:
- port: 1080
os_preset: "linux"
# mode: "socks" # may be omitted (this is the default)
- port: 1081
os_preset: "android"
mode: "hybrid" # accepts both SOCKS5 and HTTP CONNECT on one port
# [Network "physics" fine-tuning]
tcp_congestion: "bbr"
tcp_window_size: 1048576
latency_base_ms: 60
jitter_ms: 30
tos: 10
- port: 1082
os_preset: "windows"
mode: "hybrid"
- port: 1083
os_preset: "ios"
mode: "hybrid"
# [Network "physics" fine-tuning]
tcp_congestion: "cubic"
tcp_window_size: 2097152
latency_base_ms: 40
jitter_ms: 20
tos: 8
- port: 1084
os_preset: "macos"
mode: "hybrid"
# MITM ports: the server terminates client TLS with its own CA and rebuilds
# the request to the target with the network fingerprint of a real browser.
# The profile is picked automatically from the client User-Agent, so a single
# port serves every OS and browser.
#
# Profiles are named <os>-<browser>:
# windows-chrome, windows-firefox, windows-edge
# macos-chrome, macos-firefox, macos-safari
# linux-chrome, linux-firefox
# android-chrome, android-firefox
# ios-safari
#
# The client must trust the server CA once (download it from GET /ca),
# otherwise the browser reports a certificate error.
#
# mitm_listeners:
# - port: 9443
# profiles:
# - "windows-chrome"
# - "windows-firefox"
# - "macos-safari"
# - "android-chrome"
# - "ios-safari"
# default: "windows-chrome" # used when the User-Agent is not recognised
# # strict: false # true = refuse instead of falling back to default
# # mode: "hybrid" # socks / http / hybrid, as for regular listeners
# ------------------------------------------
# 2. IPv6 settings and rotation
# ------------------------------------------
# [!!! IMPORTANT !!!] IPv6 subnets used for outgoing traffic.
# weight: the higher the number, the more often the subnet is used.
ipv6_subnets:
- cidr: "2a01:xxxx::/32"
weight: 427
# Example of a second subnet (remove the # to enable):
# - cidr: "2a02:yyyy:yyyy:yyyy::/64"
# weight: 16
# Rotation interval, in minutes.
# 0 = disabled (the IP stays the same until restart).
# "Lazy rotation" is used: the IP changes when the user authenticates
# again, and active connections are NOT dropped.
rotation_interval: 0
# ------------------------------------------
# 3. API and user management
# ------------------------------------------
# Port for API commands (creating users, statistics)
api_port: 8080
# [RECOMMENDED] Port for the secured API (HTTPS)
api_port_https: 8443
# [!!! IMPORTANT !!!] Secret token for API access. Minimum 12 characters.
master_token: "change_me_to_secure_token"
# Maximum number of unique generated accounts
max_accounts: 100000
# Where to store generated accounts.
# The variables [port], [os] and [mode] split the output by port, OS and
# protocol. Hybrid listeners produce two files: one with socks5:// links
# and one with http:// links.
# If more than one file will be produced, ALL THREE variables are required
# or the server refuses to start.
accounts_file: "/var/lib/oxidproxy/accounts_[os]_[mode]_[port].txt"
# Seed for account generation.
# Uncomment to keep logins and passwords stable across restarts: every
# account_seed value yields its own fixed set of credentials.
# Accepts values from 0 to 2^64 - 1.
account_seed: 123456789
# ------------------------------------------
# 4. DNS resolver
# ------------------------------------------
# Supports weighted balancing and failover servers.
# RECOMMENDED: add your hosting provider's DNS as a primary server
# (weight > 0). You can usually find them in /etc/resolv.conf.
dns:
timeout: 2 # response timeout, seconds
cache_size: 8000 # number of cached DNS records
# Do not log a warning when a domain has no IPv6 (AAAA) record.
suppress_aaaa_not_found: true
servers:
# === Primary servers (weighted) ===
# When weight is set, traffic is distributed between them.
- address: "[2606:4700:4700::1111]:53" # Cloudflare IPv6
weight: 58
- address: "1.1.1.1:53"
weight: 7
# Example of a local provider DNS (recommended):
# - address: "10.0.0.53:53"
# weight: 1000
# === Failover servers ===
# Used ONLY when the primary servers are unreachable.
# Failover servers have no weight parameter.
- address: "[2620:fe::fe]:53" # Quad9 IPv6
- address: "9.9.9.9:53" # Quad9
# ------------------------------------------
# 5. Traffic shaping and tuning
# ------------------------------------------
# Limits the TOTAL bandwidth of the server (all users combined).
shaping:
# Rate in bytes per second (0 = unlimited)
# Cheat sheet:
# 1 Mbit/s = 125000
# 10 Mbit/s = 1250000
# 100 Mbit/s = 12500000
rate: 0
# Burst, in bytes.
# Allows briefly exceeding the rate limit so small files load instantly.
# Recommended: rate * 2.
# Ignored when rate is 0 (unlimited).
burst: 0
# ------------------------------------------
# 6. Connection timeouts
# ------------------------------------------
timeouts:
# How long (seconds) to wait for active connections to finish when the
# server is stopped or restarted
shutdown: 10
# Maximum idle time (seconds) of a TCP/UDP session before it is closed
idle: 300
# ------------------------------------------
# 7. Monitoring and logs
# ------------------------------------------
# File listing blocked domains and IP addresses
blocked_file: "/etc/oxidproxy/blacklist.txt"
# Service account, intended for checkers and monitoring.
# It can reach only the domain listed below.
service_account:
enabled: true
login: "checker"
password: "strong_password"
allowed_domain: "ifconfig.me"
log:
dir: "/var/log/oxidproxy"
level: "info" # one of: debug, info, warn, error
HTTP API
Integration and monitoring
# SOCKS5 (default)
/allocate?token=TOKEN&os=android
→ socks5://user123:pass456@1.2.3.4:1081
# HTTP CONNECT
/allocate?token=TOKEN&os=android&mode=http
→ http://user123:pass456@1.2.3.4:1081
uptime_seconds: 9980,
active_connections:
tcp: 56,
udp: 4
traffic:
ingress_bytes: 264074969,
egress_bytes: 35524983
dns:
total_queries: 18905,
cache_hits: 11116,
cache_usage: 372,
cache_capacity: 8000
events:
total_connections: 18963,
connection_errors: 12,
access_denied: 0,
blocked_domains: 0
license:
expires_at_unix: 1770484105,
days_left: 29,
servers:
license-node-1:8000: "online",
license-node-2:8000: "online"
Frequently asked questions
What is MITM mode?
In MITM mode the server terminates TLS with its own certificate and rebuilds the request to the target site with the network fingerprint of a real browser — Chrome, Firefox or Safari (JA4, HTTP/2, Akamai). The profile is selected from the client User-Agent, so a single port serves every OS. Regular SOCKS5 and HTTP listeners keep working exactly as before.
Do I need to install a certificate for MITM mode?
Yes. Because TLS is terminated with our own certificate authority, the client has to add the CA certificate to its trust store once — otherwise the browser reports a certificate error. The dashboard has a MITM card with a download button. Plain SOCKS5 and HTTP modes need no certificate.
Why is only Debian 12 supported?
OS fingerprint substitution (p0f) relies on a purpose-built custom Linux kernel, which is what makes the stability and performance possible. It is currently compiled and tested for Debian 12 (Bookworm) only.
The proxy will not start after I edited the config
Check the config with oxidproxy -t /etc/oxidproxy/config.yaml. If it reports an error, copy the whole file and run it through the validator.
Why do some sites fail to open?
OxidProxy proxies over IPv6 only. Make sure the target site is reachable over IPv6, that is, has an AAAA record.
Why does the IP not change on every request?
Sessions are sticky: the IP is bound to the session. To get a new one,
reconnect after rotation_interval has elapsed, or request fresh
credentials through the API.
How many accounts can be generated?
Anywhere from one to several million accounts, each with its own unique IP.
What is the granularity of the speed limit?
The rate can be set with a granularity of 1 B/s. A burst allowance, measured in bytes, can be configured as well.
Can I block access to certain sites?
Yes. The blacklist.txt file takes domains, IP addresses and networks that should be unreachable.
Is an HTTP proxy supported?
Yes. HTTP CONNECT is supported for browsers, curl and system proxy
settings. hybrid mode accepts both protocols on a single port,
detecting which is in use automatically. Every feature — p0f, DNS, shaping —
behaves identically for both.