惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
P
Privacy International News Feed
P
Proofpoint News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
GbyAI
GbyAI
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Y
Y Combinator Blog
C
CERT Recently Published Vulnerability Notes
N
Netflix TechBlog - Medium
S
Security Affairs
Spread Privacy
Spread Privacy
罗磊的独立博客
腾讯CDC
MyScale Blog
MyScale Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
The Cloudflare Blog
L
LangChain Blog
博客园_首页
H
Hacker News: Front Page
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
SecWiki News
SecWiki News
A
Arctic Wolf
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
有赞技术团队
有赞技术团队
The GitHub Blog
The GitHub Blog
Cyberwarzone
Cyberwarzone
博客园 - 叶小钗
V
Visual Studio Blog
V
V2EX
T
Tailwind CSS Blog
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
D
Docker

秋水逸冰

丽萨主机:双ISP家宽住宅IP VPS/CN2 GIA精品网/G口大带宽 | 秋水逸冰 Linux Kernel 6.18.x 编译版 | 秋水逸冰 思考未来人与 AI 的关系 | 秋水逸冰 3X-UI 面板安装和使用教程 | 秋水逸冰 Xray-UI 面板安装和使用教程 | 秋水逸冰 WCMP (Windows + Caddy + MariaDB + PHP) Nginx for Windows | 秋水逸冰 Aria2 for Windows | 秋水逸冰 Curl for Windows | 秋水逸冰 Wget for Windows | 秋水逸冰 Windows 11 Enterprise LTSC DD 镜像 Windows Server 2025 Datacenter DD 镜像 重新编译 curl 以支持 HTTP3 | 秋水逸冰 tiny10 和 tiny11 23H2 的 Windows DD 镜像 从 Apache httpd 切换到 Caddy2 LCMP (Linux + Caddy + MariaDB + PHP) Windows 11 Pro for Workstations 22H2 DD 镜像 Shadowsocks 编译版 by Teddysun | 秋水逸冰 适用于 UEFI 启动的多个 Windows 系统 DD 镜像 Linux Kernel 5.15.x 编译版 | 秋水逸冰 制作适用于 WSL 的任意 Linux 镜像 Windows 11 Pro for Workstations 21H2 DD 镜像 Windows 10 Enterprise LTSC DD 镜像 Linux Kernel 5.14.x 编译版 | 秋水逸冰 Linux Kernel 5.13.x 编译版 | 秋水逸冰 Windows Server 2022 Datacenter DD 镜像 在 Windows 10 上安装 Rocky Linux 系统 Linux Kernel 5.12.x 编译版 | 秋水逸冰 Linux Kernel 5.11.x 编译版 | 秋水逸冰 在 Windows 10 上安装 CentOS 系统 Linux Kernel 5.10.x 编译版 | 秋水逸冰 Caddy v1.0.5 编译版 | 秋水逸冰 在 Windows 系统里轻松创建自定义服务 | 秋水逸冰 如何在 CentOS 8 下安装 Docker Engine 在 CentOS 7 下构建 Android 编译环境 使用 Docker Buildx 构建多种系统架构镜像 | 秋水逸冰 如何使用 FirewallD 开启 IP 白名单 WireGuard 一键安装脚本 | 秋水逸冰 域名那些事儿5 | 秋水逸冰 告别 | 秋水逸冰 Windows Server 2019/2016/2012R2 Datacenter DD 镜像 如何制作 Windows Server 2019 的 DD 镜像 介绍几款 Docker 镜像 | 秋水逸冰 如何启用 Shadowsocks 的多端口 | 秋水逸冰 一键安装KMS服务脚本 | 秋水逸冰 关于免费SSL证书的那些事儿 | 秋水逸冰 使用定时任务cron监视Shadowsocks进程 | 秋水逸冰 LAMP新增Letsencrypt支持 | 秋水逸冰 从编译到二进制安装 | 秋水逸冰 PHP模块一览及简要说明 | 秋水逸冰 使用 GPG 加密 Github Commits 一键安装最新内核并开启 BBR 脚本 | 秋水逸冰 Shadowsocks 一键安装脚本(四合一) | 秋水逸冰 FTP 上传一键脚本ftp_upload.sh | 秋水逸冰 限制 IP 访问 WordPress 登录画面 CentOS 6.10安装Python2.7.18 | 秋水逸冰 一键备份脚本backup.sh | 秋水逸冰 域名那些事儿4 | 秋水逸冰 域名那些事儿3 | 秋水逸冰 LAMP下SSL设置教程 | 秋水逸冰 L2TP/IPSec一键安装脚本 | 秋水逸冰 域名那些事儿2 | 秋水逸冰 一键测试脚本bench.sh | 秋水逸冰 解决pip安装M2Crypto失败的问题 | 秋水逸冰 在CentOS下编译安装GCC | 秋水逸冰 域名那些事儿 | 秋水逸冰 MySQL性能优化的简单说明 | 秋水逸冰 Zend Guard Loader简介及下载链接一览 | 秋水逸冰 Windows和Linux下Whois命令的安装和使用 | 秋水逸冰 LAMP一键安装脚本使用说明 | 秋水逸冰 Windows系统下安装dig命令 | 秋水逸冰 如何在Debian下安装Webmin | 秋水逸冰 Apache下部署SSL教程 | 秋水逸冰 Shadowsocks-go一键安装脚本 | 秋水逸冰 少壮不努力,一生在内地 | 秋水逸冰 Google日语输入法离线安装包 | 秋水逸冰 PHP加速缓存Zend Opcache | 秋水逸冰 CentOS下安装aria2教程 | 秋水逸冰 Linux多线程下载工具Axel | 秋水逸冰 phpMyAdmin导入文件错误的解决办法 | 秋水逸冰 PHP编译安装常见错误总结 | 秋水逸冰 phpMyAdmin从4.1.x升级到4.2.x注意事项 | 秋水逸冰 Debian下shadowsocks-libev一键安装脚本 | 秋水逸冰 CentOS下shadowsocks-libev一键安装脚本 | 秋水逸冰 又一家VPS:Vultr.com | 秋水逸冰 Linux系统中常用操作命令 | 秋水逸冰 Eclipse下搭建Python开发环境 | 秋水逸冰 Shadowsocks Python版一键安装脚本 | 秋水逸冰 Git初学者:msysgit和tortoisegit | 秋水逸冰 CentOS 6下编译PHP出错 | 秋水逸冰 Apache如何开启Gzip压缩 | 秋水逸冰 Linux Shell逻辑运算符和表达式详解 | 秋水逸冰 吐槽腾讯:PC用户也是用户 | 秋水逸冰 Webmin:如何安装Perl模块DBI和DBD-MySQL | 秋水逸冰 CentOS下如何手动添加Swap | 秋水逸冰 安装PHP的PDO MySQL扩展 | 秋水逸冰 Javascript获取URL参数值 | 秋水逸冰 总结我所用过的VPS商家 | 秋水逸冰 Apache索引(目录浏览)的那些事儿 | 秋水逸冰 如何新建最低权限的SSH帐号 | 秋水逸冰
使用 Docker 快速部署 Shadowsocks-libev + v2ray-plugin
秋水逸冰 · 2019-11-26 · via 秋水逸冰

