STEP 01 / SUBSCRIPTION
Import a Subscription: Save the URL and Update Servers
Open v2rayN and select Subscription Group Settings from the Subscription Group menu at the top. Add a group, enter an easy-to-recognize name in Remarks, and paste your subscription URL into the Subscription URL field. The name is only for identifying the group locally and does not affect the connection. Make sure the URL is complete, especially the parameters after the question mark. If you copy it from a chat, check that no period, line break, or extra space was added at the end.
After saving the group, return to the main window. The URL is now saved, but the server list may still be empty—that's normal until you update the subscription. From the Subscription Group menu, select Update Subscription (without proxy) for the group you just added. Since you don't have a working proxy yet, fetching the subscription over your current connection avoids relying on an unfinished setup. If your provider specifically requires an existing proxy, use the corresponding update option once you have a working connection.
Wait for the update to finish, then check the status or log area at the bottom. On success, server entries should appear in the main window, with columns such as alias, address, port, and type. Don't assume the import succeeded just because the group was saved: saving the group and fetching its servers are separate steps. If the list is filtered by group, switch to the group you just added so an empty filtered list isn't mistaken for a failed subscription.
Android Instructions
In v2rayNG, open Subscription Group Settings, add a group, enter a name and subscription URL, and save. Return to the server list and select Update Subscription from the menu. In some versions, the update option is in the top menu. Once servers appear, don't change their protocol settings without a reason; subscriptions usually include the parameters required by the server. Manual changes can be overwritten by the next update and make troubleshooting harder.
If the Update Fails, Check the URL and Response
If you see a download error, first confirm that your device is online, then check that the subscription URL is complete and hasn't expired. Being able to open your service's management page in a browser doesn't mean the subscription endpoint is working. If it returns a login page or an error message, the client can't parse it as a server list. Don't post the full URL when asking for help; share only the error type and a description with credentials removed.
STEP 02 / TRAFFIC MODE
Choose a Proxy Mode: Start with System Proxy, Then Consider TUN
For your first desktop session, start with the system proxy. Open the System Proxy menu in v2rayN, or right-click the client icon in the system tray, and select Set system proxy automatically. This sends requests from apps that follow the system proxy settings to the client's local listening port. Keep the client running; changing the system proxy without starting the core may leave your browser unable to connect.
System proxy and routing mode are separate settings. The system proxy determines whether an app sends requests to the client; routing determines whether those requests go through the proxy or connect directly. Check the routing menu. For a first setup, you can start with a preset such as Bypass mainland China, then test actual access in the next step. If a destination must use the proxy, check that the preset doesn't route it directly. Having a server selected doesn't mean every request will use it.
Don't assume Global in the routing menu takes over every app on your device. It generally means that traffic already entering the client uses the proxy outbound; it won't make an app that ignores system proxy settings change how it connects. Browser extensions, custom proxy settings, and an app's own network options can also override system settings. For your first test, use a browser that follows the system proxy to avoid mixing multiple proxy configurations.
When to Switch to TUN
If the browser test succeeds but an app ignores the system proxy, consider enabling TUN mode. TUN routes eligible traffic through a virtual network interface and may require additional system permissions and routing or DNS settings. Note your current working settings, grant the permissions requested by the client, and then enable TUN. If the core fails to start, turn TUN off and return to the system proxy setup you already tested.
For initial troubleshooting, don't run another VPN or proxy app at the same time. When multiple apps change system routes and DNS settings, it's hard to tell where requests are going. Also, don't enable Allow connections from the local network unless you need it. Local use generally doesn't require this option, and opening the listening interface is a separate configuration choice.
Android Instructions
v2rayNG usually routes traffic through the system VPN interface, so you don't need to follow the desktop system tray proxy steps. Check the routing preset in the app settings and leave other options at their defaults for your first setup. The VPN connection prompt is a system permission request; approve it so the client can create the interface. If another VPN is already connected, disconnect it before testing with this guide.
At this point, the traffic entry method and routing behavior are clear. Next, select one server and connect. Avoid switching modes while connecting so the logs and test results remain comparable.
STEP 03 / CONNECT
Connect: Select a Server and Check the Core Status
Return to the v2rayN main window and select a server from the intended subscription group. Right-click and choose Set as active server; some versions also let you double-click a server. Check the active indicator and interface status—highlighting a row with the mouse doesn't mean the server is active. After switching servers, the client usually reloads the core configuration. Wait for the logs to settle before testing access.
If the menu offers a latency or availability test, you can run it for the selected server, but don't rely on a single result. A test may only check a port or a specific test address; it can't confirm that every site is accessible. If the test returns no result, use the error type in the logs to guide your next step. Network restrictions on the test destination, a server-side connection refusal, and a local configuration error each call for a different fix.
Open the log or status area at the bottom. First check whether the core started, then look for request errors. A port-in-use warning usually means another app or another client instance is using the same local port. Close duplicate instances and restart the core. If you need to change the listening port, make sure the proxy port used by your apps matches the new value. Don't change only the browser's port while leaving the client listening on the old one.
If you see an error about a protocol or configuration field, first confirm that the client and its core can recognize the parameters in the subscription. This is especially important for configurations that use REALITY: don't switch to a core that doesn't support the required features. For your first setup, use the settings generated by the client for that server. Don't manually change encryption, transport, or certificate fields. To learn more about core differences, see the relevant section in the complete setup guide.
Android Instructions
In v2rayNG, tap a server in the list, then tap Start. The first time you run it, a system VPN connection prompt appears; review and approve it. Return to the app and check that the connection remains active. If it stops immediately, open the logs to find the cause. A VPN icon in the status bar only confirms that the interface was created; you still need to test the remote connection and routing in the next step.
If you need to try another server, switch one at a time and keep the same proxy mode and test destination. Note whether the error changes after each switch. This helps distinguish a problem with a specific server from a local configuration issue. Once the core is running, move on to verification.
STEP 04 / VERIFY
Verify the Connection: Compare Access Results with Logs
First, open a site that should use the proxy under your current rules, using a new browser tab. A page loading successfully isn't enough—the destination might also be reachable directly. Keep the client logs visible and look for the corresponding domain or connection entry around the time you visit. If the current log level doesn't record ordinary requests, use the connection details provided by the client; there's no need to leave verbose logging enabled just for this test.
Next, open a destination that should connect directly under your rules and confirm that normal access still works. Test routing against the rules you've selected: the same site can behave differently under different routing presets. Don't treat all requests showing as proxied as the only sign of success. If a destination is supposed to connect directly, a direct outbound entry in the logs means the routing rules are working as intended.
If a page won't load, first check whether the logs show a new request. If there's no request, check that the system proxy points to the current listening port, that the browser isn't using a separate proxy, and that the app follows system settings. If the request appears but the connection fails, then check the server status, error details, and server parameters. This order avoids repeatedly switching remote servers when the request never reached the client.
If the server test succeeds but one site fails, try another destination that should use the proxy, then check whether the routing rules send the failing site directly. If all domains fail but the logs show that connections are being established, investigate the DNS resolution path. Don't change DNS, enable TUN, alter routing, and switch cores all at once. Change one setting at a time, keep changes that help, and revert those that don't.
What to Remember Once It Works
Note the active server, routing mode, and whether system proxy or TUN is enabled. When you switch networks later, start by retesting this known-good configuration. A subscription update may change server names or entries. If the connection suddenly stops working, first check whether the active server is still available; don't assume an update automatically selects the best server for your current network.
Verify the connection on Android in the same order: check the app's connection status, visit a destination, and compare the logs. If it works in the foreground but disconnects when the screen locks, check Android's background activity and battery restrictions for v2rayNG instead of immediately changing the server protocol. Background restrictions, network changes, and remote server issues are separate problems and should be tested separately.
How to Disconnect Cleanly
On desktop with system proxy enabled, select Clear system proxy in the client before exiting. If you're using TUN, turn it off first and wait for the network connection to recover. On Android, tap Stop in the app. If your browser can't connect after you exit, first check whether the system proxy still points to the stopped local client; there's no need to reset the entire network right away.