v2rayN First-Time Setup for Windows and macOS: Installation Tips and Common Issues

A practical guide to installing and setting up v2rayN on Windows and macOS, covering extraction paths, runtimes, security prompts, language and core options.

At a Glance

Set up v2rayN in this order: confirm your operating system and architecture, install the app completely, check its runtime requirements, import nodes, then test the local proxy. This guide covers Windows and macOS desktops and distinguishes app launch failures, core startup errors, and browsers that bypass the proxy. It also explains which menus, ports, and logs to check when connecting for the first time.

Choose the Right Download: Check Your OS, Architecture, and App Build

v2rayN is a desktop client. Its interface manages nodes, generates configuration, and launches a proxy core. An open window does not mean the core is running, and a visible node does not mean browser traffic is using the proxy. Check these three layers separately during setup instead of repeatedly reinstalling the app when a webpage fails to load.

Choose a package by operating system and processor architecture in the download center. The classic WPF interface for Windows and the cross-platform desktop interface are different builds; macOS cannot run Windows executables. Read the requirements for the specific package before downloading. File size alone does not tell you whether it includes a runtime or core.

What to CheckWindowsmacOS
System architectureGo to Settings → System → About and check System type.Open the Apple menu → About This Mac and check Chip or Processor.
Architecture matchx64 is for common 64-bit Intel and AMD processors; ARM64 is for Windows on ARM.Choose ARM64 for Apple silicon and x64 for Intel processors.
App formatCheck the download page for the installer or archive, and identify the interface type.Extract or mount the package as instructed, then install the app.
Runtime requirementsCheck whether the package is self-contained or requires a separate runtime.Check the minimum OS version, architecture, and whether the package is self-contained.

The menu names below use the Chinese labels found in common desktop builds. Settings may appear on different tabs depending on the release. If a label differs, look for fields such as subscription groups, system proxy, or Core type rather than relying on the location shown in an older screenshot.

Install the App: Extract on Windows and Open for the First Time on macOS

Installation approach: place the app in a fixed location before configuring it

Windows
  • Extract the entire archive first, for example to D:\Tools\v2rayN. Do not run the app from the archive preview window.
  • Keep the package’s subfolders and dependency files. Do not copy only the main executable to your desktop.
  • Use a directory your account can write to, so routine configuration changes are not blocked by permissions.
  • If you choose an installer, follow its installation steps instead of applying the archive instructions to the installed version.
macOS
  • For a disk image, follow the instructions to copy the app to Applications, then launch it from there.
  • Extract archives first and preserve the app bundle structure. Do not modify files inside the bundle.
  • Do not keep running the app from a temporary extraction in Downloads or from a mounted disk image.
  • If macOS blocks the app on first launch, distinguish a developer verification prompt from a clear security warning.

Choose a permanent location before importing subscriptions or enabling launch at login. This helps avoid broken shortcuts and changes to the app’s launch path.

A short path on Windows makes troubleshooting easier; Chinese characters in a path do not automatically prevent the app from running. Check whether the directory is writable, the files are complete, and security software has quarantined a dependency or core file. If you find a quarantine entry, verify the file’s source and the specific warning before taking action. Do not disable system protection across the board.

Runtimes and Startup Logs: Diagnose App and Core Errors Separately

Some Windows builds require a compatible .NET runtime; others are self-contained. If a runtime is missing, use the framework name, major version, and architecture shown in the startup dialog. WPF builds typically require the matching Desktop Runtime. Installing only the SDK or a runtime for another architecture may not meet the app’s requirements. This guide does not specify a fixed runtime version because requirements vary by release.

You generally do not need administrator privileges for ordinary system proxy use. Features such as TUN and route changes may require extra permissions, but they are not needed for an initial test. Start with a basic proxy test under a regular account to avoid complications from permission changes and traffic-routing features.

Initial Setup: Language, Core, and Subscription Import

Leave network-related settings at their defaults and change only what you need. The interface language affects menu labels, not server protocols. A subscription URL retrieves a node list; it does not configure the local listener or system proxy. Subscription links may contain access credentials, so hide the full URL in screenshots and support logs.

  1. Set the interface language

    Open Settings, find the language option, and select Simplified Chinese. Some builds place this under Settings → Parameter Settings. If prompted to restart, quit the client normally and reopen it before continuing.

  2. Check the core

    Go to Settings → Parameter Settings → Core type and check which core is selected for the protocols you use. This option may be on a separate tab. Confirm that the package includes the required core before saving, and avoid changing several networking options at once.

  3. Create a subscription group

    Open Subscription Group → Subscription Group Settings, add a group, and enter a subscription URL you already have. The group name is for local reference only. Do not add spaces, explanatory text, or line breaks to the URL field.

  4. Update the node list

    From the Subscription Group menu, choose the option to update all subscriptions. If you do not yet have a working proxy, update without using a proxy. Once the update succeeds, check whether the node count changed, then select a node as the active server.

  5. Enable the system proxy

    After confirming that the core log shows no startup errors, select Set system proxy automatically from the client’s System Proxy menu. Test a webpage in your browser, then adjust routing rules or the subscription update interval if needed.

