Desktop clients for Linux, Windows and macOS

V2Ray for Linux: v2rayN client

Set up v2rayN from desktop installation and subscription import through to connection checks. For Android devices, use v2rayNG.

  • VMess
  • VLESS
  • Trojan
  • Shadowsocks
  • REALITY

Choose a download for your device

Desktop clientv2rayN Android clientv2rayNG / v2flyNG Core ecosystemXray · V2Fly Configuration methodsSubscription / share link / JSON

Client features and configuration options

From client selection to proxy modes

Choose a device and core first, then configure subscriptions, routing and traffic handling. The interface shown is illustrative; labels may change between client versions.

v2rayN desktop: manage connection settings in one place

v2rayN brings subscriptions, server configurations, routing rules and runtime logs together in one desktop interface. After installation, check the local listening port, import a link from your provider, select the active configuration and start the core. System proxy works for browsers and apps that follow system settings; terminal tools can use a separately specified proxy address. The desktop client makes it easier to keep a familiar workflow across operating systems, but file paths, network permissions and TUN authorization still need to be handled for each system. Do not assume another device's runtime environment applies unchanged.

View desktop setup steps →
v2rayN · Local proxy
Listening address127.0.0.1
Local listening port10808
Log levelwarning
Settings

Download and install clients

Choose a package for your OS and architecture

Use v2rayN on desktop; start with v2rayNG on Android. Package type, processor architecture and client core are three separate choices.

v2rayN offers a desktop edition with a modern cross-platform interface and a classic WPF edition. For a first installation, consider the desktop edition; if you are used to WPF, choose based on your environment. The two interfaces do not use different subscription services: connections still depend on the configuration and core compatibility.

If the app fails to start, check the runtime environment, write permissions for its directory and any security software alerts. Avoid repeatedly overwriting the configuration directory. Back up your settings before updating, then confirm that the listening port in the new interface matches the previous one.

v2rayN packages for macOS are available for Apple Silicon and Intel. Check your chip in About This Mac, then choose the matching architecture. The first time you open the app, macOS may ask you to confirm a developer-related prompt. Grant network and proxy permissions as requested.

Installing the app does not automatically enable the system proxy. Start the core, then check the proxy mode and browser requests. Follow the tutorial to handle permission prompts one at a time; do not disable system security protections as a workaround.

Android

Recommended: v2rayNG

v2rayNG uses the Xray core, while v2flyNG is an alternative for the V2Fly core. Most recent phones use the arm64 package; if you are unsure of your device architecture, start with the universal package guide. Similar client names do not mean they support exactly the same protocol fields.

The first connection requires approval for the system VPN permission. If the connection drops after switching to another app, check battery optimization and background activity restrictions. Another app using the VPN interface may also replace the connection.

The v2rayN deb package is for distributions that use the corresponding package management system; the rpm package is for another group of distributions. You also need to distinguish x64 from arm64. Check your distribution, processor architecture and desktop environment before choosing a package. Package format and processor architecture are separate things.

On Linux, apps do not all handle proxy settings in the same way. Check the desktop proxy, terminal environment variables and each app's own proxy settings separately. Consider TUN mode and its network permissions only if you need broader traffic handling.

View all clients →

First connection

Import, connect, verify

The client reads configurations and starts a proxy; it does not provide a working server by itself. Have a subscription URL or share link you are authorized to use, then follow the steps in order.

Keep the first test simple: one active configuration, one proxy method and one clearly defined test request. Once the connection is stable, add complex routing and automatic updates. If something breaks, it will be easier to identify what changed.