条件准备

一台墙外VPS;
一台安装好 SSH 客户端的本地电脑;
如果需要 tls 功能则需要准备一个域名以及一个 Cloudflare 账号。

一、安装 Docker

1.1 以 root 用户登录,执行一键脚本安装 Docker

以Debian系为例,升级源并安装软件

$ apt-get update && apt-get install -y wget vim

执行此命令等候自动安装 Docker

$ wget -qO- get.docker.com | bash

说明:推荐使用 KVM 架构的 VPS,OpenVZ 架构的 VPS 不支持安装 Docker,另外 CentOS 8 不支持用此脚本来安装 Docker。

1.2 对 Docker 的一些命令操作

查看 Docker 安装版本等信息

$ docker version

启动 Docker 服务

$ systemctl start docker

查看 Docker 运行状态

$ systemctl status docker

将 Docker 服务加入开机自启动

$ systemctl enable docker

下面讲解的配置从上往下,难度由简到繁,如果你想一步到位,建议跳过二,三步,直接看第四步。

二、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTP)

2.1 创建配置文件

在 /etc 目录下创建 shadowsocks-libev 目录

$ mkdir /etc/shadowsocks-libev

切换目录至 /etc/shadowsocks-libev

$ cd /etc/shadowsocks-libev

创建并开始编辑名为 config.json 的配置文件

$ vim config.json

以下为配置文件内容示例,添加后保存并退出

