Getting StartedFirst-time setup with an existing subscription

V2Ray Setup Guide

Import a subscription → choose a proxy mode → connect → verify it works. Get one traffic path working before changing routing rules or advanced settings.

This guide is for first-time v2rayN or v2rayNG users. Have the client and a valid subscription ready, then follow the four steps below. For your initial setup, leave DNS unchanged, avoid stacking multiple rule sets, and don't run multiple proxy tools at once. This makes it easier to check each step.

Step 1: Import a subscription

Copy the full subscription URL from your provider's account page. Don't copy the browser's current login page URL or include surrounding instructions, spaces, or line breaks. A subscription URL usually retrieves a group of server configurations; an individual share link represents just one configuration and uses a different import option. If your provider offers multiple subscription formats, choose the one explicitly recommended for your client. If the format names aren't clear, see Subscriptions and servers in the glossary.

v2rayN: Add a subscription group, then update it

Open v2rayN and select Subscription Group Settings from the Subscription Group menu. Add a group, enter a descriptive name, and paste the subscription URL into the address field. The name is for local display only and doesn't change the remote server. For your first setup, leave other filtering or conversion options at their defaults. Save the settings and return to the main window.

Saving the URL doesn't download the server list. In the Subscription Group menu, run the update action. If you aren't connected yet, choose an update method that doesn't use a proxy. Wait for it to finish, then select the new group to view its servers. Normally, the main panel shows fields such as type, name, address, and port. This confirms the client imported the configurations, but not that a server is reachable.

v2rayNG: Save the subscription, then update it from the main screen

Open v2rayNG, expand the top-right menu, and select Subscription Group Settings. Use the add option to enter a label and subscription URL, then save. Return to the main screen and run the subscription update from the menu. If your version has an Update current group option, select the target group first. You can also update all subscriptions if you have only one group. Server entries should appear in the relevant group when the update finishes.

If the list is still empty after an update, check whether it failed to download, failed to parse, or succeeded but returned no valid entries. For a download failure, check your connection and make sure the URL is complete. For a parsing failure, confirm you imported a client subscription rather than a webpage. If the update succeeded but returned nothing, check the group filter and your provider account status. Don't add the same URL repeatedly; duplicate groups make later updates and server selection confusing.

At this point, just confirm that the target group contains server entries. Don't bulk-edit server settings or import every group yet. Next, decide how app traffic reaches the client, then choose whether that traffic goes through the proxy or connects directly.

Step 2: Choose a proxy mode

“Proxy mode” often refers to two different things: how the system or an app sends traffic to the client, and how the client routes that traffic once received. System proxy, VPN mode, and TUN mode control how traffic is captured; options such as “Bypass mainland China” and “Global proxy” control routing. Understanding these separately helps avoid a common problem: selecting global routing while apps never send traffic to the client.

v2rayN: Start with the system proxy

Find System Proxy at the bottom of the v2rayN main window or in the tray menu. For your first browser test, leave TUN off and plan to use Automatic system proxy configuration. This points the system proxy settings to the client's local listener; only apps that follow those settings will use this route. You can locate the option now, but wait until Step 3 to enable it, after selecting a server and confirming the core is running. This avoids routing browser traffic to an unready local proxy.

Next, find the Routing option. For everyday use, start with a preset such as “Bypass mainland China” if it matches your needs. Destinations matching direct-connection rules will connect directly; other traffic follows the preset. Preset names vary by version, so check their descriptions before switching. To test whether the proxy route works, you can temporarily choose “Global proxy.” This doesn't force every app to use the proxy or send every type of traffic through the server.

You don't need to enable TUN during the initial setup. TUN uses a virtual network interface to capture traffic and can cover more apps, but it also requires system permissions and coordination with routing and DNS. Once the system proxy route works, if an app doesn't follow the system proxy, see the TUN and DNS sections of the advanced configuration guide. Enable TUN only if needed instead of turning on every option at once.

v2rayNG: Start with VPN mode

Check the operating mode in v2rayNG settings. For a first setup, VPN mode is usually the right choice. It uses Android's VPN interface to capture traffic and prompts you for system permission when it starts. Proxy-only mode provides a local proxy endpoint but does not automatically route app traffic like VPN mode. Unless you know how to configure a local proxy in other apps, leave it unselected.

Also check Per-app proxy. For your first test, leave it off so app-list settings don't affect the test browser. If it's enabled, confirm whether the selected apps are proxied or bypassed, and make sure the test browser is on the intended list. Leave routing at its default or another preset you understand. Once these settings are checked, leave sniffing, Mux, FakeDNS, and other options unchanged and continue to the connection step.

Step 3: Select a server and connect

