SETUP NOTES · ABOUT 10 MINUTES

v2rayN Setup Guide: Import Subscriptions, Choose a Proxy Mode, Connect, and Verify

This beginner flow covers the four things required for a first setup: add the subscription to the client, choose how traffic is handled, start the current configuration, and confirm the connection through logs and an actual request.

BEFORE STARTING

Before You Start: Prepare the Client and a Valid Subscription

The setup depends on two conditions: the client must be installed correctly, and the subscription must still be valid. The relevant service provider manages the subscription; the client only reads its server configurations and passes them to the core for operation.

Use v2rayN on desktop devices and v2rayNG on Android devices. If the client is not installed yet, visit the client download page and choose the version matching your operating system and processor architecture. Return here after installation. You do not need to edit core files or write JSON configuration by hand. On first launch, the system may ask for network or VPN permissions. Read the prompt, then allow the client to create a local proxy service according to your device's security policy.

A subscription URL is usually a complete HTTPS link. When copying it, make sure the beginning, end, and query parameters are intact. Do not paste it into a search box, public chat, or unrelated app. Subscriptions are often tied to personal accounts and service access, so treat them like passwords. If the provider supplies a QR code, v2rayNG can read it through subscription management or a scan entry point. For more reliable updates, confirm that the saved item is a subscription rather than a single temporary server.

If the client already contains an old configuration, there is no need to delete it immediately. Note the current subscription group and server name, then add the new subscription to avoid deleting entries you still need. The four steps below are ordered deliberately, so avoid skipping the middle steps during a first setup. After each step, check the interface feedback before continuing.

SUBSCRIPTION

Import the Subscription and Populate the Server List

A subscription is not a connection switch; it is an updatable source of configuration. After saving the URL, you must run an update for the server entries to appear in the client list.

Add a Subscription in v2rayN on Desktop

After launching v2rayN, find the “Subscription Group” or “Subscription” menu at the top of the main window. Menu names may vary slightly between releases, but the menu will include subscription group settings and update actions. Open the subscription group settings and choose Add. Enter an identifiable name in the remarks field, such as the service name or purpose, then paste the complete subscription URL into the address field. The remark is only for local identification and does not change the subscription.

After saving the settings, return to the main window, reopen the subscription menu, and choose Update Current Subscription or Update All Subscriptions. The client will request the subscription and parse its server configurations. When the update finishes, the main list should show several server entries, commonly including an alias, address, port, transport, and subscription group. The import is complete only when content appears in the list; seeing a URL in subscription settings alone does not mean the servers have been updated locally.

If the list is still empty after updating, reopen subscription settings, confirm there are no spaces at either end of the URL, and check that the newly created group is selected. Then inspect the log area at the bottom. Failed network requests usually show a timeout or connection error, while invalid formats produce a message about the subscription content. Do not keep clicking Update repeatedly; first confirm that the URL is still usable, then run one more update.

Add a Subscription in v2rayNG on Android

Open v2rayNG and enter Subscription Group Settings from the side menu. Tap the add button in the upper-right corner, enter a name, paste the URL, and save. Return to the server list, open the upper-right menu, and choose Update Subscription. The interface may remain on the current list briefly during the update. When it finishes, the import result will appear and the relevant entries will be added to the server list.

If the provider supplies a QR code, use the client's scan entry point, but first determine whether the code represents a subscription or a single server. A single server usually creates one fixed configuration that will not change with future subscription updates. A subscription can be updated again to receive server changes. For configurations that need ongoing maintenance, saving the subscription group is usually the better option.

A subscription may contain multiple protocols and transport configurations. During initial setup, there is no need to edit the address, port, TLS, or transport fields individually because these values are supplied as a set by the subscription. Changing one manually may make the configuration inconsistent with the server. For the full JSON structure, see the outbounds section in the Configuration Reference; for now, just confirm that an entry is available to select.

Next: Choose a Proxy Mode →
PROXY MODE

Choose a Proxy Mode and Traffic Scope

The proxy mode determines which requests are handled by the current server. It is separate from whether the server is available, so during initial setup choose a mode with a clear scope that is easy to observe.

On Desktop, Distinguish System Proxy from Routing Mode