{
"server":"0.0.0.0",
"server_port":9000,
"method":"aes-256-gcm",
"timeout":300,
"password":"password0",
"fast_open":false,
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp",
"plugin":"v2ray-plugin",
"plugin_opts":"server"
}

说明:server 后面默认填 0.0.0.0,请不要修改。关于更多参数用法和说明请参考:这个链接
值得注意的是,如果把 plugin_opts 改为

"plugin_opts":"server;mux=0"

后就可以用 Quantumult X。

2.2 用 Docker 结合上面的配置文件创建并启动容器

命令如下:

$ docker run -d --name ss-libev --restart always -p 9000:9000 -p 9000:9000/udp -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev

参数解释:
docker run:开始运行一个容器
-d 参数:容器以后台运行并输出容器ID
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作
–restart 参数:配置容器启动类型,always 即为 docker 服务重新启动时自动启动本容器
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是 TCP 映射,当需要 UDP 映射时候,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以写成不一致
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以写成不一致
teddysun/shadowsocks-libev:这是从 docker hub 下载回来的镜像完整路径名

2.3 后期容器处理常用命令

前面 docker run 后面 –name ss-libev 中的 ss-libev 为 $name,其代表容器识别符,也就是 $name=ss-libev。
查看容器在线状态及大小

$ docker ps -as

查看容器的运行输出日志

$ docker logs $name

重新启动容器,一般在修改除端口外的配置后使用使修改生效

$ docker restart $name

停止容器的运行

$ docker stop $name

移除容器

$ docker rm $name

查看 docker 容器占用 CPU,内存等信息

$ docker stats --no-stream

三、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTPS)

3.1 用 acme.sh 脚本申请 SSL 证书

此处需要用到一个你拥有的域名。参考:这篇文章。下面默认你已经获取到 Clouflare API key,并且也已经安装好 acme.sh 脚本。

3.2 创建配置文件

在 /etc 目录下创建 shadowsocks-libev 目录

$ mkdir /etc/shadowsocks-libev

切换目录至 /etc/shadowsocks-libev

$ cd /etc/shadowsocks-libev

创建 config.json 的配置文件

$ vim config.json

以下为配置文件内容示例,添加后保存并退出

{
"server":"0.0.0.0",
"server_port":9000,
"password":"password0",
"timeout":300,
"method":"aes-256-gcm",
"fast_open":false,
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp",
"plugin":"v2ray-plugin",
"plugin_opts":"server;tls;host=mydomain.me;cert=/etc/shadowsocks-libev/plugin.crt;key=/etc/shadowsocks-libev/plugin.key"
}

说明:server 后面的 0.0.0.0 不要修改,plugin_opts 后面的配置除了域名外也不要修改

3.3 安装证书到 Shadowsocks-libev 配置文件的目录 /etc/shadowsocks-libev

假设你的是域名是 mydomain.me,且已经在 Cloudflare 上设置好 A 记录解析
CF_Key 的值替换成你自己的 Cloudflare API Key

$ export CF_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxx"

CF_Email 的值替换成你自己的 Cloudflare 注册邮箱账号名

$ export CF_Email="[email protected]"

用 acme.sh 脚本申请证书

$ acme.sh --issue --dns dns_cf -d mydomain.me -k ec-256

安装证书到 Shadowsocks-libev 配置文件的目录 /etc/shadowsocks-libev

$ acme.sh --installcert -d mydomain.me --fullchain-file /etc/shadowsocks-libev/plugin.crt --key-file /etc/shadowsocks-libev/plugin.key --ecc

3.4 用 Docker 结合上面的配置文件创建并启动容器

$ docker run -d --name ss-libev --restart always -p 9000:9000 -p 9000:9000/udp -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev

四、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTP) + TLS + caddy + CDN

4.1 申请 SSL 证书以及安装证书

参考上面的 3.1 和 3.3 章节。

4.2 创建配置文件

在 /etc 目录下创建 shadowsocks-libev 目录

$ mkdir /etc/shadowsocks-libev

切换目录至 /etc/shadowsocks-libev

$ cd /etc/shadowsocks-libev

创建 config.json 的配置文件

$ vim config.json

以下为配置文件内容示例,添加后保存并退出

{
"server":"127.0.0.1",
"server_port":9000,
"password":"password0",
"timeout":300,
"method":"aes-256-gcm",
"fast_open":false,
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp",
"plugin":"v2ray-plugin",
"plugin_opts":"server;path=/ray"
}

