v2rayN · v2rayNG · v2flyNG

V2Ray Setup Guide v2rayN Setup & Subscription Configuration

From installing a client to importing a subscription, follow the steps to configure the proxy and routing. Test the connection first, then adjust advanced options.

Open-Source ClientsSubscription ManagementRouting & DNS

CLIENT / CHOOSE BY PLATFORM

V2Ray client downloads

Use v2rayN on desktop. On Android, choose a client based on the core you need.

Check your operating system and processor architecture before downloading the matching client. The client manages configuration and launches the core; a working connection also requires valid server parameters or a subscription URL. Even if you already have a subscription, choose the right architecture first: whether an installer runs and whether a subscription connects are separate issues.

Windows

Choose v2rayN. The desktop version offers a cross-platform interface, while the classic WPF version retains a familiar desktop workflow. Pick the one that suits how you work. After installation, import a subscription before setting the system proxy to help distinguish installation issues from connection problems.

Go to downloads

macOS

Use v2rayN and choose an installer for Apple silicon or Intel. Check your chip under “About This Mac.” If macOS displays a security warning on first launch, verify the file’s source, then follow the instructions in System Settings.

Go to downloads

Android

Start with v2rayNG, which is based on Xray; consider v2flyNG if you need a V2Fly core. Most recent phones use arm64. If you’re unsure, check the universal build details. On first connection, approve the system VPN prompt. If it disconnects in the background, check your battery restrictions.

Go to downloads

Linux

Use the v2rayN deb or rpm package that matches your Linux distribution and processor architecture. Desktop proxy settings may not apply to terminal programs. Test in a browser first, then check proxy environment variables for command-line tools separately.

Go to downloads

Changing platforms doesn’t change the protocol. Compatibility still depends on whether the client core, server configuration, and transport parameters match.

View all clients →

CONFIGURATION / HOW IT FITS TOGETHER

Subscriptions, routing & proxy modes

Before changing settings, identify which layer each one controls. The examples below are partial configuration snippets, not complete files you can use to connect.

Importing a configuration doesn’t enable the proxy

Add a subscription URL from a trusted source in subscription management, save it, then update the list and select a server. A subscription provides configurations in bulk; it does not enable the system proxy or grant VPN permissions. Compared with pasting shared links one by one, subscriptions are easier to update in one place, but an update may also overwrite entries managed by that source. Keep the default group for your first setup, then organize names after confirming the update worked. Don’t share subscription URLs containing access credentials in public screenshots. The snippet on the right shows a local inbound connection: importing a configuration still requires a traffic entry point. It is not a subscription file format.

Steps: Add a subscription → Update → Select a server → Enable the proxy.

{
  "inbounds": [
    {
      "tag": "socks-in",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    }
  ]
}

What to do after installation

Get started with v2rayN: test your connection in three steps

Get a minimal configuration working first; add split routing, TUN, and custom rules later.

Menu names vary between clients, but the setup logic is the same: first give the client server parameters, then direct app traffic to the client, and finally confirm that requests use the expected outbound. Keeping these three layers separate makes it easier to identify whether a problem is with the subscription, system settings, or routing—rather than repeatedly reinstalling the software.

1

Import a subscription and select a server

Get a subscription URL from a trusted source. In v2rayN, add and save a group in subscription management, then update it. Android users can do the equivalent in v2rayNG’s subscription group settings. After updating, you should see configuration entries. If the list is empty, check that the URL is complete and the subscription is valid, then look for format or network errors in the update log.

Select an entry as the active server rather than stopping at “imported.” The protocol, transport, port, and security parameters must match the server; don’t change them based on the name alone. Subscription updates can change existing entries, so note your active group first. This also helps confirm which configuration you’re using when troubleshooting later.

2

Enable the proxy and keep the default routing preset

On desktop, start the core, then choose automatic system proxy configuration and test in a browser. If you have a proxy extension, check whether it overrides the browser’s settings. Running another proxy app at the same time can also point the system proxy to the wrong port. On Android, you must approve the system VPN prompt for the first connection; this is separate from whether the subscription imported successfully.

For your first setup, choose a routing preset that fits your needs and avoid changing DNS, outbound rules, and TUN all at once. If you need to capture traffic from apps that ignore the system proxy, read the TUN instructions for your platform first. Before closing the client, clear any system proxy settings you no longer use so apps don’t keep sending requests to a closed local port.

3

Test a website, then check individual apps

Open a website you expect to reach through the proxy, then check the client log for connection and outbound details. Successfully opening one website only confirms that particular request worked; it doesn’t prove every app is using the proxy. Terminal tools, browsers, and desktop apps may each have their own settings, so test them individually as needed.

