Import a subscription
You'll know this step is complete when selectable configurations appear in the client's server list. Copy the full link provided by your subscription provider, taking care not to include instructions, line breaks, or extra spaces. A subscription link is not the same as a website login URL. If you copy an account dashboard URL, an update may return a web page instead of a client configuration. Subscription links often contain access credentials, so keep them on your personal devices. Don't post them publicly or paste them into a conversion site you haven't vetted.
Desktop: Add a group and update the subscription
Open v2rayN and find “Subscription Group” in the top menu, then open “Subscription Group Settings” and create a group. The remarks field is for your own reference; use a name that helps identify the source. Paste the full link into the subscription address field, leave other options at their defaults for now, save, and close the settings window. Saving the group only records the address; it's normal for the server list to remain unchanged until you update it.
Return to the “Subscription Group” menu and choose the option to update the current group's subscription. If you see an option to “Update without proxy,” use it for the first setup to avoid relying on a proxy connection that isn't active yet. Wait for the update to finish, then return to the server list and select the group you added. You should see configuration details such as protocol, address, and port. There's no need to edit these fields—keep the subscription's original settings and continue to the next step.
If the list is empty, check the log at the bottom for messages such as subscription fetch failed, invalid address format, or parse error. For a fetch failure, check that your current network can reach the subscription address and that the link hasn't expired. For a parse error, confirm that the provider's output format is supported by your client. Only convert formats if the provider specifically instructs you to; don't change server addresses or transport settings at random after one failed update. If you have other groups, check that a filter hasn't hidden the new entries.
Android: Add a subscription address in v2rayNG
Open v2rayNG, go to “Subscription Group Settings” from the menu, tap Add, enter a remark and subscription address, then save and return to the main screen. Open the main menu and update the subscription; if the interface offers group filters, select the relevant group to view the results. After a successful update, selectable server configurations should appear on the main screen. Scanning a QR code or importing from the clipboard is generally for a single shared configuration, not an automatically updated subscription group. Whether future changes are fetched automatically depends on the import method.
Once server entries appear, subscription setup is complete. Next, decide how app traffic will reach the client rather than enabling every traffic-capture option right away.
Choose a proxy mode
For your first setup, enable only one way of routing traffic through the client. On desktop, start with the system proxy and leave TUN off. This reduces variables from permissions, virtual network adapters, and DNS settings. Keep two separate questions in mind: the system proxy determines whether an app sends traffic to the local client; routing rules determine whether traffic received by the client goes direct, through the proxy, or gets blocked. Choosing a routing preset does not automatically send traffic from every app to the client.
Desktop: Configure the system proxy automatically and leave TUN off
In the v2rayN main window or tray menu, find “System Proxy” and select “Automatically configure system proxy.” “Clear system proxy” removes the proxy settings from your system. “Do not change system proxy” leaves the current settings as they are; it does not enable the proxy automatically. After selecting an option, check the client's status indicator to confirm that automatic configuration is active—opening the menu alone isn't enough.
Next, open the routing settings and choose a preset that matches your needs, such as “Bypass mainland China.” It typically sends destinations matched by the preset rules directly and handles the rest according to the default outbound. The exact behavior depends on the current rules and their order; a domain won't necessarily get the same result in every configuration. For a first connection, stick with one preset and avoid adding large sets of custom rules copied from the internet.
Finally, make sure TUN is off. The system proxy mainly affects apps that follow system proxy settings; some command-line tools and standalone network programs may not use it. That alone doesn't mean setup failed. Test with a regular browser first. If you later need to route traffic from those apps, see the complete guide for TUN permissions, routing, and DNS. You don't need to configure all of that for your first connection.
Android: Understand VPN routing and route settings
v2rayNG typically uses a local VPN connection to capture traffic, while the configuration determines how that traffic exits. There's no desktop-style “Automatically configure system proxy” option to find. For now, keep the default app coverage and don't add per-app exclusions. If another tool on your device is using a VPN connection, stop it first to avoid competing for the same connection. Choose a routing preset that suits your network; you'll authorize the VPN connection in the next step.
| Setting | What to do | What to check |
|---|---|---|
| Desktop system proxy | Automatically configure system proxy | Does the browser follow the system proxy? |
| Desktop TUN | Leave off for now | Rule out permission and virtual network adapter issues first |
| Android VPN routing | Approve the system permission prompt when connecting | Is the VPN connection active, and is the app included? |
| Routing preset | Keep one set of rules for now | Do the matching conditions and final outbound match your expectations? |
Once you've chosen how to route traffic and selected a routing preset, choose the server you want to use. There's no need to change DNS or switch cores yet; keep a basic configuration that's easy to reproduce.
Connect and check the runtime status
Importing a subscription doesn't prove that every configuration in it works, and selecting an entry doesn't always make it the active server. When connecting, confirm both which configuration is in use and whether the core started successfully. For your first attempt, choose one configuration from a known source that hasn't expired. Avoid switching repeatedly, so you can tell which action each log entry refers to.
Desktop: Set the active server and check the logs
In the v2rayN server list, right-click the target entry and choose “Set as active server” or an equivalent menu item. Some versions also support double-clicking or a keyboard shortcut; follow the interface prompts. Then check the row's active indicator or the status bar to confirm that the active selection changed. v2rayN usually reloads the service when the active configuration changes, so there may not be a separate, prominent “Connect” button.
Open the log panel at the bottom and check messages from the recent change. If the core has stopped, or you see errors such as a port already in use, configuration parse failure, or a missing resource file, address that error first instead of repeatedly changing system proxy options. A log showing that the service started normally confirms only that the local runtime is working; test actual access in the next step to see whether the remote server is reachable.
If a port is already in use, open the settings and check the local listening port. The mixed-port listener may be 10808, but use the value shown in your current interface; don't change it just to match this guide. Check whether another client instance is running. If you change the listening port, save and reload the service, then reapply the system proxy so the system points to the same port as the client. Apps with a manually configured proxy address must be updated too.
If no new log entries appear after switching, first make sure the log panel isn't paused or filtered. Then choose “Restart service” from the client menu and check the result. Don't repeatedly restart the entire device without knowing why. For step-by-step error diagnosis, see how to diagnose core startup failures from logs. For now, focus on getting the service to start normally.
Android: Select a configuration and approve VPN access
In the v2rayNG main screen, tap the configuration you want, then tap the Connect button at the bottom. The first time you connect, Android usually shows a VPN connection request. Review and approve it, then return to the client and wait for its status to change. If you deny permission, the VPN connection won't start even if the configuration has been imported. A VPN status indicator means the system connection is active, but it doesn't prove that the remote server is reachable.
If the connection stops immediately, check the logs for the startup error. If it stops after running for a while, check whether the system is restricting background activity. For the initial test, keep the client in the foreground until access works; you can adjust background settings afterward. At this point, the desktop should have a running local core, or Android should have an authorized VPN connection. Next, test an actual request across the full connection path.
Check that it works
Check both whether the target page loads and whether the request uses the expected outbound route—don't rely on the connection icon alone. Open one page that should connect directly under your current rules, then another that should use the proxy and is known to be available. For the first test, use the same browser to avoid mixing in different apps' proxy behavior. A page loading is only the first check; the logs can help confirm whether routing behaved as expected.
Test access first, then check the logs and proxy path
On desktop, if the browser was already open, close and reopen it before testing again. Browser extensions, separate proxy settings, or managed policies can override system settings. If the browser is configured to connect directly, it won't use the system proxy path from this setup. First confirm that the browser uses the system proxy rather than changing the server protocol. On Android, check whether the browser is excluded by per-app routing rules, especially if you've previously customized which apps use the VPN.
Return to the client logs and look for requests from the time you tested access. What appears depends on the log level and core. If outbound entries are available, use them to tell direct connections from proxied ones. If detailed entries aren't present, don't assume the request never reached the client, and don't leave verbose logging enabled just to generate more entries. Before sharing logs, redact subscription links, server addresses, and identity parameters; include only the error details needed to diagnose the issue.
Built-in connection or latency tests can help identify obviously unavailable entries, but their targets and methods differ from everyday browsing. A successful test doesn't guarantee that every app can connect, and a failed test may be caused by the test address itself. Make your final judgment based on real app requests, relevant runtime logs, and repeatable access results.
If it fails, check one thing at a time
If no pages load, first make sure the local core is still running, then check that the system proxy points to the actual listening port. If direct pages work but pages that should use the proxy fail, check the active server, subscription validity, and remote connection errors. If only one app fails, check whether it follows the system proxy or is included in Android's VPN coverage. This separates local traffic-routing issues from remote connection issues, so there's no need to delete all your configurations and start over.
If the logs show a DNS resolution error, check the DNS settings. Note the current values first, then confirm that your network can resolve domain names normally. Refer to the DNS and routing section of the complete guide and adjust one setting at a time. Don't change DNS, the routing preset, the core, and the server all at once; even if the problem goes away, you won't know what fixed it. To understand the difference between DNS resolution and routing, see the glossary.
What to keep and how to disconnect after testing
Once both types of destination work as expected and the logs show no ongoing startup or connection errors, you can keep this basic setup. Note the group, active configuration, proxy mode, and routing preset. Update the subscription when needed; there's no need to import it again every time you start the client. An update may remove old entries. If something goes wrong afterward, first confirm that the active server is still available, then check the other settings.
When you're done on desktop, select “Clear system proxy” in v2rayN before closing the client. If you enabled another traffic-routing method, turn that off too. This prevents the system from sending requests to a local listening port that is no longer running. On Android, tap Stop in v2rayNG and confirm that the system VPN connection has ended. Next time, start the client, confirm the active configuration, then enable the appropriate traffic-routing method.