Socket
Book a DemoInstallSign in
Socket

js2ray

Package Overview
Dependencies
Maintainers
1
Versions
59
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

js2ray

The v2ray vmess protocol, based on nodejs javascript which you can use on hosts and servers

Source
npmnpm
Version
3.0.4
Version published
Weekly downloads
21
-8.7%
Maintainers
1
Weekly downloads
 
Created
Source

js2ray

A Node.js implementation of the V2Ray VMess protocol (plus other protocols like SOCKS and Freedom). Deployable on cPanel Node.js hosts and dedicated servers.

Install & Run

Install with:

npm i js2ray

Then create a file at /root/js2ray/index.js:

var js2ray = require("js2ray");
// your config here

Run as a systemd service:

systemctl enable js2ray
systemctl restart js2ray

It will stay alive forever.

Debug Mode

Stop the systemd service:

systemctl disable js2ray
systemctl stop js2ray

Then run manually for debugging:

node /root/js2ray/index.js

Setup

Server-side

var js2ray = require("js2ray");

var config = {
    inbounds: [
        {
            protocol: "vmess",
            networks: [
                {
                    type: "http", // ws | tcp | http | xhttp
                    address: "0.0.0.0",
                    port: 80,
                    option: {
                        path: "/ws",
                        fake: "hello world"
                    },
                }
            ],
            users: [
                {
                    id: "b87cd5bc-71d1-e7c7-e031-24390995a198",
                    security: "none", // auto | aes-128-gcm | chacha20-poly1305 | none | zero
                    alterId: 0,
                }
            ],
        },
        {
            protocol: "socks",
            networks: [
                {
                    address: "0.0.0.0",
                    port: 1080
                }
            ]
        }
    ],
    debug: function (...e) {
        // console.log(...e)
    },
    storage: __dirname + "/app.json",
}

js2ray.config(config).start();

Client / Bridge Side (Tunnel)

var js2ray = require("js2ray");

var config = {
    inbounds: [
        {
            protocol: "vmess",
            networks: [
                {
                    type: "http", // ws | tcp | http | xhttp
                    address: "0.0.0.0",
                    port: 80,
                    option: {
                        path: ["/", "/data"],
                        fake: "hello world"
                    },
                }
            ],
            users: [
                {
                    id: "b87cd5bc-71d1-e7c7-e031-24390995a155",
                    security: "none",
                    alterId: 0,
                }
            ],
        },
        {
            protocol: "socks",
            networks: [
                {
                    address: "0.0.0.0",
                    port: 1080
                }
            ]
        }
    ],
    outbounds: [
        {
            tag: "outbound",
            protocol: "vmess",
            networks: [
                {
                    type: "tcp",
                    address: "server.address",
                    port: 1234
                }
            ],
            users: [
                {
                    id: "b87cd5bc-71d1-e7c7-e031-24390995a198",
                    security: "none",
                    alterId: 0,
                }
            ],
        }
    ],
    storage: __dirname + "/app.json",
    debug: function (...e) {
        // console.log(...e)
    },
}

js2ray.config(config).start();

API-Enabled Server

You can leave users: [] and instead manage them remotely via the api field.

var js2ray = require("js2ray");
var fs = require("fs");
var os = require("os");

var config = {
    inbounds: [
        {
            protocol: "vmess",
            networks: [
                {
                    type: "http",
                    address: "0.0.0.0",
                    port: 80,
					ip: ["1.1.1.1"] // limit clients ip 
                    option: {
                        path: "/ws",
                        fake: "hello world"
                    },
                }
            ],
            users: []
        },
        {
            protocol: "socks",
            networks: [
                {
                    address: "0.0.0.0",
                    port: 1080,
					ip: ["1.1.1.1"] // limit clients ip 
                }
            ]
        }
    ],
    api: {
        address: "0.0.0.0",
        port: 2050,
        post: {
            task: function () {
                return JSON.stringify({
                    rmx: Math.round(os.totalmem() / 1024 / 1024),
                    ram: Math.round(os.freemem() / 1024 / 1024),
                    net: 0 // placeholder
                })
            },
            backup: function () {
                return fs.readFileSync(__dirname + "/app.json", "utf-8");
            }
        }
    },
    storage: __dirname + "/app.json",
    debug: function (...e) {
        // console.log(...e)
    },
}

js2ray.config(config).start();

SOCKS Examples

Minimal SOCKS Proxy with Freedom

var js2ray = require("js2ray");

var config = {
    inbounds: [
        {
            protocol: "socks",
            networks: [
                {
                    address: "0.0.0.0",
                    port: 10805,
                }
            ]
        }
    ],
    // if outbounds not defined, "freedom" is used by default
    storage: __dirname + "/app.json",
}

js2ray.config(config).start();

SOCKS-to-SOCKS Tunnel (SOCKS Inbound + SOCKS Outbound)

var js2ray = require("js2ray");

var config = {
    inbounds: [
        {
            protocol: "socks",
            networks: [
                {
                    address: "0.0.0.0",
                    port: 1080,
                }
            ],
			users: [
				{
					user: "u",
					pass: "p",
				}
			],
        }
    ],
    outbounds: [
        {
            protocol: "socks",
            networks: [
                {
                    address: "remote.socks.server",
                    port: 1080,
                }
            ],
			users: [
				{
					user: "server-u",
					pass: "server-p",
				}
			],
        }
    ],
    storage: __dirname + "/app.json",
}

js2ray.config(config).start();

License

seezaara YouTube
seezaara Telegram

Keywords

vmess

FAQs

Package last updated on 07 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts