docker v2ray ss emby CDN 自选 cloudflare 节点 简单教程 + trojan 特洛伊

参考 使用docker快速部署shadowsocks-libev+v2ray-pluginV2Ray拒绝减速CDN,自选香港日本CDN节点两位的方法, 结合秋水提供的 ss-libevv2ray 两个 dockers 用起来非常爽,全走CDN,不再阻断,速度尚可。总结一下

废话,可以不看


垃圾小鸡如何拯救(剁手党如何回本)?雪嫩的小白,如何有工程师的感觉? 经济不景气如何提振?看这里就对了 折腾了两天,基本实现想要的效果:docker 配置 ss+v2ray+emby ws+http+tls+CDN。为了掩饰,我在aws的lightsail开了一个爱尔兰节点的小鸡,512内存,基本匹配市面垃圾小鸡。 Docker的有点就是一旦搭建好以后,可以随便折腾,配置文件保存到本地,换机分分钟 caddy 的优势是及其轻量,同时可以自动申请并续期证书,方便到家 但是现在有一个坑卡住了,就是caddy自动申请脚本,还是要到dns去添加txt记录,而教程里面是要到阿里云的dns去添加txt。所以不能自动。以本白现在的水平,搞不定了,期待高手出现。。。 除了这篇手动教程,还有很多选择,比如这篇面板教程,也非常方便。还有这篇,是我之前一直在用的一键脚本。在多数新装的vps上面都可以成功。本教程的目的就是一个:折腾 如果你对自己折腾出来的东西感到开心,不怕麻烦,那就继续 当然,自己折腾,把思路整理清楚了,基本上什么环境都可以适用,并且配置文件完全自己驾驭,想改什么都可以。不像用脚本,出了问题,出了换系统,换脚本之外,别无他法,相当无助 当然,教程还需要完善,也有很多错误,需要慢慢改 caddy配置文件里面有3个网站v2,ss,emby 按需使用,增减设置文件,开停相应docker即可 折腾开心哈 注意,教程里面的 邮箱信息 API 信息以及密码 UUID等 需要你自己更改,不要和教程的一毛一样

视频记录


干什么都有第一次,这个视频够简陋的了,打码就废了好长时间。机器也不行,小白难,穷小白难上加难

搞定CDN


##准备工作 lightsail的系统太操蛋,先dd个debian 9 用脚本

apt update
apt install curl screen zip nload nano -y
apt-get install -y xz-utils openssl gawk file
bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 9 -v 64 -a -firmware

等几分钟就可以root登陆了 密码是 MoeClub.org

直接上CDN,看这个视频,到这个网站添加域名。主域名,二级域名都行. 这里添加3个二级 分别是 sslbv v2ray 和 emby ARecord Cname 记下CNAME,然后去dns服务商出添加cname,比如阿里云免费提供的dns解析 如下添加3个 DNS-Cname DNS-Cname1

安装一些必备的东西

apt update
apt install curl screen zip nload nano fuse -y

安装embyserver的部分参见之前的帖子,注意建立本地用户就行了,不需要连接账户登陆。因为我不知掉的原因,用emby账户无法走CDN加速。

安装caddy并申请证书


证书用caddy申请,参照这篇帖子,看到搞定cloudflare的 API KEY 即停。后面的申请不用acme.sh脚本。 在ssh里面执行 export的环境设置

export CLOUDFLARE_EMAIL="[email protected]"
export CLOUDFLARE_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxx"

安装caddy

curl https://getcaddy.com | bash -s personal tls.dns.cloudflare

caddy申请证书

建目录,放文件

mkdir /root/caddy
cd /root/caddy
nano /root/caddy/Caddyfile

把下面内容添加到Caddyfile

sslbv.madelonely.ml {
  gzip
  tls {
      dns cloudflare
}
  log /root/caddy/caddy.s.log
  proxy / https://baidu.com
  proxy /dxz 127.0.0.1:9999 {
    websocket
    header_upstream -Origin
  }
}

v2ray.madelonely.ml {
  gzip
  tls {
      dns cloudflare
}
  log /root/caddy/caddy.v.log
  proxy /dxz 127.0.0.1:8888 {
    websocket
    header_upstream -Origin
  }
}
emby.madelonely.ml {
  gzip
  tls {
      dns cloudflare
}
  log /root/caddy/caddy.e.log
  proxy / 127.0.0.1:8096 {
   header_upstream -Origin
  websocket
}

}

