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)
RecommendedUses 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.
- Installer: Follow the setup wizard. Don’t try to extract the installer as if it were a portable archive.
- Archive: Select “Extract all,” then launch the app from the extracted folder. Don’t run it from the archive preview.
- Switching interfaces: Back up your existing configuration and test the other build in a separate folder. Don’t install one release over the other.
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.
-
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. -
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.
-
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.
-
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.
-
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.
- 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.
- 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.
- 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.
- 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.
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 see | Check first | What to try next |
|---|---|---|
| All browsers report a proxy connection error | Is 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’t | Does the app use the system proxy? | Check the app’s own proxy settings, then consider TUN |
| Some sites connect directly while others use the proxy | Current routing rules and matched outbound | Check access logs; an IP change alone doesn’t prove the proxy is broken |
| Web pages stop loading after you close the client | Is 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.
- Domains stop resolving after enabling TUN: Check the core log for DNS errors and look for a loop in your DNS configuration. Don’t replace a server hostname with an unknown IP address.
- Devices on the local network can’t connect: Check routing for private subnets and configure direct connections where needed. Don’t disable all routing rules.
- Problems persist after turning TUN off: Exit the client, then check for leftover system proxy settings and other networking software. If needed, restart Windows normally to restore the network state.
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.
- Exit cleanly: Turn off TUN, clear the system proxy, then exit from the tray menu. Closing the window may only minimize the app; it doesn’t confirm that the core has stopped.
- Update: Follow the update process for your release type. For an archive build, extract the new version to a separate folder and check that all files are present. Migrate only the configuration files needed for the new version; don’t mix old core files with a new interface.
- Test a rollback: Keep a backup of the original configuration, but don’t run old and new copies at the same time. If something goes wrong after updating, compare the core startup logs and listening ports before deciding whether to restore the backup.
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.