shadowsocks-ws 是基于 WebSocket 的 Shadowsocks,支持 AEAD,支持反向代理,支持 TLS,兼容 V2RayN,可以部署在 PaaS 或 VPS 上。
shadowsocks-ws 既可以处理 Shadowsocks over WebSocket (over TLS) 流量,也可以处理 HTTP(S) 请求。对于后者,默认使用项目根目录下的 index.html
作为响应。
shadowsocks-ws 使用下列环境变量:
- 基本
METHOD
加密方式,仅支持aes-256-gcm
和chacha20-poly1305
,默认aes-256-gcm
PASS
密码,默认secret
PORT
端口,默认80
- 高级
PROXY
反向代理的目标网站,如https://github.com
,默认空CERT
证书的路径,默认空CERT_KEY
私钥的路径,默认空
已知 shadowsocks-ws 可以部署在下列 PaaS 上:
环境变量的配置方法请参考各平台官方文档。
克隆代码、安装依赖、构建:
git clone https://github.com/totravel/shadowsocks-ws.git
cd shadowsocks-ws
npm i
npm run build
PM2 是 Node.js 应用的进程管理器。全局安装 PM2:
npm i pm2 -g
将 PM2 配置文件的模板 ecosystem.config.js.example
重命名为 ecosystem.config.js
并根据需要修改 env
结点下的字段。
module.exports = {
apps: [
{
name: "shadowsocks-ws",
script: "./server.min.mjs",
env: {
"NODE_ENV": "production",
"METHOD": "aes-256-gcm",
"PASS": "secret",
// "PROXY": "https://github.com",
// "CERT": "fullchain.pem", // your full chain certs
// "CERT_KEY": "privkey.pem", // your cert key
"PORT": 80
}
}
]
}
- 在装有私人网盘服务(如 Cloudreve)的主机上,将环境变量
PROXY
设置为网盘的地址(如http://127.0.0.1:5212
)即可伪装成私人网盘。 - 在配有域名和证书的主机上,将环境变量
CERT
和CERT_KEY
分别设置为证书和私钥的路径即可启用 TLS。如果启用了 TLS,建议同时将端口调整为443
。
创建守护进程:
pm2 start ecosystem.config.js
设置开机自启:
pm2 startup
pm2 save
常用命令:
pm2 logs
pm2 stop all
pm2 restart all
pm2 delete all
pm2 reload ecosystem.config.js
pm2 save
PM2 的更多用法请参考 PM2 官方文档。
下载并运行 V2RayN,完成下列操作:
- 菜单栏 > 服务器 > 添加[Shadowsocks]服务器
- 填写地址、端口、密码、加密方式
- 传输协议选择
ws
- 有启用 TLS 的,传输层安全选择
tls
- 菜单栏 > 设置
- 参数设置
- 关闭 UDP
- 默认TLS指纹 > 从主流的浏览器中选择一个,如 firefox
- 用户代理 > 同上
- 路由设置 > 菜单栏 > 域名解析策略 > IPIfNonMatch
- 参数设置
- 底栏 > 路由 > 绕过大陆 / 黑名单
- 底栏 > 系统代理 > 自动配置系统代理
求助和反馈可以在 Issues 版块进行。
讨论和交流可以在 Discussions 版块进行。
- websockets/ws Simple to use, blazing fast and thoroughly tested WebSocket client and server for Node.js
- expressjs/express Fast, unopinionated, minimalist web framework for node.
- chimurai/http-proxy-middleware The one-liner node.js http-proxy middleware for connect, express, next.js and more
- byu-imaal/dohjs DNS over HTTPS client for use in the browser
- Marak/colors get colors in your node.js console
- soldair/qrcode qr code generator
- Unitech/pm2 Node.js Production Process Manager with a built-in Load Balancer.
- 2dust/v2rayN A GUI client for Windows, support Xray core and v2fly core and others