然后执行

caddy -conf /root/caddy/Caddyfile

这时候回提示输入邮箱,随便写,回车之后开始验证dns,不要紧,继续操作。 VerifyDNS 回车后到之前 CF Parterner 网页,刷新一下,找到如下的新记录 txt 将两行文字复制到dns解析的地方,添加txt记录 完成验证 Record ssh这边已经验证完毕,并正常运行caddy服务 Verified 接着按照视频教程走可以指定CDN节点,最后效果是这样。当然,也可以全部搞定再慢慢调整 AssigningCDN 把申请好的sslbv的证书复制到/root/caddy/ssplugin/

mkdir /root/caddy/ssplugin/

cp /root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/sslbv.madelonely.ml/sslbv.madelonely.ml.crt /root/caddy/ssplugin/plugin.crt

cp /root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/sslbv.madelonely.ml/sslbv.madelonely.ml.key /root/caddy/ssplugin/plugin.key

至此,tls搞定。

挂载给emby读取00盘


curl https://rclone.org/install.sh | bash
mkdir /root/rclone/
mkdir /root/rclone/00

先执行rclone config 然后q退出

nano /root/.config/rclone/rclone.conf

把正常使用的rclone.conf文件内容粘贴到rclone.conf里面,不用重新配置rclone了 添加到开机启动

nano /etc/crontab

最下面加入

@reboot root rclone mount TD00: /root/rclone/00  --buffer-size 1G --vfs-read-chunk-size 256M --vfs-read-chunk-size-limit 2G  --allow-non-empty --allow-other   --dir-cache-time 12h  >/dev/null 2>&1 &

也可以把证书更新后copy给ss docker用的加到crontab里面,真正实现证书全自动续期,不用再管了 (注意一下,如果按照本片教程指定CDN是无法全自动,如果直接cf指定节点,也就是有cf而不是像我由阿里云解析dns,那是可以做到全自动的)

0 0 0 * * root  cp /root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/sslbv.madelonely.ml/sslbv.madelonely.ml.crt /root/caddy/ssplugin/plugin.crt

0 0 0 * * root cp /root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/sslbv.madelonely.ml/sslbv.madelonely.ml.key /root/caddy/ssplugin/plugin.key

为了避免错误,先增加虚拟内存,2-3g

wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh

按1再写1000-2000

挂载

可先把后台参数 >/dev/null 2>&1 & 去掉 加上 -vvv 参数 等没问题在加后台参数 >/dev/null 2>&1 &

rclone mount TD00: /root/rclone/00  --buffer-size 1G --vfs-read-chunk-size 256M --vfs-read-chunk-size-limit 2G  --allow-non-empty --allow-other   --dir-cache-time 12h  >/dev/null 2>&1 &

docker镜像


v2ray

在 /root/caddy/v2ray下新建文件config.json

mkdir /root/caddy/v2ray
nano /root/caddy/v2ray/config.json

将如下内容填入config.json文件(相应位置自己改)

{
        "log" : {
                "access": "/var/log/v2ray/access.log",
                "error": "/var/log/v2ray/error.log",
                "loglevel": "warning"
        },
        "inbounds":[{
                "port": 8888,
                "protocol": "vmess",
                "settings": {
                        "clients": [
                                {
                 
                                        "id": "ae2a6c5e-11d7-11ea-8d71-362b9e155667", 
                                        "level": 1,
                                        "alterId": 88
                                }
                        ]
                },
                "streamSettings": {
                        "network": "ws",
                        "wsSettings": {
               
                                "path": "/dxz" 
                        }
                }
        }],
        "outbounds": [{
                "protocol": "freedom",
                "settings": {}
        }]
}  

这个配置文件是否可用,自己可以到这个网站自查。 这个网站可以生成自己的uuid

ss-lbev

创建ss-libev配置文件

mkdir /root/caddy/ssplugin
nano /root/caddy/ssplugin/config.json  

写入如下内容

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

emby

emby不需要配置文件,一行命令搞定

安装docker

脚本

curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh

pull docker镜像

docker run -d -p 8888:8888 --name v2 --restart=always -v /root/caddy/v2ray:/etc/v2ray teddysun/v2ray

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

docker run --name=emby -d -v /root/emby/config:/config   -v /root/rclone/00:/00     --net host  -e UID=1000  -e GID=100  -e GIDLIST=100 --restart unless-stopped  emby/embyserver:latest

