About 10 minutes

v2rayN and v2rayNG Setup Guide

Starting with subscription import, choose a proxy mode, connect the client, and verify the result. This guide covers only the basics needed for first-time use; see the later documentation for configuration fields and advanced routing rules.

4 sequential steps Desktop and Android UI guidance Connection checks included
Before You Begin

Prepare the Client and a Valid Subscription URL

Before you start, install the client for your platform and obtain a valid subscription URL from your service provider. It is usually a complete link beginning with https://, which lets the client retrieve server configurations. It is different from a single VMess, VLESS, or other share link: a subscription can contain multiple configurations and can be updated by the provider.

When copying the URL, select it from beginning to end without adding spaces, periods, or line breaks from a chat app. Subscription links usually contain access credentials, so treat them as private information and never paste them into unfamiliar websites or public content. If you only have a single share link, you can add it with the client's “Import from Clipboard” function, but this guide focuses on the more common subscription workflow.

You do not need to change DNS, routing JSON, or core parameters during the initial setup. Keeping the defaults makes it easier to determine whether a problem is caused by the subscription, connection, or network environment. After all four basic steps work, continue with the glossary or configuration field reference as needed.

Step 1

Import the Subscription and Update the Configuration List

Save the subscription URL to the client, then run an update manually. Success is not just a “Saved” message—the main screen should show selectable server configurations.

Add a Subscription in v2rayN

After opening v2rayN, check the top menu. Open “Subscription Group” or a similarly named subscription management entry, then choose “Subscription Group Settings.” In the settings window, select Add, give the group an easy-to-recognize note such as a service name or purpose, and paste the complete subscription URL into the address field. The note is only for local identification and does not change the subscription.

After saving, return to the main window, open the subscription menu again, and choose “Update All Subscriptions” or update the new group individually. v2rayN will read the subscription and add its configurations to the main screen. Do not click repeatedly during the update; wait for the status bar or notification to finish. If configurations were already listed, use the group name to confirm that the new entries were added instead of relying only on the total row count.

If the menu offers both “Update Subscription” and “Update Subscription Through Proxy,” choose the regular update first. Use the proxy option only when the current network cannot reach the subscription URL directly but the client already has a working connection. On a fresh installation with no active connection, updating through a proxy usually will not solve the initial import problem.

1 Subscription Group Settings Add a name and URL
2 Save the Subscription Group Return to the main window
3 Update All Subscriptions Wait for the configuration list to refresh

Add a Subscription in v2rayNG

Open v2rayNG and go to “Subscription Group Settings” in the side menu. Tap Add, enter the subscription name and URL, and save the group. Some versions return to the subscription list after saving, while others remain on the edit screen; as long as the new group is visible, return to the main screen and update it.

Open the menu in the top-right corner and choose “Update Subscription.” When the update finishes, the main list should show the configuration names from the subscription. If it is still empty, return to Subscription Group Settings, open the saved entry, and check for line breaks or missing characters at the beginning, end, or middle of the URL. Do not paste two subscription URLs into one field; create separate subscription groups for multiple sources to make updates and troubleshooting clearer.

Confirm That Step 1 Is Complete

After the subscription update, you should see at least one selectable configuration. Names, region labels, and ordering are determined by the provider; the client does not automatically know which entry best suits your network. If the update reports a parsing error, an empty response, or an unreachable URL, do not move on to proxy mode settings—the next steps require a valid configuration.

First confirm that the URL can be copied in full, that the subscription has not expired, and that the device date and time are accurate. Then try switching local networks and updating again. For the differences between subscriptions, nodes, share links, and protocols, see subscription and node terminology. Once configurations appear in the list, continue by choosing a proxy mode.

Step 2

Choose a Proxy Mode and Basic Routing

The proxy mode determines which applications hand traffic to the client, while routing rules determine which outbound the core uses. For the first connection, use a simple combination that is easy to evaluate.

First Distinguish System Proxy from Routing Mode

In v2rayN, “System Proxy” and “Routing Mode” operate at different levels. System Proxy tells browsers and applications that follow system proxy settings to send requests to v2rayN's local listening port. Routing Mode tells the core whether to use a proxy outbound, direct outbound, or block a request based on its domain, IP, or rule set. Changing routing without making applications use the local proxy may leave the browser on its original network path.