If the client shows connected but you can’t access anything, check server availability, device time, DNS resolution, routing matches, and the local port in that order. Note the error message, change one setting, and test before deciding whether to keep or revert it. A connected status usually means the core has started or traffic capture is active; it doesn’t guarantee the remote service is reachable.

Read the full guide →

Clients, cores & open-source licenses

How Project V, V2Fly, and Xray relate

The interface manages settings, the core handles connections, and protocols define how data is exchanged.

V2Ray originated in Project V’s modular proxy toolkit. Its configuration commonly includes inbounds, outbounds, routing, and DNS, which handle traffic entry, connection exit, rule selection, and domain resolution, respectively. “V2Ray client” is often used as a catch-all: it may refer to the core or to a GUI program that manages it. Know the difference before downloading. It explains why different clients can read the same subscription without necessarily behaving identically across all cores.

Core families: shared foundations, separate development

The V2Fly community continues developing and maintaining the V2Ray core, while Xray has evolved independently from related technology. Both use a configuration-driven proxy architecture, but their extensions, supported fields, and release schedules differ. VMess, VLESS, Trojan, and Shadowsocks are protocol names; TLS, transport, and routing policies are separate dimensions. Recognizing a familiar protocol name doesn’t eliminate the need to check transport and security parameters—and software with V2Ray in its name isn’t necessarily all the same product.

When choosing a core, first confirm compatibility with the complete server parameters, then consider how easy the client is to manage. If an import reports an unsupported protocol or invalid configuration field, check which core is actually running and review its feature documentation instead of repeatedly changing the system proxy mode. The system proxy determines how requests reach the client; core compatibility determines whether it can establish the remote connection correctly. Troubleshoot these as separate issues.

Three clients: desktop management and mobile trade-offs

v2rayN is designed for desktop platforms, with a GUI for subscription groups, server selection, routing, and core settings. It suits users who want a similar workflow across desktop environments. v2rayNG is an Android client for managing proxies with the Xray core; v2flyNG is another Android option built around the V2Fly core. Desktop and mobile platforms handle network permissions differently. The goal of a setting may be the same, but button locations and permission flows aren’t interchangeable.

All three clients are open source, but each client interface and the core it uses are separate projects. Switching clients won’t fix an expired server in your subscription or automatically provide every extension supported by another core. If your configuration already works, choose a client that interprets it correctly. Before migrating, export or note any custom rules, then check that your subscription, proxy mode, and DNS settings are restored.

Open-source licenses: distinguish the interface from its dependencies

v2rayN and v2rayNG use GPL-family licenses, and v2flyNG is licensed under GPL. The V2Fly core uses the MIT License; the Xray core uses MPL 2.0. Software may also bundle separately licensed dependencies. Refer to the license texts included with the distribution you obtained for the applicable rights and obligations. Open source means code can be inspected, used, and redistributed under its license; it doesn’t mean the client projects provide network services, server resources, or third-party subscriptions.

For everyday use, it helps to understand the limits of what a configuration contains: clients may store server credentials and subscription URLs, so remove sensitive information before sharing screenshots or logs. Logs are usually enough to diagnose handshake, DNS, or port errors; there’s no need to publish an entire subscription. To learn terms such as UUID, outbound tags, and domain strategies, start with the terminology guide before changing related fields.

Updates: check the app, core, and rules separately

Client, core, subscription, and rule-resource updates solve different problems. A client update may change the interface or how configurations are generated; a core update affects protocol support and runtime behavior; a subscription update syncs server parameters; and a rule-resource update changes domain and IP address lists. First identify which layer changed, then choose how to respond. Don’t treat “update subscription” as a fix for every issue.

Save custom routing and important settings before updating. Afterward, confirm the active server, proxy mode, and local port. To check whether a new configuration works, retest on the same network, in the same app, and with the same destination to reduce environmental differences. This site covers client selection and configuration; available features depend on the version you installed. For platform-specific instructions, continue to the cross-platform installation and configuration guide.

Keep reading by topic

Not sure how the clients differ? Start with the comparison. Already installed but can’t connect? Go straight to the configuration guide. Matching terminology and setup steps to the symptoms is usually more effective than toggling settings at random.

Choosing a Client & Troubleshooting

V2Ray configuration guides

View all articles →

Once the basic setup works, explore guides based on the issue you’re facing. Proxy behavior in browsers and terminals, Android background restrictions, and the difference between a client and a core each have their own troubleshooting path. There’s no need to relearn the entire setup for a single problem.

Download v2rayN