Desktop and Android · Initial setup

Download v2rayNSubscription setup

Follow the steps to import a subscription, configure the system proxy, and set up routing. Start by installing the client, then verify each connection setting.

Open-source client GUI configuration Step-by-step guide
Choose your platform to find the right download
Client downloads

Choose an installer for your system

Check your operating system and processor architecture before choosing an installer. Use v2rayN on desktop and start with v2rayNG on Android. If your setup requires the V2Fly core, consider v2flyNG.

Windows

v2rayN · Desktop pick

The desktop edition offers a cross-platform interface, while the classic WPF edition keeps the familiar Windows workflow. Both let you manage server configurations, subscription groups, and routing rules; you don't need to install both. For a first setup, choose one interface, get connected, and decide later whether to switch.

Check the system requirements before installing. If the client closes immediately on startup, verify the runtime requirements for your build and write permissions for its folder. Avoid storing the configuration directory in a temporary extraction location, where updates or cleanup can erase your settings. Back up existing configurations before upgrading.

Go to downloads

macOS

v2rayN · Choose by chip

Check your chip under “About This Mac”: choose arm64 for Apple Silicon or x64 for an Intel processor. The installers target different architectures, but the subscription setup is much the same. After installation, open the client and add a subscription. Installing the app alone does not establish a connection.

Watch for system prompts the first time you launch the app. Verify the app's source, then follow your system's instructions to allow it to run. If your browser still uses its previous connection, check the network service's proxy settings and browser extensions. The system proxy, client routing, and an app's own proxy settings are separate layers; check each one.

Go to downloads

Android

v2rayNG · Xray core

For Android, start with v2rayNG. If you need the V2Fly core, see the alternative client v2flyNG. Most recent mainstream phones use arm64; check your device details if you're unsure, or choose a universal package listed on the download page. Don't assume the clients support exactly the same protocols based on their names alone.

After importing a subscription, update its group, select a configuration, and start the service. On first launch, grant the system VPN permission; this lets the client handle traffic on your device but does not provide a remote server. If the connection drops in the background, check battery optimization and background activity restrictions before repeatedly changing protocol settings.

Go to downloads

Linux

v2rayN · Choose the right package

Choose deb or rpm to match your distribution's package system, then check whether your device is x64 or arm64. Both the package format and processor architecture must match. System proxy settings may be in different places depending on your desktop environment. After installation, make sure the client starts and can read its configuration.

Browsers can usually use the proxy settings provided by the desktop environment, but terminal programs may not follow them automatically. If a browser works but the command line doesn't, check whether the program supports a proxy and whether its environment variables are set before switching servers. To route traffic from more apps, read the TUN mode permissions and routing guide.

Go to downloads

Client downloads, remote services, and subscriptions are separate parts of the setup. The installer provides software for your device; you must obtain the server address, authentication details, and transport settings you need through legitimate means and keep them secure.

View all clients
Setup sequence and core features

From subscription management to routing

First, get one configuration connected. Then adjust which traffic uses the proxy. The interface below is illustrative: menu names and option locations may vary by client and core, so follow the interface you have installed.

Subscription group settings · Example
Group remarks
Everyday setup
Subscription URL
Paste the full URL provided by your service
Update method
Update the current subscription (without proxy)
Save the URL, then update the subscription

Subscriptions let you fetch and refresh server configurations in one place, which is useful when settings change regularly. In v2rayN, add a subscription group, enter a note, paste the full URL, save it, and then update the subscription. On Android, distinguish subscription groups from importing a single link. A group URL is not a usable server until its contents are retrieved successfully. For the first setup, try updating without a proxy; if it fails, check the URL, network, and logs. Keep any manually entered configuration before updating, and hide credentials in the URL before sharing screenshots.

See the subscription import steps

Test the connection: change one setting at a time

After updating the subscription, select a configuration and start the core. Check the logs for configuration parsing errors or port conflicts before enabling the system proxy. Use a proxy-enabled browser to visit a known test destination, and check that sites and local devices that should connect directly still work. Interpret each result in context: a successful subscription update only means the URL is reachable; a core that starts only means the configuration loaded; a working browser doesn't prove that every app uses the proxy.

If it fails, note what you just changed and the related error, then undo the last step first. Don't switch cores, enable TUN, change DNS, and rewrite routing all at once, or it will be hard to tell what caused the problem. If you need to route apps that ignore the system proxy, read the full TUN guide. For ordinary browser use, start with the system proxy.

Read the full guide by topic
Project V ecosystem and maintenance

Understand the difference between clients, cores, and services

Understanding how these three layers fit together is more useful than memorizing a software name. Downloading a client gives you a way to manage settings on your device; choosing a core determines configuration compatibility; the remote service is where connection settings come from.

Project V V2Fly Xray

Project V: A quick look at the ecosystem

Project V is an open-source ecosystem of proxy tools, with V2Ray among its best-known projects. In everyday searches, “V2Ray” may refer to a core, a compatible configuration, or the overall setup, so the term alone doesn't tell you which installer to download. A GUI client turns lower-level settings into menus, groups, and toggles, so you don't have to write a complete configuration by hand each time. Protocols, transport settings, and authentication details still need to match the remote service.

