mrkeyoor.com_
Fri 25 Sept 04:42 UTC
Self-Hostedevaluationupdated 25 Sept 2026

v2ray-core review

V2Ray Core is a command-line proxy engine for building encrypted client and server routes across restrictive or complicated networks. It accepts traffic through configured inbound protocols, sends it through selected outbound connections, and can make those choices with DNS, domain, IP, port, user, or protocol rules.

Verdict

Our V2Ray Core run passed all 167 tests after a 54-second install and 75-second build, which makes the source tree a credible base for an engineer who needs programmable proxy routing. Use it when protocol choice and selective routing justify owning paired JSON files, a remote server, DNS behavior, and transport matching. Pick a dedicated VPN or narrower proxy when the goal is simply to move all device traffic through one tunnel.

We ran it

Lab card: what happened when we ran v2ray-coreScreenshot of v2ray-core (v2fly.org)
Install✓ · 54s429 packages
Build✓ · 75s
Tests✓ · 234s167 passed · 0 failed of 167 (go test)
Repo1480 files~165,436 lines of source · 6.7 MB · 6 CI workflows

Answers from our run

Does v2ray-core build from source?

Dependencies installed in 54 seconds (429 packages), and the build succeeded in 75 seconds. We cloned commit e29ac2e into a clean Debian container with 3 CPUs and no project-specific setup.

Do v2ray-core's tests pass?

Yes: 167 of 167 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use v2ray-core?

People who want a click-to-connect VPN app: the official newcomer guide starts with a remote server, paired client and server JSON, and a separately configured browser proxy.

What are the alternatives to v2ray-core?

Xray-core, sing-box, shadowsocks-rust. Our V2Ray Core run passed all 167 tests after a 54-second install and 75-second build, which makes the source tree a credible base for an engineer who needs programmable proxy routing.

Setup3/5Build passed; paired server and client configuration takes care
Docs4/5Detailed reference, though newcomers still face a wide config surface
Community5/534,621 stars and issue activity through September 2026
Maturity5/5167 tests passed and releases continue on the v5 line

Discussed on

  1. hnV2ray-Core: Open-Source Platform to Bypass Network Restrictions4 points

Who it’s for

Network engineers who need several inbound, outbound, and transport choices in one process.
Self-hosters prepared to operate both a remote server and client-side JSON configuration.
Teams that need split routing by domain, IP range, port, user, or detected protocol.
Go developers who want an actively maintained proxy core they can build and test from source.

Who it’s NOT for

People who want a click-to-connect VPN app: the official newcomer guide starts with a remote server, paired client and server JSON, and a separately configured browser proxy.
Operators who need a full DNS resolver inside the same process: the DNS documentation limits the built-in server to A and AAAA queries and points readers to software such as CoreDNS for more.
Anyone planning to expose the plain HTTP inbound on the public internet: the protocol documentation says it is unencrypted and warns that a public listener can be abused.
Teams that want one simple tunnel with minimal policy surface: V2Ray's documented configuration spans inbounds, outbounds, routing, DNS, transport, policy, statistics, and reverse proxy settings.

Setup reality

Our sandbox installed 429 Go packages in 54 seconds, built the project in 75 seconds, and completed the tests in 234 seconds. All 167 reported tests passed. The commit e29ac2e checkout was 6.7 MB and contained 1,480 files with about 165,436 lines of source.

Running a useful route takes more than the successful build. The official starter path requires a reachable server, matching client and server IDs and ports, JSON configuration on both ends, and a browser or operating-system proxy pointed at the local listener.

The repository had 6 CI workflow files but no Dockerfile or top-level tests directory in our scan. Official packages cover several operating systems and CPU families. DNS and transport settings have sharp edges: the built-in DNS server handles only A and AAAA queries, and both ends must agree on the transport.

V2Ray is a proxy construction kit, not a one-button VPN

V2Ray Core gives you a set of network pieces: inbound listeners, outbound connections, routing rules, transports, DNS handling, statistics, and a remote-control API. You assemble those pieces in configuration rather than selecting a country in a desktop app. That distinction matters. A network engineer can send one class of traffic directly, block another, and proxy the rest through a remote node. Someone who only wants every packet sent through one tunnel inherits many decisions they did not need.

The official newcomer guide shows the basic arrangement with 2 configurations. A server listens for VMess traffic and sends it through the freedom outbound. A client exposes a local SOCKS listener, connects to the server, and routes private IP ranges directly. The ID and port must match at both ends, and your browser must use the local proxy. It is understandable once drawn out, but it is still infrastructure you own.

The routing rules can express useful policy without another proxy layer

Routing is the strongest reason to choose this core. Rules can match domains, IP ranges, ports, source addresses, users, inbound tags, and detected HTTP, TLS, or BitTorrent traffic. Domain entries support exact names, subdomains, regular expressions, and maintained geosite lists. The first matching rule selects an outbound or balancer. When no rule matches, traffic uses the first configured outbound, so ordering deserves the same review you would give firewall rules.

