QUICKSTART / FIRST-TIME SETUP
v2rayN Setup Guide:
Import a Subscription and Test Your Connection
Set up a testable connection in four steps: import a subscription, choose a proxy mode, connect, and test a request. Start with the presets, then adjust routing and DNS if needed.
Before You Start: Client and Subscription URL
Start on the client download page and choose the installer for your device. Install it and open the main window. Use v2rayN on desktop and v2rayNG on Android. On first launch, make sure the window opens normally and settings can be saved. Avoid changing the listening port, routing, DNS, and core all at once. Keep the defaults for now so you have a clear baseline if something goes wrong.
A client is not a server. After installing the client, you still need a valid subscription URL or a complete server share link. A subscription URL retrieves a list of server configurations; a share link usually describes a single server entry, and each has a different import option. This site provides client downloads and configuration guides, not subscription URLs or server accounts. If you don't have a configuration yet, ask your provider to confirm the URL, its expiry date, and which client it supports.
Subscription URLs may contain access credentials. Copy the entire URL, including any parameters after the question mark, and never paste it into a public discussion or online parsing tool. If you need help troubleshooting, share only error details with the URL and credentials removed. Allow about 10 minutes for an initial setup; actual time depends on subscription validity, network conditions, and device permissions.
1. Import a Subscription and Update the List
Add a Subscription Group in v2rayN
Copy the subscription URL, then open the relevant subscription menu in the v2rayN main window and select “Subscription Group Settings.” Add a group and enter an easy-to-recognize label, such as “Daily use,” then paste the full subscription URL into the address field. Check that there are no extra spaces or line breaks at either end and that you haven't copied any explanatory text. Save the group. This saves the subscription source; server entries may not appear until you update it.
Return to the main window and choose Update from the subscription menu. The client may offer options such as “Update via proxy” and “Update without proxy.” If you don't have a working connection yet, try updating without a proxy first. If the subscription URL can only be reached through an existing proxy, establish a working connection before choosing the proxy option. Don't keep switching options just because their labels differ; check the specific error in the update result.
When the update finishes, switch to the group you just created and check that server entries appear. Look for a label, protocol type, server address, and port; there's no need to run a batch speed test yet. If the list already contains older entries, verify that you're viewing the correct group. A successful update means the list was retrieved and parsed, not that every server in it can connect.
If the update fails, first confirm that the device can access the internet, then check whether the subscription has expired, the URL was truncated, or the system clock is incorrect. A parsing error may mean the response was a login page or server message rather than a subscription format the client can read. Don't import an error page as configuration. For more troubleshooting steps, see the subscription update troubleshooting checklist.
Equivalent Steps in v2rayNG
In v2rayNG, open the main menu and go to Subscription Group Settings. Tap Add, enter a group label and subscription URL, and save. Return to the main screen and choose Update subscription from the menu. Once the update finishes, select the group and check its server entries. For a single share link, use an import option such as “Import from clipboard” instead of entering it as a subscription URL. In either case, you're done when the list shows the newly added entries.
At this stage, you should see at least one server entry to choose from. Don't connect yet. First, identify how apps will send traffic to the client and which routing rules will apply once it reaches the core. For details on subscriptions, nodes, and share links, see the glossary.
2. Choose a Proxy Entry Point and Routing Mode
Understand the Difference Between System Proxy and Routing Rules
For your first desktop setup, use the system proxy and leave TUN off. The system proxy tells apps that honor the setting to send requests to the local proxy address. Routing rules decide whether connections that reach the core go through a proxy, connect directly, or use another outbound. These settings operate at different levels: enabling the system proxy does not mean every connection will use a proxy outbound.
Find the system proxy option in v2rayN. It's often at the bottom of the window or in the tray's right-click menu. Locate both “Set system proxy” and “Clear system proxy”; wait to enable it until you've confirmed in the next step that the core starts normally. Don't mix a proxy address entered directly in the browser with the system proxy. If you disable one setting, the other may still affect browser requests.
Next, find the routing selector. For your first setup, choose a preset rule provided by the client, such as one that separates common direct destinations from destinations routed through a proxy. Preset names and rules vary by version, so check the description of the selected option. If you temporarily use a “Global” routing mode for troubleshooting, remember that it only changes how traffic reaching the core is handled; it doesn't prove that all app traffic is being routed through it.
For now, don't add custom rules or change DNS. Keep the bundled settings and note the selected routing mode. If one site works but another doesn't, you can reproduce the issue with the same rules instead of losing track after changing several settings. For more on rule order, domain matching, and outbound tags, see the routing section of the JSON manual.
v2rayNG Uses the Android VPN Interface
v2rayNG normally receives traffic through Android's VPN interface, so you don't need to enter a desktop proxy port in your phone's Wi-Fi settings. For your first connection, keep the default routing and app scope. If you've enabled per-app proxying, check that your browser is included in the selected apps; an app outside that scope can't tell you whether the current proxy connection is working.
Another VPN service running on the device may conflict with this connection. Stop the existing VPN before connecting with v2rayNG. For now, the goal is simply to keep the connection method and rules consistent and reduce variables. Once that's done, return to the server list and continue by selecting an active server and starting the service.
3. Select a Server and Connect
Check the Active Server and Core Logs on Desktop
In the v2rayN server list, select an entry and use the right-click menu to choose “Set as active server” or the equivalent option. Some versions also support double-clicking or a keyboard shortcut; follow the prompt in your version. Make sure the active indicator moves to the selected entry. Don't rely on row highlighting alone: it may show only which entry is selected, not which server the core is using.
Changing the active server usually generates a new configuration and reloads the core. If your version requires you to start or restart the service separately, use the relevant menu option. Then check the log area at the bottom for errors such as configuration load failures, a port already in use, or the core exiting. A listening message means the local endpoint is ready, but it doesn't prove that the remote server connected successfully; test with a real request to confirm.
Find the local listening port in settings and note the current SOCKS endpoint and port. A common example is 127.0.0.1:10808, but the client version and previous settings may differ, so use the value shown in your client. Don't enter the remote server port from your subscription into the browser's proxy settings. The browser connects to the local client, which then connects to the remote server using its configuration.
If the logs report that a port is already in use, check whether another instance of the client or a local proxy app is running. Close any instance you don't need, then restart the current service. If you do need to change the port, save the new value and update any apps where you entered the old endpoint manually. Once the core is running normally, choose “Set system proxy.” Keep the client running for now; whether closing its window exits the process depends on the client settings.
Approve the Connection in v2rayNG
In v2rayNG, tap the target server in the list, confirm that it's marked active, then tap Connect on the main screen. On first use, Android usually displays a VPN connection request. Review and approve it so the system can create the VPN interface. Then check the client connection status and system status indicators. If you deny the request, the service can't receive app traffic as expected; start the connection again and approve it.
If the button says Connected but requests still fail, check the logs for errors at the relevant time. Don't keep switching servers and cores. Note the selected server, routing mode, and error details, then continue to the verification step. The system VPN icon only shows that the interface is running; it doesn't prove that the remote server is accepting requests.
4. Test Whether Real Requests Are Working
Match Browser Results with the Logs
Keep the client log window visible and visit an HTTPS page that you know is accessible and currently available. Use a familiar, fixed URL, then refresh or open a new page so you're not just viewing cached content. Note when you sent the request and check the logs for a matching destination or connection entry. A successfully loaded page paired with a matching log entry is more useful evidence than the connection button or a latency figure alone.
Also check which outbound handled the request. With routing rules, some destinations may connect directly, as intended; a page loading over a direct connection doesn't prove proxy routing is working. How much detail appears in the logs depends on the log level. If a destination isn't shown, the current level may not record access details. If you temporarily increase logging, restore the previous level after testing. Before sharing logs, remove server addresses, subscription URLs, and other sensitive information.
If the client's built-in connection test succeeds but the browser request doesn't appear in the logs, first check whether the browser uses the system proxy or whether an extension or separate proxy setting overrides it. If only one app is affected, check that app's proxy support and connection settings before reinstalling the client. The system proxy can't cover every program. If you need broader traffic capture, see the TUN mode setup guide.
Test the Local Endpoint Separately if Needed
If you're comfortable using a terminal and curl is available on your device, run the following command to test the local SOCKS endpoint. This example assumes the local port is 10808; replace it if your client shows a different port. The request uses a reserved example domain, and the result still depends on the destination's availability and your routing rules.
curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
socks5h sends the target hostname to the SOCKS proxy to resolve, which helps distinguish this request from the browser's own DNS behavior. Receiving HTTP response headers means the request path got a response; it doesn't by itself prove that the request used a proxy outbound. Check the routing rules and logs as well. If the local address can't be reached, check the listening port and service status. If the local connection succeeds but then times out, check the remote server, transport settings, and network conditions.
Use the same approach on Android: after connecting, send a new browser request, then check the v2rayNG logs and test results. If the app works in the foreground but fails after the screen locks, check whether the system's battery management is restricting background services. Don't change every background permission just to test once; first confirm that background suspension is causing the issue, then adjust the relevant device setting.
Keep Working Settings and Disconnect Cleanly
Once requests follow the expected path, keep the active server, subscription group, and routing settings. After updating the subscription, check whether the active server entry is still there; if the list changed, you may need to select it again. When adjusting routing or DNS, change one setting at a time and repeat the same set of tests. To edit fields directly, see the V2Ray JSON Configuration Manual. You don't need to maintain every field in a client-generated configuration by hand.
When you're done on desktop, clear the system proxy before closing the client so apps don't keep sending requests to a local port that's no longer listening. On Android, tap Stop in v2rayNG and confirm that the system connection has ended. A complete setup should leave four results you can check: the subscription is updated, the proxy entry point and routing mode are clear, the service is running, and a real request has been verified. If any step fails, troubleshoot that step rather than starting over with installation.