v2rayN First-Time Setup for Windows and macOS: Installation, System Proxy, and Common Issues

Set up v2rayN on Windows or macOS: choose an install location, check runtime requirements, import a subscription, configure the system proxy, and fix common port and antivirus issues.

At a glance

This guide is for anyone setting up v2rayN on Windows or macOS for the first time. Follow the steps in order: choose the right package, launch the app, import a subscription, check the local listener, then configure the system proxy. Use logs and port checks to narrow down problems. For your first connection, start with the system proxy; try TUN mode or custom routing only after the basic connection works.

1. Choose the right package and a writable location

v2rayN is a graphical client for managing servers, subscriptions, and runtime settings; the core handles the actual connection. Downloading the client does not provide a working server. Before you start, make sure you have a server or subscription you are authorized to use, and that its protocol is supported by a core included in your package.

Windows and macOS packages are not interchangeable, and each system has separate x64 and ARM64 builds. On Windows, check your system type under Settings → System → About. On macOS, open the Apple menu → About This Mac to check your chip. Choose the ARM64 build for Apple silicon and the x64 build for an Intel processor. Package size alone is not a reliable guide.

2. First launch and subscription import

On first launch, check that the window opens, settings can be saved, and the core starts before enabling the system proxy. Otherwise, your system may send traffic to a local port with no service listening, making websites that normally work unreachable.

  1. Check runtime requirements

    Launch the main app. If Windows reports a missing runtime, note the product name, architecture, and version in the message, then install the matching component. Don’t assume every missing-runtime warning refers to the same runtime.

  2. Handle launch permissions

    If macOS blocks the app because its source can’t be verified, confirm where you downloaded it, then check System Settings → Privacy & Security for an option to allow it to open. If macOS reports that the file is damaged or security software flags it as risky, stop and verify the source. Don’t disable system protection outright.

  3. Add a subscription group

    Go to Subscription Groups → Subscription Group Settings, enter a group name and the full subscription URL, then save. Some interfaces use a “+” button to add a group. Get the URL from your service provider; don’t use the address of its account dashboard.

  4. Update subscription data

    Return to Subscription Groups and select Update All Subscriptions (Without Proxy). If your current network can’t reach the subscription source but you already have a working server, try Update All Subscriptions (Through Proxy). The latter can’t establish a connection by itself if you don’t have a working server yet.

  5. Select an active server

    Select an entry in the server list, right-click it, and choose Set as Active Server. Check the logs for core startup errors. Then enable the system proxy and visit a known-working HTTPS site in your browser to confirm the connection—not just a latency result.

After importing a subscription, VMess, VLESS, transport, and TLS settings are usually generated for you; there’s no need to change them for “optimization.” If a server uses features such as REALITY, make sure the selected core supports that configuration. Seeing a server name in the client doesn’t guarantee the current core can run it.

3. Check the local listening port and system proxy

The local port is where apps connect to the client; the server port is where the client connects to a remote server. They are not interchangeable. The example below uses 127.0.0.1:10808 as a local mixed-protocol listener. It illustrates how to check your setup; it doesn’t mean every version should use the same port. Check the actual listener under Settings → Parameter Settings.

Client listener

Example address
127.0.0.1
Example port
10808
Listener protocol
Use the type shown in the interface: HTTP, SOCKS, or mixed
LAN access
Leave disabled during initial setup

A loopback address is for local use only. You don’t need to expose the listener to browse the web.

System proxy target

Proxy server
The client’s local listening address
Proxy port
Must match a listening port that supports this protocol
Check on Windows
Settings → Network & Internet → Proxy
Check on macOS
System Settings → Network → Current Connection → Details → Proxies

The client usually configures the system proxy for you. If checking it manually, make sure the address and port match.

If your version has separate HTTP and SOCKS ports, don’t enter a SOCKS-only port in the system’s HTTP proxy field. After changing the listener port, restart the core or apply the settings as prompted, then update the system proxy so it doesn’t keep pointing to the old port.

4. Choosing between system proxy, TUN, and routing rules