说明:因为要监听本地,所以 server 后面地址填 127.0.0.1, 9000 端口不对外开放,此处只是在 websocket 的配置上加了个 path 参数(后面的值可以更改,比如可以改为 path=/teddysun),tls 则要由 caddy 来提供。

4.3 用 Docker 结合上面的配置文件创建并启动容器

命令如下:

$ docker run -d --name ss-libev --restart always --net host -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev

说明:此处不用端口映射,直接使用

--net host

参数配置,让容器跟宿主机共用网络。

4.4 安装 caddy

执行下面一条命令安装 caddy v1.0.5,并把它放到 /usr/bin 目录下(此为 Linux x86_64 系统示例)

$ wget -O /usr/bin/caddy https://dl.lamp.sh/files/caddy_linux_amd64
$ chmod 755 /usr/bin/caddy

如果是 Linux x86 系统,则执行如下命令

$ wget -O /usr/bin/caddy https://dl.lamp.sh/files/caddy_linux_386
$ chmod 755 /usr/bin/caddy

4.5 配置 caddy 目录

在/root目录下创建 caddy 目录并切换至此

$ cd /root && mkdir caddy && cd caddy

安装证书和 key 到 /root/caddy 目录下

$ acme.sh --installcert -d mydomain.me --fullchain-file /root/caddy/caddy.crt --key-file /root/caddy/caddy.key --ecc

4.6 创建 caddy 配置文件

创建文件并开始编辑 caddy 配置文件 caddy.conf

$ vim caddy.conf

下面是 caddy 配置文件示例,添加后保存并退出

mydomain.me:443 {
  gzip
  tls /root/caddy/caddy.crt /root/caddy/caddy.key
  log /root/caddy/caddy.log
  proxy / https://www.baidu.com
  proxy /ray 127.0.0.1:9000 {
    websocket
    header_upstream -Origin
  }
}

说明:此处只要关注路径和端口号,9000 是 /etc/shadowsocks-libev/config.json 里配置的,/ray 是配置文件内 plugin_opts 后面的 path=/ray,请注意替换。另 caddy 需要监听 443 端口,请确保 VPS 的 443 端口没有被占用。

4.7 运行 caddy

后台运行 caddy

$ nohup caddy -conf /root/caddy/caddy.conf &

可以查看 caddy 运行产生的日志

$ cat /root/caddy/caddy.log

确认 caddy 运行状态,下面的命令有输出则表示正常

$ ps -ef | grep -v grep | grep caddy

4.8 开启 Cloudflare 的 CDN 保护,开启 SSL/TLS 的 Full 模式

如下图所示,第 1 步,开启 CDN

如下图所示,第 2 步,开启 Full 模式

五、客户端配置

5.1 Windows 客户端

先到这个链接下载 v2ray-plugin-windows-amd64 的安装包,下载完成后解压到 shadowsocks-windows 的安装目录下,并重命名为 v2ray-plugin.exe 即可。
选项说明:
插件程序:v2ray-plugin
如果选的是第一种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP),插件选项这里可以留空
如果选的是第二种,Shadowsocks-libev + v2ray-plugin over websocket (HTTPS),插件选项这里填 tls;host=mydomain.me
如果选的是第三种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP) + TLS + caddy + CDN,插件选项这里填 tls;host=mydomain.me;path=/ray
值得注意的是:如果你把 plugin_opts 改为

"plugin_opts":"server;mux=0"

后就可以用 Quantumult X 来使用这个节点,但 Windows 客户端不能直接使用了。

5.2 Android 客户端

先到这个链接下载插件并安装,其余的配置都跟上面 Windows 客户端一致。

5.3 iOS 客户端

请使用 Shadowrocket,也就是俗称的小火箭,添加如下配置使用。
填写服务器,端口,密码,选择算法,插件选择 v2ray-plugin

点击插件 v2ray-plugin

设置插件 v2ray-plugin,开启 TLS,填写路径,服务器则填写你的域名

六、写在最后

本文为网友【毕世平】所总结,我只是在其基础上稍作修改。如有不对的地方,欢迎在评论里指出。

参考链接:

https://shiping.date/6.html

转载请注明:秋水逸冰 » 使用 Docker 快速部署 Shadowsocks-libev + v2ray-plugin