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

Your software
SOCKS5h & HTTP client
OxidProxy server
Auth • Smart DNS • Shaping
IPv6 subnet A
Weight: 100
IPv6 subnet B
Weight: 50
INTERNET
Target Resource

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

Monthly

$30* / month
  • One licence per server
  • Every feature included
  • Software updates
Buy a licence

* 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

PackageVersionMD5Size
OxidProxy
Kernel (p0f)
Headers

Changelog

Show
v2.4.1
09.09.2026
  • [CHG] Config check without a path: oxidproxy -t checks 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. The port parameter names the listener exactly, which matters when several listeners share one profile and differ in their settings. The os parameter 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_token or public_ip still 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, /stats and /dashboard return 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

GET
/allocate?token=YOUR_TOKEN
Returns a fresh connection string, SOCKS5 or HTTP. Example
# 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
GET
/dashboard?token=YOUR_TOKEN
Live graphical dashboard for the server. Screenshot
OxidProxy Dashboard
GET
/stats?token=YOUR_TOKEN
Returns full server statistics. Example
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.