In v2rayN, “System Proxy” controls whether browsers and other programs that follow the operating system's proxy settings send requests to the client. “Routing Mode” determines whether requests entering the client use the proxy outbound, direct outbound, or block outbound. They work together but operate at different levels. Selecting a server without enabling the system proxy usually leaves ordinary browsers on their original network path. The client receives those requests only after the system proxy is enabled.

For a first setup, use the tray menu or main window to enable automatic system proxy configuration and select the client's rules mode. Rules mode uses built-in or subscription-provided routing rules to determine where traffic goes, making it suitable for everyday use and troubleshooting. Global mode sends a broader range of requests through the proxy server and can help determine whether a routing rule causes a specific access problem, but it should not be treated as the default answer for every situation. Local addresses, LAN devices, and domains that must remain direct should be handled explicitly by routing rules.

The v2rayN desktop version on macOS and Linux also requires attention to the system proxy state. Desktop environments and network components differ, so menu labels and permission prompts may not exactly match Windows. Use “system proxy enabled” as the reference state, and confirm that your browser reads the system proxy settings. Some apps have their own proxy configuration and will not follow the system settings automatically; select system proxy inside those apps if needed.

Set the Per-App Proxy Scope on Android

v2rayNG takes over traffic through the system VPN service. For a first use, keeping the default routing settings usually makes verification easier, so there is no need to enable complex per-app proxying immediately. If per-app proxying is enabled, clearly choose between “proxy only selected apps” and “bypass selected apps”; their meanings are opposite. If the browser used for verification is not selected in the list, its traffic may bypass the client even when the connection button shows it is running.

If the immediate goal is only to confirm that the subscription and server work, temporarily disable per-app restrictions to keep the verification path simple. After the connection succeeds, narrow the app scope as needed. This separates “the server is unavailable” from “the app is outside the proxy scope” and avoids changing too many variables during the first setup.

After choosing a mode, there is no need to open every settings page immediately. Return to the server list and prepare to select a specific entry and establish a connection. For detailed rules involving domains, IPs, inbound tags, and outbound tags, read the routing section in the Configuration Reference after the basic connection works.

Next: Establish a Connection →
CONNECT

Select a Server and Establish a Connection

Connecting has two parts: designate the active server, then put the client core and the system proxy or VPN service into a running state.

Set a Server as the Active Entry

Select an entry from the subscription group you just added. In v2rayN, you can usually make it active by double-clicking, using the context menu, or choosing a shortcut action. Afterward, the row may show a selection marker, color change, or active-status indicator. In v2rayNG, tap the server name directly; the selected entry usually shows a marker on the left. Do not stop at browsing the list—confirm that the client is explicitly pointing to an active configuration.

There is no need to chase the lowest latency for the first selection. A latency test reflects connectivity at the time of probing and cannot replace a real connection test. If the client offers a test function, use it to rule out entries that time out completely, then choose a configuration that returns a result. An empty test result does not necessarily mean the server is unusable, since some networks or server configurations may not respond to a particular probe. Rely on connection logs and actual access for the final judgment.

Start the Desktop Connection

After selecting a server in v2rayN, confirm that the core has started and choose the proxy state set in the previous step from the system proxy menu. Startup information usually appears at the bottom of the main window or in the log area, while the tray icon and status bar reflect the current system proxy state. Do not immediately terminate the client process. Closing the window may only minimize it to the tray and leave the connection running; exiting from the tray menu stops the local proxy service as well.

If the connection stops immediately after startup, inspect the end of the log first. A port conflict usually appears as a listen failure; incompatible configuration fields produce parsing or startup errors; and an unusable core file stops the process during startup. For an initial check, close other proxy programs using the same local port and restart v2rayN. Do not edit server fields generated from the subscription directly.

Start the Android Connection

After selecting a server in v2rayNG, tap the connection button in the lower-right corner of the main screen. When the system creates a VPN service for the first time, an authorization dialog appears; the client can create a local VPN interface only after you approve it. On a successful connection, the button state changes and the system status area shows a VPN indicator. If the button quickly returns to a disconnected state, open the client log and check for errors during startup or the handshake.

Some Android devices restrict background apps. During the first verification, keep v2rayNG in the foreground and finish the webpage and log checks before testing background behavior. If the connection works in the foreground but drops after running in the background for a while, the cause is more likely the system's battery or background restrictions than an import error.

