How to Install and Configure v2rayN on Windows: Setup, Subscriptions, System Proxy & Common Issues

Choose the right build, extract it outside system folders, install required runtimes, then add a subscription and configure the system proxy or TUN. This guide covers common Windows setup issues.

At a Glance

This guide is for anyone setting up v2rayN on Windows for the first time or dealing with an app that won’t launch, an empty server list, or a browser that still bypasses the proxy. Start by choosing the right interface and architecture, then install or fully extract the app. Verify each step in order: launch the app → update the subscription → select a server → enable the system proxy → enable TUN if needed. Change one thing at a time to keep runtime, subscription, and routing issues separate.

1. Choose a Build: Desktop or WPF

v2rayN is a client interface for managing server configurations, running proxy cores, and configuring proxy access. Installing the app does not give you a usable server; you still need to add a valid configuration or subscription. On Windows, choose the desktop or WPF build based on your interface preference. They are not different subscription services.

Desktop (Avalonia)

Recommended

Uses a cross-platform interface. A good place to start if you’re new to v2rayN or don’t have a preference for the classic interface. Check the build’s architecture and system requirements separately.

Best for: First-time setup or users who prefer a consistent interface across desktop platforms.

WPF

Uses a Windows desktop interface. Choose this build if you’re familiar with the classic menu layout. It won’t reduce latency to the same server by itself.

Best for: Windows users who are already comfortable with the classic interface.

Open Windows Settings → System → About and check “System type.” Most 64-bit Intel and AMD PCs use the x64 build. If Windows reports an ARM-based processor, check the download page for a compatible build and its requirements; “64-bit” alone doesn’t guarantee compatibility. For older Windows versions, check the minimum system requirements for the current build.

2. Choose a Folder and Install Required Runtimes

For an archive build, choose a separate folder your account can write to, such as D:\Tools\v2rayN. If you don’t have a D: drive, your user folder works too. The drive letter doesn’t matter; the app needs to save its configuration, logs, and updates. Avoid system and temporary folders, as well as folders that are automatically synced or cleaned up.

  1. Extract the Entire Archive

    In File Explorer, select “Extract all” and keep the folder structure intact. Don’t extract only v2rayN.exe; the core, dependencies, and resource files may also be required.

  2. Check Dependencies

    If the app reports a missing .NET component on first launch, note the runtime name, major version, and architecture shown in the dialog. WPF builds typically need the matching .NET Desktop Runtime. The SDK or ASP.NET Core Runtime alone may not be sufficient.

  3. Check for Quarantined Files

    Open Windows Security → Virus & threat protection → Protection history and check whether any related files were quarantined. Verify the file’s source and the specific alert; disabling all protection is not a substitute for troubleshooting.

  4. Launch the App

    Start the main app, confirm the window opens and settings can be saved, then check the logs for missing core files. Start with the system proxy under a standard user account; leave TUN off for now.

  5. Create a Shortcut

    Once the app runs correctly, create a shortcut to the actual executable. If you later move the folder, update the shortcut too so it doesn’t point to an old copy.

3. Add a Subscription and Update It

A subscription URL lets the client fetch a list of configurations. It isn’t a regular website homepage or a single vmess:// or vless:// share link. Make sure you copy the full URL without line breaks, spaces, or punctuation added by a messaging app. Subscription URLs often contain access credentials, so hide the entire URL in screenshots and support requests.

The steps below use common Chinese menu labels. Button positions and labels such as “via proxy” may differ slightly between versions. Follow the matching function rather than switching to an old build from an unknown source just to find the same icon.

  1. In the main window, open “Subscription group” → “Subscription group settings.” Add a group, enter a name and the “URL,” make sure it’s enabled, and save.
  2. Go back to “Subscription group” and select “Update all subscriptions (without proxy)” for the first attempt. Since you don’t have a working proxy yet, a direct update makes connection issues easier to diagnose.
  3. After the update, select the group and check whether servers appear in the list. If the log reports success but the list is empty, clear any group filters first, then check whether the subscription response uses a format supported by the client.
  4. Select a server in the list, then choose “Set as active server” from the right-click menu. Check that the core starts successfully.

If the subscription site is only reachable through a proxy and you already have a working server, try “Update all subscriptions (via proxy).” This isn’t a universal fix for failed updates: without a usable server, updating through the proxy can create a loop where you need an update to connect and a connection to update. For a single share link, use “Servers” → “Import bulk URLs from clipboard” instead of pasting it into the subscription URL field.

4. Configure the System Proxy and Test a Browser

After selecting a server, choose “Set system proxy automatically” from “System proxy” in the main window or tray menu. This is a v2rayN menu action; it doesn’t mean the browser is necessarily using PAC. Then open Windows Settings → Network & internet → Proxy and make sure the proxy address and local listening port match.

127.0.0.1
Loopback address on this computer only
10808
Example ports below; use the values configured on your device
1 item
Change one setting at a time, then test again