The system proxy and TUN determine how traffic reaches the client; routing rules determine whether traffic goes direct or through a proxy once it gets there. They control different things. Set System Proxy doesn’t mean every connection uses a proxy, and the client doesn’t automatically know what each website needs.

Start with the system proxy

Recommended

Apps that honor the system proxy send requests to the local listening port. For a first-time setup, test with a browser: there are fewer moving parts, and it’s easier to undo if something goes wrong.

Best for: first connection, browser testing, and basic troubleshooting

Use TUN mode

A virtual network interface can route traffic from more apps through the client. TUN may require administrator permission, a virtual interface component, and compatible routing and DNS settings. Coverage still depends on the operating system, apps, and configuration.

Best for: after verifying the basic connection, when apps ignore the system proxy

Configure an app directly

In an app that supports proxy settings, enter the local address, port, and protocol. This works independently of the system proxy and can help identify apps that aren’t using the system settings.

Best for: command-line tools and testing an individual app

Keep the built-in routing rules during initial setup; don’t rush to add a long list of custom domains. Rules are usually checked in order, so a broad rule near the top can override more specific ones below it. If a site only works through a direct connection or a proxy, check which rule matched and adjust that rule. Don’t change the core, DNS, and transport settings all at once.

5. Troubleshoot port conflicts and security software blocks

If the logs show address already in use or an error involving bind, first check whether another process is using the local listener. Common causes include two client instances running at once, an old core process that didn’t exit, or another app using the same port. The commands below check the example port 10808; replace it if your port is different.

Windows: Find the process listening on a port

netstat -ano | findstr ":10808"

Look for the port in a local address and a line with the status LISTENING. Seeing the same number in a remote address doesn’t mean your local port is occupied. The last column shows the process ID (PID); look it up under Task Manager → Details. Once you’ve identified the app, close it normally. Don’t end an unfamiliar system process.

macOS: Find the process listening on a port

lsof -nP -iTCP:10808 -sTCP:LISTEN

If the output points to an old client process, quit it from the menu and restart the app. If another program needs to keep using that port, change the local listener under v2rayN Settings → Parameter Settings, then update the system or app proxy to match. No output doesn’t mean your server works; it only means the command found no matching TCP listener.

6. First-connection issues and checks before quitting

Subscription update timed out. Is the client installed incorrectly?

First, check that the subscription URL is complete and hasn’t expired. Then determine whether the issue is DNS resolution, a connection timeout, or an error returned by the server. If you have a working server, try updating through the proxy. If you have no servers yet, ask your subscription provider how to import it on your current network. Don’t share your subscription URL; it may contain access credentials.

The server has low latency, so why won’t websites load?

A latency test checks a specific route; it doesn’t prove that a browser request will work. Confirm the active server, check that the system proxy points to the actual listener, and see whether a new connection appears in the logs when you visit a site. If there’s a request but it fails, check server authentication, TLS, DNS, and routing. If no request appears, check how traffic enters the client.

I’m getting a certificate error. Can I skip verification?

First, check the date, time, and time zone in your system settings. Then verify the server name, TLS settings, and subscription data. Certificate errors can be caused by an expired certificate or a name mismatch. Don’t use skipped verification as a default fix; ask your service provider to confirm the correct settings.

Why can’t my computer connect to the internet after I quit?

Reopen the client, choose System Proxy → Clear System Proxy, turn off TUN, then quit. If the app won’t open, check your system network settings for a manual proxy still pointing to 127.0.0.1. Remove only the settings added for this session; keep any network configuration required by your workplace or school.

A complete first-time setup check covers four things: launch, import, access, and exit. When troubleshooting later, change one setting at a time and compare the logs before and after; that’s more likely to reveal the cause than repeated reinstalls. When asking for help, share your operating system, the client version, the selected core, and redacted error lines. Don’t include server passwords, full share links, or subscription credentials.

  1. After restarting the app, the subscription group and active server are still set correctly.
  2. With the system proxy enabled, the browser can reach the target site and the logs show no persistent core startup errors.
  3. After turning off the proxy and quitting the client, sites that normally connect directly still work.
Download v2rayNDesktop and Android clients