A connection icon only shows that the local service has started; it does not by itself prove that the target request reached the remote server successfully. The final step is still required. Keep the current server and mode unchanged during verification so any issue can be traced through the same configuration path.

Next: Verify That It Works →
VERIFICATION

Verify the Connection with a Real Request and Client Logs

A reliable verification checks both sides: the browser makes a real request, and the client log records its route and outbound result.

Run a Repeatable Browser Test

Keep the client connected, open a new browser window, and visit the target page you want to verify with the current configuration. Choose a page that loads reliably and can be revisited. Do not start multiple downloads or streaming pages at the same time, as high-volume concurrent logs can make the result harder to read. If the page loads normally, refresh it once, note the time, and immediately return to the client log.

In v2rayN, the log area should show a new connection record, usually including the target domain, target port, inbound used, and outbound route. v2rayNG's log page likewise adds a record after the browser makes a request. When the browser action and log timestamp line up, the request has entered the client. If the browser shows activity but the log does not change at all, check the system proxy, per-app proxy scope, and any independent proxy settings in the browser first.

Locate the Failing Stage from the Symptoms

If the log records the request but then shows a timeout, handshake failure, or remote closure, traffic has entered the client and the issue is more likely in the server configuration, network path, or system time. Run one subscription update, then compare with another server in the same group. TLS-related configurations are sensitive to system time, so confirm that the device date, time zone, and time synchronization are correct.

If the page fails in rules mode but loads in global mode, the server is probably usable and the difference may come from routing matches. Switch back to rules mode and check which outbound receives the target domain instead of staying in global mode. Routing arrays are matched in order, so a broad rule near the front may take over the request early. See the routing rules reference for the complete field relationships.

If a domain fails but a known IP connects successfully, the issue may involve the DNS resolution path. Do not enable multiple DNS approaches at once. Keep the client's default settings first, record the symptoms, then review the relationship between local resolution, remote resolution, and routing rules in the DNS configuration section.

If every server fails to start and the log reports an error immediately while reading the configuration, remove the problematic entries created by the latest update and update the subscription again. If only one server fails while other entries work, there is no need to reinstall the client; narrow the investigation to that server's configuration. The basic order is: confirm the subscription updated, confirm a server is selected, confirm the local service started, confirm the request entered the log, and confirm the remote connection succeeded.

After verification, close the test page and leave the client running if desired. Before quitting on desktop, restore the appropriate system proxy state and then exit from the tray menu. On Android, disconnect using the connection button on the main screen. This prevents the system from retaining an old proxy setting after the client stops, which could disrupt later browser access.

View the Final Check →
FINAL CHECK

Final Check and Further Reading

After the basic setup works, keep one stable, reproducible configuration before adjusting routing, DNS, or app scope.

01

Subscription Updates Work

The subscription group exists, a manual update refreshes the server list normally, and no persistent parsing errors appear.

02

The Active Server Is Clear

The list shows an unambiguous selected state, so after switching entries you can tell which configuration is actually in use.

03

The Proxy Scope Matches Your Intent

On desktop, the system proxy and routing mode work together; on Android, the app used for verification is within the intended proxy scope.

04

Logs Match Real Requests

A browser visit creates a new log record, and its time and destination show that the request entered the client.

QUICK RECOVERY

A Short Fallback Sequence for Connection Failures

During a first setup, common problems usually come from a broken sequence of actions rather than a need to rewrite complex configuration. Restore an easy-to-observe state: keep one subscription group, choose one server, disable extra per-app restrictions, use the default routing mode, and restart the connection. Then verify with a single browser page.

If the browser request does not appear in the log, check the system proxy or VPN scope. If the request appears but the remote connection fails, update the subscription and try another server in the same group. If the core cannot start, check port conflicts and startup errors. If only domains fail, investigate DNS separately. Change one thing at a time and retest to preserve a clear cause-and-effect trail.

This page covers only the basic connection flow. A systematic explanation of the JSON top-level structure, inbounds, outbounds, routing, dns, and policy is available in the Configuration Reference. Continue there after the basic connection works. Establish a usable baseline first; field-level adjustments are usually easier to troubleshoot than changing several parameter groups before the first startup.