Return to the group you just updated and choose a server your provider marks as available and suitable for your needs. A populated list only confirms that configurations were imported; whether an individual server works depends on its status, your subscription permissions, and your network. For the first test, select one server and note its name. You can try another later. Avoid changing the server, routing, and DNS at the same time, or you won't know what caused the result.

v2rayN: Set an active server, then enable the system proxy

Select a server in the v2rayN list, then use Set as active server in the right-click menu or the equivalent option. Some versions also support double-clicking. Check that the active server indicator changes and that the core starts in the log panel. If you see an error such as a port already in use, a configuration read failure, or the core exiting, fix it before enabling the system proxy.

Once the core is running, set System Proxy to Automatic system proxy configuration. The status bar or tray menu should show the selected setting; keep the routing preset you chose in Step 2. v2rayN may not have a single, dedicated Connect button: the key steps for this desktop setup are selecting an active server, running the core, and pointing the system proxy at the local endpoint. Opening the window or selecting a row alone doesn't mean the browser is using the proxy.

v2rayNG: Connect and approve the system request

Select the target server on the v2rayNG main screen, then tap the Connect button in the bottom-right corner. The first time you use VPN mode, Android displays a connection request indicating that the client will use the system VPN interface. Confirm only after verifying that the request is from the client you just installed. Once connected, the app's status changes, and the system may show a VPN indicator. The exact display varies by Android version.

If another VPN service is running on the device, disconnect it before starting this one. On most Android devices, a single user environment can't run multiple independent VPN services at the same time. Denied permissions, background activity restrictions, or an incorrect per-app list can make the button state change even though traffic isn't working as expected. Check the app status and logs before considering a reinstall.

After connecting, you can use the client's test tools for an initial check, but make sure you understand what each test measures. Some latency tests only check the port or connection setup; a real connection test more closely reflects a specific request. Neither replaces testing an actual app. A single timeout doesn't mean you should delete the whole subscription. Compare another server in the same group, then verify the traffic path in the final step.

Step 4: Verify the connection

A changed Connect button or a status bar icon only shows that a local component has started. To verify the setup, check both real-world access and client records. Reopen a browser tab, visit an HTTPS site expected to use the proxy, then visit one expected to connect directly. Choose sites you know are available; don't mistake an outage at a single site for a proxy connection failure.

Cross-check access results against the logs

If the site loads, return to the client and check the logs. Whether logs show a domain, connection, or outbound route depends on the log level and client implementation. When relevant entries are available, check that the destination used the expected outbound route. Default logs may not show every request; that alone doesn't prove traffic bypassed the client. If needed, temporarily increase log detail, reproduce the issue once, then restore the previous level to avoid retaining unnecessary browsing records.

You can also use a trusted IP address lookup service as a secondary check, but first make sure the current routing sends that request through the proxy. In split-routing mode, seeing your local exit IP on a lookup page doesn't necessarily mean the proxy is broken; the request may have matched a direct-connection rule. For comparison, temporarily switch to global proxy and retry, then restore your usual routing. Don't use a single IP result to draw conclusions about every app.

If it fails, check traffic capture, connection, then routing

If the browser can't access anything, first check whether its traffic is reaching the client. On desktop, confirm Automatic system proxy configuration is enabled, the client is still running, and the browser's own proxy settings aren't overriding the system settings. On Android, confirm the VPN is connected and the test browser isn't excluded by per-app rules. A browser extension or another proxy tool may also be intercepting traffic; disable conflicting options while troubleshooting.

Next, check the server connection. Look for clear errors such as a connection timeout, authentication failure, or parsing failure. For a timeout, try another server in the same group. For an authentication failure, check your subscription access and update the configuration. For a parsing failure, check your network and DNS. If the logs identify an authentication problem, don't blindly change local ports or every routing rule. Change one setting at a time and retry the request so you can compare results.

If global proxy works but a destination fails after you restore split routing, check the routing rules and DNS rather than reinstalling the client. If the browser works but a standalone app doesn't, check whether the app follows the system proxy or is excluded by per-app settings. Look up related terms in the glossary. For domain rules, custom outbounds, or DNS changes, follow the advanced configuration guide one step at a time.

Disconnect and start again later

When you're done on desktop, select Clear system proxy in v2rayN before quitting. This prevents the system from pointing to a local listener that has stopped. Clearing the system proxy does not turn off TUN; if you enabled TUN, stop it using the appropriate option as well. On Android, tap Disconnect in v2rayNG, confirm the VPN has stopped, then close the app.

You usually don't need to paste the subscription URL again next time. Open the client, update the existing subscription if needed, choose an available server, and restore the relevant traffic-capture mode. An update may change or remove existing entries, so check that the active server is still valid afterward. Once your initial test works, keep this simple setup as a baseline. Add split routing, TUN, or other settings one at a time so you can verify changes and roll them back easily.