For first-time use, choose “Set System Proxy” or the equivalent enable option in the v2rayN tray menu or main-window system proxy menu. Then keep the client's default rule-based mode in the routing settings. This connects common browsers to the client while preserving the default split-routing logic, making basic verification easier.

Global mode sends more requests through the same proxy outbound and can help compare routing behavior for a short test, but it should not be the first choice for diagnosing every problem. If an address fails in rule-based mode but works globally, routing matches are the more likely cause. If both modes fail, return to the active configuration, subscription validity, and local network.

Choosing a Mode in v2rayNG

v2rayNG creates a device-level connection tunnel, and the routing setting on the main screen determines how requests are split. For the initial setup, keep the preset rules and do not import a custom rule file yet. If the settings include “Per-App Proxy,” leave it off so a test app is not bypassed simply because it was not selected. After basic connection verification, set the app scope according to your needs.

Preset mode names may vary slightly between versions, so read the descriptions rather than relying on the labels alone: rule-based mode selects an outbound according to domain and IP conditions, global mode sends most requests through the active proxy configuration, and direct mode mainly pauses the proxy path. Choose rule-based mode here and return to the main screen without switching repeatedly.

Rule-Based Mode

Splits traffic according to the client's preset domain and IP rules, making it suitable for everyday basic use.

Global Mode

Sends more requests through the active proxy outbound for a short routing comparison.

Direct Mode

Uses the local network path for most requests and is generally not suitable for verifying a proxy connection.

Keep the Default Listening Ports for Now

v2rayN typically configures local HTTP, SOCKS, or mixed listening ports. Do not change the defaults for the first connection, and do not let another similar client use the same ports. If core startup clearly reports that a port is already in use, exit other running proxy clients and restart v2rayN. If you truly need both clients running, change the local listening port in settings and update any applications that use a manually configured proxy address.

In routing, domain, ip, geosite, and rule priority are part of the Advanced Config. For now, remember that rules are usually matched in their defined order: the first matching rule determines the outbound. See routing configuration fields for detailed fields and JSON examples; there is no need to edit them during the initial connection.

Step 3

Select an Active Configuration and Connect

Choose one configuration from the subscription list, make it active, and then start the core or device connection. The connection status and proxy mode must both be set correctly.

Set an Active Server in v2rayN

Return to the v2rayN main list and click a configuration from the subscription group you just updated. Press Enter or use the context menu to choose “Set as Active Server.” The active item may be shown with a color, bold text, marker, or status-bar message depending on the version. What matters is that the status area shows the current configuration name, not merely a highlighted list row.

After setting the active server, watch the status bar or log area at the bottom of the window. When the core starts normally, you will usually see a message indicating startup completed, a local listener was established, or the current configuration was loaded. If System Proxy is enabled, browsers and other apps that follow system settings will start sending requests to v2rayN. If System Proxy is off, the core may be running without changing browser results.

v2rayN may remain in the system tray after its main window is closed. To pause it, clear System Proxy or exit the client from the tray menu; do not judge its running state only by whether the main window is visible. When reopening the window, check the active configuration and System Proxy status before starting it again.

Start the Connection in v2rayNG

In the v2rayNG main list, tap a configuration to make it the current selection. Then tap the Connect button at the bottom of the main screen. The first device connection displays a system authorization prompt; approve it to connect. The button state will change and a connection indicator will appear in the system status area. Authorization only allows the client to create the connection tunnel; it does not replace the subscription configuration.

If the connection immediately returns to a disconnected state, open the log and inspect the last few lines. Common causes include an unparseable configuration field, an unresolvable server address, a network timeout, or an incorrect system clock. Do not tap Connect repeatedly; the previous core process may still be shutting down. Wait a few seconds, confirm that the status is stable, and try again.

Four Checks Before Connecting

  1. Configuration selected: The main screen clearly identifies the active configuration rather than showing only an unselected list.
  2. Subscription updated: The configuration came from the current valid subscription, with no parsing errors during the update.
  3. Mode selected: The desktop System Proxy and client routing status match the settings from Step 2.
  4. Core running: The status bar or system connection indicator stays active instead of stopping immediately.

What to Do When a Single Configuration Fails