This site covers installation and connection as separate steps: choose a GUI client for your device, learn what a subscription provides, and then see how the system proxy and routing affect app traffic. This approach helps pinpoint which part is causing a problem and avoids mistaking an open client for a connection that routes all network requests as expected.

V2Fly and Xray: Related, but not interchangeable

The V2Fly community continues V2Ray's maintenance and development. Xray grew from related code and continues to evolve its own features. They share some technical roots, but differ in protocol extensions, configuration fields, and release schedules. VMess, VLESS, and Trojan are distinct protocol types; REALITY is a specific connection security mechanism. These names aren't interchangeable options.

When choosing a configuration, first check the required protocol, transport, and core support, then verify fields such as the TLS server name. A feature supported by one core may not work with another. Defaults in older guides may not suit current builds. If you encounter an unfamiliar parameter, keep the original configuration and consult the relevant documentation rather than rewriting it based on a similar-sounding name.

Three open-source clients, each with a different focus

v2rayN is a desktop client with GUI tools for server management, subscription groups, system proxy settings, and routing. Cross-platform builds and the classic interface may place options differently, but the workflow is the same: import a configuration, then check the core and proxy scope. On desktop, pay close attention to the local listening port and the system proxy state after closing the client. If you change the port, update any apps that use it too.

v2rayNG is an Android client that uses the Xray core. Common import options include the clipboard, QR codes, and subscription group settings. It routes traffic through Android's system VPN interface, so permission prompts, per-app proxy settings, and background activity settings can all affect results. A QR code is just one way to carry configuration data: scanning it doesn't guarantee the remote configuration is valid or that a subscription has been updated.

v2flyNG is an alternative Android client that uses the V2Fly core, for setups requiring its specific behavior or configuration compatibility. Choose it to meet your configuration requirements, not as a way to troubleshoot by running multiple clients at once. Android typically allows only one active VPN service at a time. Stop the existing connection before switching clients, then verify the imported settings and proxy scope in the new client.

Open-source licenses: Know what the code and licenses cover

All three clients are open-source projects. v2rayN is licensed under GPL-3.0; v2rayNG and v2flyNG use GPL-3.0 family licenses. The V2Fly and Xray cores use MPL-2.0. For details on use, modification, and redistribution, follow the license files and dependency notices included with the build you're using. A client, its core, and bundled components may have different licenses.

Open-source code can be read and discussed, but that doesn't mean every remote service is trustworthy. Subscription URLs may contain credentials, and logs can reveal server details. When asking for help, include only the error context needed and redact credentials, subscription URLs, and personal information. A client's open-source status and its service provider's business practices are separate matters; assess them separately.

Updates: Back up first, then check what changed

Clients, cores, routing resources, and subscription content each have their own update sources and schedules. Updating a subscription refreshes remote configuration; it doesn't update the client. Updating the client doesn't guarantee that the subscription URL still works. If a connection issue appears, identify which layer changed recently before updating anything. Before upgrading, record the current proxy mode, routing choice, and custom ports, and back up your settings. Avoid combining an upgrade with a large set of configuration changes.

Community maintenance brings feature changes and fixes, but can also change menu names or default behavior. That's why this guide focuses on what each setting does rather than requiring buttons to stay in one place. After an update, check that the client starts, then test everyday apps and destinations that should connect directly. Once the new setup is stable, remove old backups. If problems persist, use the logs to investigate configuration parsing, DNS, connection setup, and TLS errors separately.

About this site's scope
Technical notes · Recently updated

Find troubleshooting steps by symptom

If you've completed the basic setup but run into a specific issue, start with the note that matches what you're seeing. Save the error message, then narrow down the cause from your device to the remote service. Don't assume every connection failure has the same cause.

System proxy enabled but not working? Troubleshoot browser extensions and terminal proxy variables separately

Check browser proxy extensions and system proxy settings, then check http_proxy and https_proxy in the terminal environment. Learn why command-line programs may not use the system proxy by default.

For cases where browser and command-line results differ. First identify which proxy settings each program uses, then check the local port before switching servers unnecessarily.

Read the note

How FakeDNS works: Virtual IP mapping for domain-based routing and when to use it

Learn how FakeDNS returns addresses from a reserved range and tracks domain mappings. Explore its role in TUN mode and domain routing, and how to weigh trade-offs when it conflicts with direct connections.

Understand the DNS resolution and connection stages before deciding whether to enable it. If your basic setup already works, test FakeDNS separately after learning how the mapping lifecycle works.

Read the note

v2rayN crashes on launch or v2rayNG closes immediately: Fixes for runtimes, permissions, and configuration resets

For desktop, check the .NET desktop runtime, folder write permissions, and corrupted configuration files. For Android, check VPN permission and app data, with fixes in a recommended order.

First distinguish a client process crash from a service startup failure. Back up your configuration, then work through runtime and app data issues step by step to avoid losing manually entered settings during a reset.

Read the note