If you have a single node share link rather than a subscription, use the corresponding import option in the Server menu. Do not paste it into the subscription URL field. Updating a subscription connects to a subscription server; importing a node parses its connection parameters. Each has different troubleshooting steps.

Choose a Core by Protocol Support, Not by Its Name or Speed

v2rayN is a client; Xray and V2Fly are proxy core projects. Their protocol and transport support is not identical. Whether a node works depends on its settings and the selected core’s capabilities. Switching cores does not guarantee better speed, and cannot fix an expired server address or incorrect credentials.

Xray core

Recommended

For a first setup, check whether Xray supports the nodes you already have. Nodes using VLESS and REALITY require a core that supports the specific combination. Preserve all transport and security settings supplied by your provider.

Best for: subscriptions that explicitly require Xray or include supported protocol combinations.

V2Fly core

When using V2Fly, check each node’s protocol and transport against the core’s supported features. Shared protocols such as VMess are not guaranteed to be compatible based on their names alone; check specific fields such as TLS and the WebSocket path too.

Best for: nodes explicitly documented as supporting V2Fly, or when testing an existing V2Fly configuration.

After changing the Core type, restart the affected connection and check the startup log. The selected option in the interface may not immediately match the core that is already running, so do not assume the change has taken effect just by looking at the settings window. For help understanding the configuration layers, see the inbound, outbound, and routing sections in the JSON configuration guide.

Test the Connection: Check the Local Port, System Proxy, and Routing Separately

The local listening address is where apps connect to the client; the remote server port is where the core connects to a node. They are not interchangeable. The example 127.0.0.1:10808 is for checking a port only. Use the listener settings under Settings → Parameter Settings and the logs to confirm the actual port and protocol. Builds may offer SOCKS, HTTP, or a mixed listener.

CheckWhat to verifyCommon misinterpretation
Local listenerThe log confirms the listener started successfully, and the expected process owns the port.Assuming the client is running correctly just because a port is occupied
Active nodeThe node is selected as the active server, and the core has loaded its configuration successfully.Assuming the connection works just because the subscription list has entries
System proxyThe system proxy points to the actual HTTP or mixed listener.Entering a SOCKS-only port as an HTTP proxy
Routing rulesConfirm that test requests use the proxy or connect directly as expected.Mistaking direct connections caused by bypass rules for a broken system proxy

On Windows, check the example port in Command Prompt. The last column is usually the process ID. If another client is using the port, identify the process before exiting the conflicting app normally or changing the local listener port. Do not terminate an unfamiliar system process.

netstat -ano -p tcp | findstr ":10808"

On macOS, use Terminal to check which process is listening on the example TCP port. No output only means the command found no matching listener. Check the actual client port and logs too; it does not mean the subscription is unavailable.

lsof -nP -iTCP:10808 -sTCP:LISTEN

v2rayN Setup FAQ

Nothing happens when I double-click after extracting. Should I reinstall?

First make sure you are not running the app from inside the archive, then check for runtime or architecture errors. On Windows, check Windows Security → Virus & threat protection → Protection history for related entries. On macOS, confirm that the app is in a permanent location and meets the system requirements. Address the specific error instead of repeatedly replacing the package with builds for different architectures.

A subscription update timed out. Which setting should I check first?

First check that the subscription URL has not expired, the system date and time are correct, and your current network can reach the subscription server. Try updating through the proxy only if you already have a working node. Relying on a proxy update before importing any usable node can create a loop that prevents the initial import. For certificate errors, check the system time and certificate chain; do not disable certificate validation by default.

The node latency test succeeds, so why won’t webpages load?

A latency result only confirms that the relevant test completed; it does not mean your browser is using the local proxy. First check that System Proxy is set to Set system proxy automatically, then check the active node and core logs. If the browser has a manual proxy configured, confirm that its protocol and port match and temporarily remove any duplicate proxy settings.

Why does my internet stop working after I close the client?

Open your system proxy settings and check whether they still point to 127.0.0.1. If the local client has exited, turn off any leftover manual proxy setting, or restart the client and select Clear system proxy. Do not reset all network settings instead of checking this first.

Do I need to enable launch at login and TUN right after installation?

Neither is required for your first connection. First complete this cycle: start the core, set the system proxy, open a webpage, then clear the system proxy. Once the basic connection is stable, enable launch at login if you need it. Configure TUN separately only if an app you need does not follow the system proxy, and address any required permissions.

What to Keep and Recheck After Setup

After your first successful connection, keep a record of the working core, listening port, and routing setup. When troubleshooting later, change one variable at a time: check whether the app starts, then review the core log, test node connectivity, and finally check whether the app is using the proxy. This makes it easier to distinguish changes in the installation environment, an unavailable node, and leftover system settings.

To learn more about importing subscriptions and configuring routes, follow the Getting Started guide. The goal of a first installation is a basic setup you can understand and verify, not enabling every feature at once.

Download v2rayNChoose a client for your platform