Open “Settings” → “Parameter settings” and check the local listener or inbound settings. Note the port in use. Some versions use a mixed-protocol listener, while older configurations may have separate HTTP and SOCKS ports; don’t copy port values from someone else’s screenshot. The system proxy must point to a listener that accepts HTTP proxy requests, not a SOCKS-only port.

What you seeCheck firstWhat to try next
All browsers report a proxy connection errorIs the local core running, and does the port match?Check the core log for a successful listener before testing a webpage
The browser works, but one app doesn’tDoes the app use the system proxy?Check the app’s own proxy settings, then consider TUN
Some sites connect directly while others use the proxyCurrent routing rules and matched outboundCheck access logs; an IP change alone doesn’t prove the proxy is broken
Web pages stop loading after you close the clientIs Windows still using a local proxy address?Reopen the client to clear the system proxy, or turn off any leftover manual proxy setting

The system proxy only affects apps that choose to use it, so it doesn’t send all traffic through the proxy. Even traffic that reaches the core may be routed directly by the rules. For your first test, open a stable HTTPS page you’re authorized to access and check the logs to confirm the request reached the core.

5. Enable TUN Only If You Need It

TUN uses a virtual network interface to capture traffic from apps that don’t use the system proxy, but it also introduces more variables involving routing, DNS, and permissions. Confirm that the subscription and server work before enabling TUN. That makes it easier to tell whether the server is unavailable or a local traffic-capture setting is causing a conflict.

Choose an Approach: Start with the System Proxy, Add TUN as Needed

Start with the System Proxy
  • You mainly need a browser and desktop apps that support proxies.
  • Start testing without administrator permissions for a simpler troubleshooting path.
  • An app will use the proxy only if it reads the system proxy settings.
Enable TUN When Needed
  • The target app doesn’t use the system proxy and has no suitable manual proxy setting.
  • Follow the client’s prompts for administrator or service permissions.
  • After enabling TUN, check for conflicts involving DNS, routing, or other virtual adapters.

TUN expands which traffic the client can capture. It won’t automatically route everything through the proxy or fix incorrect server settings.

Before enabling “Enable TUN” in the main window for the first time, save your work and follow the prompts to grant elevated permissions. To reduce variables, you can select “Clear system proxy” under “System proxy” and test TUN on its own. The two modes aren’t necessarily mutually exclusive, but there’s little benefit to changing both at once while troubleshooting. If your workplace network or another connection tool relies on a specific virtual adapter, check its requirements first; don’t delete adapters or reset the entire network without a reason.

6. Common Problems: Diagnose the Symptom Before Reinstalling

Reinstalling the interface usually won’t fix an expired subscription, a port conflict, or mismatched transport settings. Before asking for help, note the client and Windows versions, the mode you’re using, and a short relevant log excerpt. Remove subscription credentials, server authentication details, and personal folder paths. Start by narrowing down the issues below.

Nothing happens after I double-click. Is the app broken?

Check the notification area first; the app may already be running in the background. Then check Task Manager for an existing process. If there is no process, look for runtime errors and quarantined files in Protection history. Avoid repeatedly double-clicking, which can start multiple instances and cause port conflicts.

The subscription updated successfully, but I still can’t get online. Why?

A successful update only means the configuration was fetched and parsed. Set an active server, enable the system proxy, and check the core logs. Also open Settings → Time & language → Date & time and make sure the system clock is correct; processes such as TLS certificate validation depend on accurate time.

The log says the address is already in use. Should I change the port?

First find the process using the port, and close any duplicate old instances. If you do need to change it, open Settings → Parameter settings and update the actual inbound port. Restart the core, then reapply the system proxy. Update any apps with manually configured proxy settings as well.

Will switching cores fix every timeout?

No. Check the protocol, transport, TLS server name, and other fields required by the configuration, and confirm that the selected core supports that combination. VLESS and VMess are not interchangeable labels. Don’t disable certificate verification to hide an error or change the transport path specified by the server.

Quick Port Conflict Check

If the local listener uses port 10808, run the command below in Command Prompt. Replace the number first if you use a different port. Look for a row with the status LISTENING and note the PID at the end. Then check the process under Task Manager → Details. Don’t terminate an unknown system process just because you found its PID.

netstat -ano | findstr ":10808"

If the local listener is working but the log reports a remote connection timeout, check the server address and port, network reachability, and provider status. A latency test alone doesn’t prove that browser requests are going through the proxy; confirm with both an app request and the core logs.

7. Exit and Update Without Losing a Working Setup

Keep a backup of a configuration you’ve verified works. Configuration files may contain subscription URLs and authentication details, so store them somewhere trustworthy. Don’t upload the entire app folder to a public location. Before updating, exit the client and make sure its processes have stopped; otherwise, files in use may leave the update incomplete.

The simplest reliable setup is: the app launches, the subscription updates, the active server connects, and the target app uses the system proxy. Consider TUN only if the last step fails. Following this order shows you which layer to troubleshoot instead of starting over with a reinstall.

Download v2rayNChoose a build for your system