outline是另一个爬墙的方案,主要采用docker的形式运行shadowsocks提供服务,是jigsaw团队折腾出来一个比较友好方案。outline由客户端,服务端管理和shadowbox(加强版的ss)组成,其中客户端支持win/linux/mac/android/iOS平台。截止目前客户端发版617次, 基本满足日常划水了。

outline优点

  • 支持全平台
  • docker化部署
  • 兼容shadowsocks客户端
  • 支持API
  • 支持监控
  • TypeScript实现

0x1 部署

首先你要有一台服务器来部署服务,outline manager服务端软件提供四种方案;其中前三种是DigitalOcean、Google Cloud和AWS三家云厂商。貌似DigitalOcean可以低至5刀每月,最后一种是自建方案,推荐有vps的用户使用。

服务端配置:

  • 下载安装脚本

    1
    wget https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh
  • 配置脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #查看参数
    sh install_server.sh -h

    输出:
    Usage: install_server.sh [--hostname <hostname>] [--api-port <port>] [--keys-port <port>]

    --hostname 访问域名
    --api-port API管理端口
    --keys-port shadowsocks服务端口(兼容ss客户端)
  • 执行安装

    1
    2
    3
    4
    5
    6
    # 环境需要提前安装docker
    sh install_server.sh --hostname 域名 --api-port 80 --keys-port 443

    # docker镜像安装
    quay.io/outline/shadowbox => 封装的shadowsocks镜像
    docker.io/v2tec/watchtower=> docker容器监控镜像
  • 配置
    脚本安装完成后,终端中会输出如下信息。注意apiUlr的json数据, 服务端管理客户端需要这个。

    1
    2
    3
    4
    5
    6
    7
    8
    ......

    To manage your Outline server, please copy the following line (including curly
    brackets) into Step 2 of the Outline Manager interface:

    {"apiUrl":"https://www.demo.com:33104/pHFagvPGtiprJ4gAVRcSVQ","certSha256":"E71C445A78CF6D37D3959AE190D1E350425D5FB956232228FDEBEDD8CE689CC4"}

    ......
  • 服务端客户端配置
    粘贴上述apiUlr json字符到客户端中即可添加

    1
    * 分享链接中KEY需要解码,复制出`ss://`字符, 使用"ss协议工具"解密
  • outline server配置文件(docker容器)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    应用目录: 
    /root/shadowbox
    /root/shadowbox/bin/outline-ss-server
    /root/shadowbox/bin/prometheus

    配置目录:
    /opt/outline
    /opt/outline/persisted-state/shadowbox_config.json
    /opt/outline/persisted-state/shadowbox_server_config.json
    /opt/outline/persisted-state/outline-ss-server/config.yml

0x2 项目分析

outline这个项目前身是uProxy, outline项目主要分为outline-client、outline-server和outline-ss-server三个工程。outline-client采用electron和typescript开发客户端,移动端配置相对简单,github上有iOS客户端ipa文件。outline-ss-server工程使用golang重新实现shadowsocks功能,相对go-shadowsocks2多了端口复用和监控上报功能,更多详情参考官方说明

outline核心是outline-server工程, 包装outline-ss-server作为一个核心代理服务。

项目模块:

  • shadowbox

    1
    shadowbox提供outline-ss-server服务docker镜像构建、配置加载和API服务实现
  • server_manager

    1
    outline服务端管理软件,和outline-client类型都是采用electron实现GUI界面,调用API接口操作
  • sentry_webhook

    1
    日志服务上报,利用Google cloud function功能配合https://sentry.io/outlinevpn平台上报数据
  • metrics_server

    1
    元数据上报,利用Google cloud function功能实现数据上报。outline-server可以设置上报数据开关。具体参考shadowbox_server_config.json配置文件。如果Docker环境变量未设置SB_METRICS_URL值,系统默认上报地址是https://metrics-prod.uproxy.org, 无法通过outline-server修改上报地址。数据上报也是outline被诟病的地方。

outline的优势在于整体配置简单,有自成一体的客户端全家桶,使用方便。从本质上来说,都只是在shadowsocks上套了一层壳而已。

0x3 参考

评论