If one configuration fails to connect, do not delete the entire subscription immediately. Switch to another configuration in the same group and repeat the connection attempt. If another entry works, the client's basic setup is probably sound and the issue is more likely with the original configuration or network path. If every entry in the group fails, update the subscription again and confirm that the local network can reach its URL.

Client logs are the main evidence during diagnosis. Messages mentioning parsing, connection timeouts, refused connections, or occupied ports point to different next steps. For a first setup, note whether the error occurs before startup or after connection; there is no need to edit the full JSON immediately. See inbound configuration and outbound configuration for the relationship between complex logs and inbound/outbound fields.

Step 4

Verify That the Proxy Is Actually Working

The final check covers three layers: client status, application access, and logs. Taken together, they prevent mistaking “the core is running” for “the application is using the proxy.”

Check the Client Status First

In v2rayN, confirm that the status bar still shows the active configuration, the core has not stopped, and System Proxy remains enabled as selected in Step 2. Then inspect the end of the log. Normal operation may show request or connection entries, but the same error should not repeat continuously. An occasional failed request does not necessarily mean the setup is unusable because a page may request many resources; focus on whether errors continue and whether browser access fails at the same time.

In v2rayNG, confirm that the Connect button remains active and the system connection indicator is still present. Before opening the log, note the test time, switch to a browser, make one request, and return to the log to look for a corresponding new entry. This is more reliable than reviewing old startup messages.

Make a Real Browser Request

Open your usual browser, create a private window or close old pages, and open a familiar website again. A new window reduces interference from cache, existing connections, and browser extensions. If the page loads normally, open a second page on a different domain for comparison so an outage on one site is not mistaken for a client problem.

If the desktop client appears to be running but the browser shows no change, check whether the browser uses its own proxy settings. Some browsers or extensions override the system proxy; temporarily disable the conflicting setting or restore the browser to “Use system proxy.” If only some apps are unaffected in v2rayNG, check whether Per-App Proxy is enabled and whether the target app is included in the selected scope.

Troubleshoot Verification Failures in Order

When verification fails, start with the shortest path and change only one variable at a time. First, reconfirm the active configuration. Second, update the subscription and switch configurations. Third, check that System Proxy or the device connection is still enabled. Fourth, switch local networks and try again. Repeat the same browser test after each change so you can identify what made a difference.

If the browser cannot open any page at all, clear v2rayN System Proxy or stop the v2rayNG connection and confirm that the local network works on its own. Reconnect the client after basic network access is restored. If direct access works but everything fails after connecting, focus on the active configuration, core logs, and DNS errors. If only certain domains fail, routing rules or split DNS are more likely causes.

DNS problems often appear as unresolved domains even though a path can still be established to some known addresses. For an initial setup, do not replace the entire DNS configuration immediately; restart the client, switch configurations, and test again. If the problem persists, read the DNS configuration fields to understand the relationship between server lists, domain matching, and query strategies.

Completion Criteria

The initial setup is complete when all of the following are true

  • The subscription group updates successfully and the main list contains selectable configurations.
  • The client stays connected and the core log does not repeatedly show startup errors.
  • The desktop browser uses the system proxy, or Android app requests enter the connection tunnel.
  • Pages on at least two different domains load normally under the current routing mode.

How to Use It Day to Day

You usually do not need to import the subscription again each day. Open the client, update the subscription, confirm the active configuration, and enable System Proxy or the device connection. When the provider changes its configurations, the client retrieves the new content only after a subscription update; restarting the core alone does not replace old subscription data unless update-on-start is explicitly enabled in settings.

When pausing, v2rayN should clear System Proxy before you exit the client; in v2rayNG, simply stop the current connection. When changing subscriptions, create a separate group, confirm that it updates and connects successfully, and then decide whether to remove the old group. This preserves a clear fallback and makes it easier to identify which source caused a problem.

The basic setup is now complete. Look up protocol meanings and the relationship between the client and core in the V2Ray glossary. For inbound, outbound, routing, DNS, or policy fields, continue to the configuration file reference. Once the basic connection is stable, edit Advanced Config fields as needed; troubleshooting will be more focused.

Continue to Client Configuration

After the basic connection works, look up protocol terms, routing rules, and DNS fields as needed. There is no need to change every setting at once.