That flexibility reaches beyond a simple home tunnel. One process can keep private networks direct, send selected domains through a proxy, and reject unwanted destinations. The documented mph matcher targets large domain sets, while GeoIP and geosite data cover regional choices. Those data files become part of the deployment: an outdated category can produce a technically correct route to the wrong destination. The configuration should therefore be versioned beside the binary and checked after data updates.

What happened when we ran it

Our sandbox installed 429 Go packages in 54 seconds at commit e29ac2e. The build succeeded in 75 seconds, then the test command finished in 234 seconds with 167 passed and 0 failed. This was an unprivileged Debian container with 3 CPUs and 8 GB of RAM. The result says the checked-out source compiled and passed its reported suite in a clean environment. It does not measure proxy throughput, connection latency, or resistance to blocking.

The checkout itself was 6.7 MB, with 1,480 files and roughly 165,436 lines of source. We found 6 CI workflow files, no Dockerfile, and no top-level tests directory. The successful Go test run matters more than the folder name, but container-first teams will need to supply their own image recipe or use a separately published package. No credentials were needed for the source checks. A real route still needs server access and matching configuration.

Built-in DNS handles routing needs, not every resolver job

V2Ray's DNS server exists mainly to resolve connection targets and support routing decisions. The official reference says it handles basic A and AAAA queries. It also documents several ways to send DNS traffic, including local and routed DNS over HTTPS modes, and warns that the freedom outbound uses AsIs by default. If you expect configured DNS rules to affect that outbound, you need to choose the corresponding IP strategy yourself.

The limit is plain: this is not a complete DNS server. The documentation points readers toward a dedicated resolver such as CoreDNS for a fuller DNS setup. That means a sophisticated deployment may have 2 policy systems to inspect, one for name resolution and another for proxy routing. Test both the answer and the chosen outbound for important domains. A connection that succeeds can still have bypassed the resolver or route you intended.

Public HTTP listeners are the wrong edge for this core

The HTTP protocol page says its proxy transport is unencrypted and unsuitable for the public network. It also warns that a public HTTP inbound can become a target for abuse. Keep such listeners on localhost or a controlled LAN, use authentication where the configuration supports it, and place an appropriate encrypted path between untrusted networks. V2Ray provides choices, but it cannot make an unsafe listener safe through naming or default placement.

Transport settings create another paired obligation. The documentation says both ends generally need the same transport, such as WebSocket on each side. TLS certificates, file paths, ports, and stream settings then become operating concerns. Version 5.53.0 added stream-based packet addressing for UDP connections and session work in rrpit, evidence that this layer continues to change. Read release notes before rolling one side forward while leaving the other untouched.

September 2026 activity supports adoption, with configuration still on you

GitHub showed 34,621 stars and 32 open issues and pull requests when we fetched the repository. The last push was September 23, 2026, less than 2 months after v5.53.0 was published on August 2. Recent open work included DNS over HTTP/3 and protocol requests, while the release itself included dependency updates alongside networking changes. That is active maintenance, and the combined open count should not be read as 32 confirmed bugs.

V2Ray Core earns its place when routing policy is the product requirement. The passing 167-test run lowers the risk of building from source, and the active v5 branch shows ongoing work. The cost appears after compilation: every inbound, outbound, DNS choice, and transport pair becomes yours to secure and monitor. If that control solves a real network problem, V2Ray is a serious option. If it does not, WireGuard or a focused Shadowsocks server will be easier to explain at 3 a.m.

Alternatives

ProjectWhat it isPick it when
Xray-core gh↗A related proxy core with its own protocol and transport choices.pick this instead when your required client stack or server design depends on Xray-specific features such as REALITY.
sing-box gh↗A universal proxy platform with a single configuration model across many protocols.pick this instead when its supported clients and newer configuration model fit your deployment better.
shadowsocks-rustA Rust implementation focused on the Shadowsocks proxy protocol.pick this instead when you need a narrower Shadowsocks service and do not need V2Ray's routing matrix.
WireGuard toolsThe official command-line tools for a small, general-purpose VPN tunnel.pick this instead when whole-device IP tunneling is the job and application-aware proxy routing is unnecessary.

What people are saying

  1. [github-trending] v2fly/v2ray-core

Sources

  1. V2Ray Core repository
  2. V2Ray newcomer guide
  3. V2Ray configuration overview
  4. V2Ray routing reference
  5. V2Ray DNS reference
  6. V2Ray HTTP protocol reference
  7. V2Ray Core v5.53.0 release

More self-hosted reviews

wg-easy · probo · autobrr · AgentENV · LibreChat · hosts · the whole board →