再次添加 api

export CLOUDFLARE_EMAIL="[email protected]"
export CLOUDFLARE_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxx"

执行caddy,启动3个docker的cdn连接

caddy -conf /root/caddy/Caddyfile

这时候可以看提示,有错误就看看哪儿的问题,解决一下。没有问题就下一步

开机启动脚本


新建启动文件

nano /root/caddy/caddystart

写入下列内容

#!/bin/bash

CLOUDFLARE_EMAIL="[email protected]" \
CLOUDFLARE_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxx" \
caddy -conf /root/caddy/Caddyfile >/dev/null 2>&1 &

利用crontab自启动

nano /etc/crontab

最下一行写入

@reboot root bash /root/caddy/caddystart

这样每次重启就自动运行三个网站,并自动开启CDN。 更新证书还是没有解决,因为指定CDN的原因,必须手动复制txt到dns解析服务。 但是如果不指定DNS,那么这个脚本就真正做到完全自动化了 一点点遗憾

据最新“美颜社”消息,指定cdn时候验证的txt不再是随机字符,而是固定格式(截屏) 格式如下: CDN 也就意味着,添加一次txt,以后每次开机,caddy会帮你自动更新或申请证书。

更新证书无需验证

自此,完全自动化达成•真香

VOILA


补充

1. 我这里开cf 白天看00盘里的4k电影很轻松,remux 4k 有难度。可能是CDN的IP选的不好,以后慢慢找

2. 晚上速度待测,昨天速度只有10Mb/s,比较差,符合垃圾小鸡的水平,但是比直连要快

3. 晚上高峰结果,40m码率无压力

4. 爱尔兰小鸡直连和CDN对比

compare

5. 如果都搭建好了,发现不走CDN,试试去cloudflare改下SLL/TLS设置

SSL/TLS

6. docker的用途还有很多,比如折腾久了,想记录一下,写个记录之类的,比如这个博客就是用docker搞定的改Hugo了,也挺香。typecho wordpress hexo 都可以,简单几步,5分钟,以后会出教程。

7. 添加特洛伊 trojan

申请证书

只需在/root/caddy/Caddyfile添加一个记录,就可以申请 证书

trojan.trumptheidiot.tk {
  gzip
  tls {
      dns cloudflare
}
  log /root/caddy/caddy.s.log
  proxy / https://baidu.com
  proxy /dxz 127.0.0.1:9999 {
    websocket
    header_upstream -Origin
  }
}

运行 caddy -conf /root/caddy/Caddyfile 就可以自动开始申请证书,添加TXT记录方法同上

证书申请完后,记得先删/root/caddy/Caddyfile文件内刚刚添加的用于申请证书的内容,否则就套了CDN,trojan的效果大打折扣。

新建目录,写配置

mkdir /root/trojan
nano /root/trojan/config.json

密码dxz,改成你想要的

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "dxz"
       
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/config/certificate.crt",
        "key": "/config/private.key",
        "key_password": "",
        "cipher": "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256",
        "prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "session_timeout": 600,
        "plain_http_response": "",
        "curves": "",
        "dhparam": ""
    },
    "tcp": {
        "prefer_ipv4": false,
        "no_delay": true,
        "keep_alive": true,
        "fast_open": false,
        "fast_open_qlen": 20
    },
    "mysql": {
        "enabled": false,
        "server_addr": "127.0.0.1",
        "server_port": 3306,
        "database": "trojan",
        "username": "trojan",
        "password": ""
    }
}

启动trojan docker,端口由于我在原有基础上添加,所以不能用443,改成32400,假装是plex服务器。你可以改成443,更真一些。

启动trojan docker

docker run -dt --name trojan -v /root/trojan:/config -p 32400:443 trojangfw/trojan

看启动日志,排错

docker logs -f trojan

客户端

可以安装OpenWRT,一些固件已经自带trojan了 win mac 可以参考这篇文章 文章写的比较早,ios没提到小火箭,亲测小火箭可用,只需要添加相应(子)域名和密码即可。 注意的是,用cloudflare DNS 解析的时候,一定要把 云朵图标熄灭 CDNoff 有疑问或者有能力帮我填坑请(via频道主加群)


金牌大学渣
WRITTEN BY
金牌大学渣
Web Developer