totravel / shadowsocks-ws

基于 WebSocket 的 Shadowsocks,支持 AEAD,支持反向代理,支持 TLS,兼容 V2RayN,可以部署在 PaaS 或 VPS 上。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Shadowsocks over WebSocket

License GitHub last commit

shadowsocks-ws 是基于 WebSocket 的 Shadowsocks,支持 AEAD,支持反向代理,支持 TLS,可以部署在 PaaS 或 VPS 上,兼容 V2RayN。

服务器部署

shadowsocks-ws 既可以处理 Shadowsocks over WebSocket (over TLS) 流量,也可以处理 HTTP(S) 请求。对于后者,默认使用项目根目录下的 index.html 作为响应。

shadowsocks-ws 使用下列环境变量:

  • 基本
    • METHOD 加密方式,仅支持 aes-256-gcmchacha20-poly1305,默认 aes-256-gcm
    • PASS 密码,默认 secret
    • PORT 端口,默认 80
  • 高级
    • PROXY 反向代理的目标网站,如 https://github.com,默认空
    • CERT 证书的路径,默认空
    • CERT_KEY 私钥的路径,默认空

部署到 PaaS

已知 shadowsocks-ws 可以部署在下列 PaaS 上:

环境变量的配置方法请参考各平台官方文档。

部署到 VPS

克隆代码、安装依赖、构建:

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)即可伪装成私人网盘。
  • 在配有域名和证书的主机上,将环境变量 CERTCERT_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,完成下列操作:

  1. 菜单栏 > 服务器 > 添加[Shadowsocks]服务器
    1. 填写地址、端口、密码、加密方式
    2. 传输协议选择 ws
    3. 有启用 TLS 的,传输层安全选择 tls
  2. 菜单栏 > 设置
    1. 参数设置
      1. 关闭 UDP
      2. 默认TLS指纹 > 从主流的浏览器中选择一个,如 firefox
      3. 用户代理 > 同上
    2. 路由设置 > 菜单栏 > 域名解析策略 > IPIfNonMatch
  3. 底栏 > 路由 > 绕过大陆 / 黑名单
  4. 底栏 > 系统代理 > 自动配置系统代理

求助和反馈

求助和反馈可以在 Issues 版块进行。

讨论和交流

讨论和交流可以在 Discussions 版块进行。

鸣谢

许可协议

MIT

About

基于 WebSocket 的 Shadowsocks,支持 AEAD,支持反向代理,支持 TLS,兼容 V2RayN,可以部署在 PaaS 或 VPS 上。

License:MIT License


Languages

Language:JavaScript 94.3%Language:HTML 5.7%Language:Procfile 0.1%