v2rayN Setup Guide
Import a subscription → Choose a proxy mode → Connect → Verify. If you already have a valid subscription, you can complete the initial setup in about 10 minutes. If something goes wrong, troubleshoot the current step before moving on.
Before You Start: Client and Valid Subscription
You’ll need two things: an installed client that opens successfully, and a valid subscription URL from a trusted provider. The client reads configurations, starts the core, and handles app traffic; it doesn’t provide a remote service by itself. If you only have the client installer, first get a service configuration you’re authorized to use. Haven’t installed the client yet? Visit the client downloads page and choose the right option for your device’s operating system and processor architecture.
A subscription URL is usually a long link and may include account identifiers. Copy the entire URL, without extra line breaks, explanatory text, or trailing punctuation. A subscription is different from a single-server share link: add the former to a subscription group, and use the client’s clipboard import option for the latter. Don’t paste both into the same field just because they can both be copied.
To make it easier to spot what each step changes, close other proxy clients and browser extensions that might intercept network traffic during your first setup. Make sure your device’s date and time are correct and that your regular network connection works. If you already have a configuration, save your current settings and don’t delete the old group yet. First make sure the server entries import successfully; then configure how traffic reaches the client. Changing several settings at once makes problems harder to track down.
Import a Subscription: Save the Group and Update
v2rayN: Add a Subscription Group
Open the main window and go to the group settings under “Subscription Group” in the top menu. Create a new group, enter a recognizable name in the remarks field, and paste the complete subscription URL into the address field. Leave the other options at their defaults for now. Check for extra spaces at either end of the URL, save, and return to the main window. Then open “Subscription Group” and select Update Subscription. Saving the URL alone won’t populate the server list; updating fetches the subscription and parses its entries.
If you don’t have a working connection yet, choose the option to update the subscription without using a proxy. If the URL is only accessible through an existing proxy, you’ll need a working connection first, then select the option to update through the proxy. You can’t use a configuration that hasn’t been downloaded yet to fetch itself for the first time. When the update finishes, check the status message or logs for download or parsing errors, then switch to the group you just created and check its entries.
v2rayNG: Add the URL and Return to the Main Screen
Find “Subscription Group Settings” in the side menu or More menu, tap the add button, enter a name and subscription URL, then save and return to the main screen. Open the top-right menu and select “Update Subscription.” In some versions, the update option is under the group’s actions. Wait for the confirmation, then check for configuration entries on the main screen. If the list is filtered by group, switch to the new group first so an empty filtered list isn’t mistaken for an import failure.
On both clients, make sure an entry appears and can be selected before moving on. An entry’s name is just a label; it doesn’t guarantee the service is currently reachable. If the update reports success but the list is empty, check whether the subscription has expired, whether it returned any configuration content, and whether the client can read that format. Don’t mistake a login page URL or service information page for a subscription URL and keep trying to update it.
If the list is still empty at this stage, troubleshoot the subscription update before proceeding. Changing the system proxy mode usually won’t fix an invalid URL or unsupported content format. See Common Issues and Subscription Troubleshooting for more detailed diagnostics. Once entries appear, note the configuration you plan to test. Next, set up how app traffic enters the client and how it’s routed.
Choose a Proxy Mode: Configure Traffic Entry and Routing Separately
There are two separate settings to understand: the system proxy determines which apps send requests to the local client, while routing determines which outbound a request uses after it reaches the client. Choosing a routing preset doesn’t mean every app is now using the proxy, and enabling the system proxy doesn’t mean every connection goes through a remote server. Keep these two layers separate so you can verify the results in the next steps.
v2rayN: Configure the System Proxy and Routing Preset
Find “System Proxy” in the status area at the bottom of the main window or in the tray menu, then select “Set system proxy.” This tells the client to configure your system’s proxy settings; it does not automatically route traffic by website. Most browsers that follow system settings will use this proxy. Apps with their own network settings and some command-line tools may need separate configuration, so the system proxy status alone can’t tell you where their traffic is going.
Next, open “Routing.” For everyday use, start with a preset such as “Bypass mainland China” if it fits your needs. This preset typically sends connections to mainland China domains or addresses directly and handles other connections according to the configuration. The actual behavior depends on the rules and their order. If the preset has a different name in your version, read its description and choose one with a similar purpose. Don’t layer multiple custom rule sets on top of each other. For details on rule matching order, see the routing fields reference.
Finally, open the settings and check the actual local listening address, port, and proxy protocol. Some configurations use 10808 for SOCKS and 10809 for HTTP; others accept multiple protocols on a single port. Use the settings shown in your client rather than assuming these port numbers are fixed. If the proxy is only for your device, leave “Allow connections from the LAN” off; there’s no need to expose the listening port to your network just to get connected.
v2rayNG: Check Routing and Per-App Proxy Settings
Open the routing options in Settings and choose a preset that fits your needs. Avoid adding complex rules for your first test. If “Per-app proxy” is enabled, turn it off temporarily and run a basic check. Depending on the selected option, per-app proxying may apply the proxy only to checked apps or exclude checked apps from it. If your browser is excluded, it won’t use the proxy even when the client is connected.
After choosing a routing preset, return to the main screen. You don’t need to edit each server’s protocol, transport, or security settings; these are usually included in the subscription, and changing them can break the match with the server. For the next step, just select the active configuration and make sure the client starts successfully.
Connect: Select a Configuration and Confirm Startup
v2rayN: Set the Active Server
Find the entry you want to use in the imported list, right-click it, and select “Set as active server” or the equivalent option. If the client supports switching with a double-click, follow the on-screen instructions. Check that the active marker has moved to the intended entry. Highlighting a row doesn’t necessarily make it the active outbound. Then check the status and logs at the bottom of the main window to make sure the core hasn’t exited immediately or started repeating errors.
Some versions reload the core automatically when you switch active servers; others have a Start or Restart service option. Follow the current client status. Don’t rapidly switch entries and restart the service repeatedly, or the logs will mix events from different attempts. If you see “address already in use” or a listening error, check whether another client instance is running and whether the local port is in use. Don’t change the remote server address yet.
v2rayNG: Connect and Grant System Permission
Select the configuration you want on the main screen and tap Connect. On first launch, Android usually shows a VPN connection request explaining that the app will use the system network tunnel. Check that the app requesting permission is the v2rayNG client you’re using before allowing it. Without permission, the connection can’t be established. If you’ve already granted permission, Android may not ask again, so the absence of a prompt doesn’t prove that the client started successfully.
After granting permission, check for changes to the connection button, status message, and system notification. Open the client logs and look for startup errors. If another app is using the VPN connection on your device, stop it and try again. Keep the client in the foreground during your first test and avoid locking the screen. This lets you confirm the configuration works before troubleshooting background activity and battery restrictions.
A connection icon or “Running” status only shows that the local service or system tunnel is active; it doesn’t guarantee that the remote server is reachable. If you see a timeout, connection refusal, or security handshake error, note when it happened and check that the configuration is valid, the device clock is correct, and the network is working. See the connection troubleshooting FAQ for details. Don’t change advanced transport settings yet. If there are no obvious startup errors, continue with a real-world connection test.
Verify the Connection: Check Pages, Logs, and Traffic Routes
Open a new browser tab and visit a known-working HTTPS site. Choose a target that matches your routing expectations: if the rules send a site directly, opening it only confirms that the direct connection works, not that the remote proxy is active. To reduce the effect of cached content, try a page you haven’t opened before or refresh new content. Note the time so you can match the request to the client logs.
Check the client logs for the same time period, paying attention to the request destination, matched outbound tag, and any errors. If the logs show the request going to direct, first check whether that matches the routing preset. If you expected remote outbound traffic, review the rule order. Outbound tags vary by configuration, so don’t draw conclusions based on searching for one specific tag. At the warning log level, successful requests may not appear individually; that doesn’t mean traffic bypassed the client.
For more detailed connection records, temporarily set the log level to info, try the request again, then restore the previous setting. Detailed logs may include domains and connection information, so don’t publish them in full. If the client provides a connection details or routing view, use it as an additional check. Built-in connection tests only report the result of their own requests; they don’t replace testing in a browser or the app you actually use.
Desktop: Test Browsers and Terminal Tools Separately
If a browser works in v2rayN on desktop but a terminal tool doesn’t, don’t switch subscriptions right away. Terminal tools may not use the system proxy, so you might need to configure a proxy address or environment variables according to the tool’s documentation. Choose the right HTTP or SOCKS protocol and use the listening port you checked earlier. Browser proxy extensions can also override system settings. Disable the extension or set it to use the system proxy before comparing results.
To compare behavior with the proxy on and off, select “Clear system proxy” in the client, stop the core, and test. To restore the proxy, restart the core, enable automatic system proxy configuration, and repeat the test with the same destination. Don’t just exit the client while leaving the system proxy pointed at a port that’s no longer listening. The resulting failure only shows that the local entry point is unavailable, not whether the remote connection works.
Android: Make Sure the Test App Uses the Proxy
In v2rayNG, make sure the browser isn’t excluded by the per-app settings, then visit the same test destination. If it works in the foreground but disconnects soon after the screen locks, check the system’s background activity and battery restrictions first. Adjust your device settings to let the client maintain the background connection it needs. Only enable per-app rules after confirming the basic connection works. Test the affected apps after each change so you can distinguish routing issues from background restrictions.
A successful check means the configuration is valid, the client starts without recurring errors, apps can access the network as expected, and the logs or connection details support the routing behavior. A single website loading, a connection icon lighting up, or a successful built-in test doesn’t prove that every app uses the same traffic path. If problems come up later, check in this order: subscription content → local startup → app proxy settings → routing result → remote connection.
For routine updates, you usually only need to update the subscription group; there’s no need to repeat the entire guide. For custom DNS, inbound, or routing rules, see the configuration fields reference. If a subscription update fails, a port is in use, or some apps can’t connect, visit Common Issues and choose the troubleshooting steps that match the symptoms.