Read the full guide →
  1. Import a subscription or share link

    Enter the complete URL in subscription group settings, save it and update the subscription. Add a single share link through the corresponding import option. Once the configuration appears, check the protocol, server address and transport settings. A failed subscription refresh and a failed connection are different stages; check the logs for each rather than repeatedly updating the subscription.

  2. Select a configuration and proxy mode

    Set the configuration you want to test as active, then start the connection. On desktop, begin with the system proxy or an app-specific proxy; on Android, approve the VPN permission. A real connection test can help determine whether the selected configuration works, but results depend on the test target and network conditions. Do not delete an entire group of configurations based on one test.

  3. Test the browser and command line separately

    Open a test page in your browser, then use a command that explicitly specifies the proxy address to check a request. If the browser works but the terminal does not, first check whether the terminal has a proxy configured. If neither works, inspect the core logs, local port and remote connection. Change one setting at a time and keep the steps needed to reproduce the issue.

The Project V open-source ecosystem

Clients, cores and configuration fields

The interface manages settings; the core applies them. Understanding that distinction is more useful for choosing a client and troubleshooting than memorizing a client name.

Project V ecosystem

Graphical clients

v2rayN · v2rayNG · v2flyNG

Proxy core families

Xray · V2Fly

Available features depend on the core used by the client and the configuration it supports.

How Project V relates to V2Ray

Project V is an open-source ecosystem built around network proxying, with V2Ray as one of its best-known core names. When people say “install V2Ray,” they often mean installing a graphical client that manages a proxy core. Subscription management, tray menus and configuration editing belong to the client interface; accepting local connections, establishing outbound connections and applying routing are handled by the core. Knowing the difference helps you identify whether an error comes from the interface settings or the core runtime.

The V2Fly and Xray core families

V2Fly continues development related to V2Ray, while Xray is a core project derived from V2Ray that now develops independently. The two share some protocol and configuration concepts, but their features, fields and release schedules are not identical. Check support in the core you use, especially for VLESS, REALITY and certain transport options. REALITY is a connection security technology, not a proxy protocol that can be freely substituted just because it often appears alongside protocol names.

Open-source status and roles of the three clients

v2rayN, v2rayNG and v2flyNG are all open-source client projects. For desktop configuration management, start with v2rayN; on Android, choose between the other two based on Xray or V2Fly compatibility. Open source means the code and applicable licenses are available for review; it does not mean every subscription source is trustworthy. Clients, cores and bundled components may use different open-source licenses. If you modify, redistribute or package them, review each license and release notice separately rather than assuming all dependencies use the client's license.

Program updates and subscription updates are different

A program update replaces client components; a subscription update retrieves server configurations again. The former does not automatically extend your service, and the latter cannot add features missing from the core. Before upgrading, note your proxy mode, port, routing and DNS settings. Afterward, verify a basic connection before restoring advanced options. Keep credentials and subscription URLs in configuration files secure. Remove sensitive information before sharing logs, but retain the error type, time and steps needed to diagnose the issue.

When editing JSON by hand

First determine whether you are editing the client's own settings or a configuration passed to the core. In core JSON, inbounds defines local entry points, outbounds defines traffic exits, routing directs rules to outbound tags, and dns handles name resolution settings. Similar field names do not guarantee full compatibility across cores. Back up the original file before editing, check JSON syntax, then verify behavior one section at a time. Files generated automatically by the client may also be rewritten the next time it starts.

Open the complete configuration reference →

Configuration and troubleshooting articles

First connection and desktop troubleshooting

When something goes wrong, identify the stage first: can the app start, can the subscription update, can the core connect, and is the app actually using the proxy?

v2rayN crashes on startup: troubleshooting .NET runtime, folder permissions and configuration files

Troubleshoot v2rayN crashes on launch by checking four common causes: a missing runtime, insufficient write permissions in the app directory, a corrupted configuration file or a port conflict.

Allow LAN connections in v2rayN: share your computer's proxy with phones and TVs

Learn how to enable LAN connections, configure the listening port and firewall rules, and share the proxy by entering your computer's LAN address on a phone, TV or other device.

First V2Ray connection: choose a server, run a real connection test and verify proxy traffic

After importing a subscription, learn how to choose a server, test its availability with a real connection and confirm proxy traffic in both a browser and the command line.

View all articles →