共计 13795 个字符,预计需要花费 35 分钟才能阅读完成。
基于 docker 的 naiveproxy 一键部署脚本 GitHub: https://github.com/RayWangQvQ/naiveproxy-docker AMD/Debian 我自己测试通过,回复里有朋友反馈 ARM 也是测试通过的。 – [1. 说明](#1- 说明) ## 1. 说明 镜像使用官方代码生成,利用 `GitHub Actions` 构建并上传到 `DockerHub`。 Dockerfile:[Dockerfile](Dockerfile) ## 2. 预备工作
没有 docker 的可以使用下面命令进行安装:
复制代码 不需要自己生成 https 证书,caddy 会自动生成。 ## 3. 部署服务端 一键安装脚本:
复制代码 当不指定参数时,该脚本是互动式的,运行后会提示输入相关配置信息,输入后回车即可。 当然,你也可以像下面那样,直接将参数拼接好后立即执行:
复制代码 参数说明:
– `-o`: cert-mode,证书模式,1 为 Caddy 自动颁发,2 为自己指定现有证书 – `-c`: cert-file,证书文件绝对路径,如 `/certs/test2.zai7lou.ml.crt` – `-k`, cert-key-file,证书 key 文件绝对路径,如 `/certs/test2.zai7lou.ml.key` – `-m`:mail,你的邮箱,用于自动颁发证书,如 `[email protected]` – `-w`: http-port,http 端口,默认 80 – `-s`: https-port,https 端口,默认 443 – `-u`:user,proxy 的用户名 – `-p`:pwd,proxy 的密码 – `-f`:fakeHost,伪装域名,默认 `https://demo.cloudreve.org` – `–verbose`,输出详细日志 – `-h`:help,查看参数信息 容器 run 成功后,可以通过以下语句查看容器运行日志:
复制代码 `Ctrl + C` 可以退出日志追踪。 第一次运行会自动颁发证书,日志可能会先 ERROR 飘红,别慌,等一会。 如果最后日志出现 `certificate obtained successfully` 字样,就是颁发成功了,可以去部署客户端了。 如果颁发证书一直不成功,请检查 80 端口和 443 端口是否开放、是否被占用。 部署成功后,浏览器访问域名,会展示伪装站点: ## 4. 客户端 很多教程,就不说了。 | 平台 | 客户端 | ## 5. 自定义配置 Caddy 的配置文件 `Caddyfile` 已被挂载到宿主机的 [./data/Caddyfile](data/Caddyfile),想要自定义配置,比如: – 添加多用户 等等,都可以直接在宿主机修改该文件:
复制代码 修改完成并保存成功后,让 Caddy 热加载配置就可以了:
复制代码 举个栗子,多用户可以直接添加 `forward_proxy`,像这样:
复制代码 详细的配置语法可以参考 Caddy 的官方文档:https://caddyserver.com/docs/ P.S. 我发现 naiveproxy 插件版地 caddy,Caddyfile 里不支持 `demo.test.tk:443` 的格式,必须像上面那样端口在域名前面,否则会报错。应该是适配有问题,需要注意下。 ## 6. 版本变更 [CHANGELOG](CHANGELOG.md) ## 7. 常见问题 如果使用现有证书,可以自定义;如果要 Caddy 自动颁发,必须占有 80 端口。 Caddy 默认会占用 80 和 443 端口,用来管理证书,当前官方镜像并不支持更改默认端口,也就是一定需要占用 80 端口。 安装脚本可以选择证书模式,选择 2 使用现有证书,就可以不占用 80 和 443 端口了。 |
网友回复:
注册 : curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker 补上 docker 命令 乌龟壳 ARM 可以用
在 7 楼 : 非常感谢,很好用!
kukuyan: 火前留名
qqcool8: 刘明
表弟 : 支持技术贴 1 感谢分享
loonyjoy: 技术贴不错,可惜是 docker
惜为伊人醉 : 感谢大佬的付出
aihoom: 刘铭 试试好用不
ytt: 技术贴 火钳刘明
eudx: 感谢大佬的分享
a4425656: 为什么要用 docker,一是费劲,二是感觉里边可能掺沙子
注册 : 比 hysteria 好用吗?
注册 : 好贴子
ndwuming: 支持
沙龙 : naive 主要解决指纹的问题,让流量完全符合 chrome 浏览器的特征。Hysteria 还没研究过,抽空去看看。
hkvip8: 多谢老哥
在 7 楼 : 能自定义端口吗,80443 不方便
ndwuming: 多谢大佬分享,能自定义更改伪装站么
hanjibin: 先收藏一波
在 7 楼 : Error response from daemon: No such container: naiveproxy
Erik: 马克 感谢大佬的分享
注册 : 已修复,感谢反馈
注册 : mark 一下
在 7 楼 : 可以的。如果只是部署时单纯想修改伪装站点,可以在部署脚本最后加上参数 - f 或 –fake-host:mkdir -p ./naive && cd ./naive && curl -sSL -f -o ./install.sh https://raw.githubusercontent.com/RayWangQvQ/naiveproxy-docker/main/install.sh && chmod +x ./install.sh && ./install.sh -f you.want.com 复制代码 因为参数有点多,我就没把伪装站放到互动式里让用户输入,但是可以通过参数直接指定。如果是已经部署好了,或者是想修改其他配置(比如多用户、账号、密码等),可以去修改宿主机下的./data/Caddyfile 配置文件,改好后 docker exec -it naiveproxy /app/caddy reload –config /data/Caddyfile 复制代码 就可以了,详请已更新到一楼说明。
qqcool8: 技术贴 火钳刘明
在 7 楼 : 技术贴绑定
tycu: 谢谢大佬,先留个名,看以后能用不
lspro: 2023/01/07 04:06:44.692 INFO tls.obtain releasing lock {“identifier”: “eso.japaneast.cloudapp.azure.com”} 每次到这步没反应
Squidward: 这就已经成功了老哥,直接 Ctrl+ C 退出就行,客户端可以连了。你往上面一行看,是不是有“certificate obtained successfully”,就说明证书颁发成功了。之所以停在这,是因为 docker logs -f naiveproxy,会以追踪模式查看 log,所以不会自己退出去。
qqcool8: 非常感谢,很好用!
在 7 楼 : 马一下,大佬厉害
注册 : 绑定
注册 : 多谢大佬
格孑孑 : 支持一下
Erik: 666
b66667777: 这个岂不是会占用 80 和 443?
joshuabu: 环境:ovh ubuntu22.04 已知:[email protected]:~/naive# docker -v && docker-compose -v Docker version 20.10.22, build 3a2c30b docker-compose version 1.29.2, build 5becea4c 问题:docker: ‘compose’ is not a docker command. See ‘docker –help’
cici9911: 手动启动 docker,申请成功证书,但是节点无法连接 工具:小火箭 协议:https 和 http2 都试了 docker 日志:[email protected]:~/naive# docker-compose logs -f Attaching to naiveproxy naiveproxy | 2023/01/07 07:20:51.301 INFO using provided configuration {“config_file”: “/data/Caddyfile”, “config_adapter”: “”} naiveproxy | 2023/01/07 07:20:51.305 WARN Caddyfile input is not formatted; run the ‘caddy fmt’ command to fix inconsistencies {“adapter”: “caddyfile”, “file”: “/data/Caddyfile”, “line”: 4} naiveproxy | 2023/01/07 07:20:51.311 INFO admin admin endpoint started {“address”: “localhost:2019”, “enforce_origin”: false, “origins”: [“//localhost:2019”, “//[::1]:2019”, “//127.0.0.1:2019”]} naiveproxy | 2023/01/07 07:20:51.317 INFO http server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {“server_name”: “srv1”, “https_port”: 443} naiveproxy | 2023/01/07 07:20:51.318 INFO http enabling automatic HTTP->HTTPS redirects {“server_name”: “srv1”} naiveproxy | 2023/01/07 07:20:51.326 INFO http.log server running {“name”: “srv0”, “protocols”: [“h1”, “h2”, “h3”]} naiveproxy | 2023/01/07 07:20:51.333 INFO http enabling HTTP/3 listener {“addr”: “:443”} naiveproxy | 2023/01/07 07:20:51.334 INFO failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details. naiveproxy | 2023/01/07 07:20:51.335 INFO http.log server running {“name”: “srv1”, “protocols”: [“h1”, “h2”, “h3”]} naiveproxy | 2023/01/07 07:20:51.341 INFO http.log server running {“name”: “remaining_auto_https_redirects”, “protocols”: [“h1”, “h2”, “h3”]} naiveproxy | 2023/01/07 07:20:51.341 INFO http enabling automatic TLS certificate management {“domains”: [“ovh.cclcdq.ga”]} naiveproxy | 2023/01/07 07:20:51.343 INFO autosaved config (load with –resume flag) {“file”: “/root/.config/caddy/autosave.json”} naiveproxy | 2023/01/07 07:20:51.348 INFO serving initial configuration naiveproxy | 2023/01/07 07:20:51.344 INFO tls.obtain acquiring lock {“identifier”: “ovh.cclcdq.ga”} naiveproxy | 2023/01/07 07:20:51.332 INFO tls cleaning storage unit {“description”: “FileStorage:/root/.local/share/caddy”} naiveproxy | 2023/01/07 07:20:51.350 INFO tls finished cleaning storage units naiveproxy | 2023/01/07 07:20:51.324 INFO tls.cache.maintenance started background certificate maintenance {“cache”: “0xc00026d3b0”} naiveproxy | Successfully started Caddy (pid=11) – Caddy is running in the background naiveproxy | tail: 2023/01/07 07:20:51.357 INFO tls.obtain lock acquired {“identifier”: “ovh.cclcdq.ga”} naiveproxy | 2023/01/07 07:20:51.358 INFO tls.obtain obtaining certificate {“identifier”: “ovh.cclcdq.ga”} naiveproxy | cannot open ‘tail’ for reading: No such file or directory naiveproxy | ==> /dev/null <== naiveproxy | 2023/01/07 07:20:51.584 INFO http waiting on internal rate limiter {“identifiers”: [“ovh.cclcdq.ga”], “ca”: “https://acme-v02.api.letsencrypt.org/directory”, “account”: “[email protected]”} naiveproxy | 2023/01/07 07:20:51.585 INFO http done waiting on internal rate limiter {“identifiers”: [“ovh.cclcdq.ga”], “ca”: “https://acme-v02.api.letsencrypt.org/directory”, “account”: “[email protected]”} naiveproxy | 2023/01/07 07:20:51.689 INFO http.acme_client trying to solve challenge {“identifier”: “ovh.cclcdq.ga”, “challenge_type”: “http-01”, “ca”: “https://acme-v02.api.letsencrypt.org/directory”} naiveproxy | 2023/01/07 07:20:51.921 INFO http served key authentication {“identifier”: “ovh.cclcdq.ga”, “challenge”: “http-01”, “remote”: “54.218.60.222:56178”, “distributed”: false} naiveproxy | 2023/01/07 07:20:51.938 INFO http served key authentication {“identifier”: “ovh.cclcdq.ga”, “challenge”: “http-01”, “remote”: “23.178.112.103:27854”, “distributed”: false} naiveproxy | 2023/01/07 07:20:51.982 INFO http served key authentication {“identifier”: “ovh.cclcdq.ga”, “challenge”: “http-01”, “remote”: “18.217.58.150:38158”, “distributed”: false} naiveproxy | 2023/01/07 07:20:52.329 INFO http.acme_client authorization finalized {“identifier”: “ovh.cclcdq.ga”, “authz_status”: “valid”} naiveproxy | 2023/01/07 07:20:52.330 INFO http.acme_client validations succeeded; finalizing order {“order”: “https://acme-v02.api.letsencrypt.org/acme/order/905462177/157371397887”} naiveproxy | 2023/01/07 07:20:53.119 INFO http.acme_client successfully downloaded available certificate chains {“count”: 2, “first_url”: “https://acme-v02.api.letsencrypt.org/acme/cert/039da2610aa7ca288bb7a7e24fb4e11e9f87”} naiveproxy | 2023/01/07 07:20:53.121 INFO tls.obtain certificate obtained successfully {“identifier”: “ovh.cclcdq.ga”} naiveproxy | 2023/01/07 07:20:53.122 INFO tls.obtain releasing lock {“identifier”: “ovh.cclcdq.ga”}
在 7 楼 : 先收藏一波顺便点个星星
hanjibin: 感谢分享收藏了
在 7 楼 : 伪装站点正常,配置域名用户名密码正确,修复好了我重装看看
注册 : mac 上测试 了也连不上服务器,默认是 443 端口吗
注册 : 你的日志挺正常地,建议从客户端找找问题,不像服务端问题。另外,1. 客户端连接 proxy 的时候,docker logs -f naiveproxy 会有新日志产生的,你可以看下连接时有没有新日志产生 2. 客户端也有自己的日志的,看下客户端日志说什么
hanjibin: 不错,挺好的,自动申请证书的话没问题。但是已经有网站在运行占用 443 端口的话,Caddyfile 里 tls 设置成网站那边复制过来的证书不起效果,还是会去重复申请证书然后失败
在 7 楼 : 马克,感谢分享
在 7 楼 : 服务端没有连接日志产生,客户端直接显示无法连接服务器
naohjohn: 先马克一下
在 7 楼 : 已手撸, 就是个加了 naive 插件的 caddy,, 安装 go 环境编译出来, 编辑个配置文件就运行了.
qrk: 感谢大佬分享
hanjibin: 技术贴,感谢分享,收藏备用!
haoxiujie: 是的,naiveproxy 其实就是使用 naive 插件编译出的 Caddy,为 Caddy 添加了 forward_proxy 功能。但有个注意点就是,go 其实只在编译阶段有用,运行 Caddy 时跟它就没关系了。所以我打镜像逻辑是先依托于 go 的官方镜像,安装 xcaddy,然后用 xcaddy 编译出带 naive 插件的 caddy,最后把这个 caddy 文件拷贝到 debian 的官方镜像上,发布最后的 debian 镜像。如果不这样,也就是安装 go 和最后运行 caddy 都放一起的话,也不做清理,要占用 1G 左右的资源,docker 镜像只需要 65M(基于 debian,如果基于 alphine 还能更小)。这也是为啥不推荐在宿主机直接手撸的原因(除非宿主机本来就有使用 go 环境的需求)。
注册 : 太奇怪了,重装了还是不行,连不上 tail: cannot open ‘tail’ for reading: No such file or directory
注册 : 收藏了。~
hanjibin: Formate the Caddyfile Start server 2023/01/09 07:29:25.635 INFO using provided configuration {“config_file”: “/data/Caddyfile”, “config_adapter”: “”} Error: adapting config using caddyfile: parsing caddyfile tokens for ‘route’: /data/Caddyfile:14 – Error during parsing: parsing caddyfile tokens for ‘forward_proxy’: /data/Caddyfile:5 – Error during parsing: Wrong argument count or unexpected line ending after ‘jjpssl’ Error: caddy process exited with error: exit status 1 什么问题。
在 7 楼 : 马克,备用
mianfeizhujiwu2: Caddyfile 异常,在 jjpssl 附近,可以检查下是不是输入了什么异常字符
HKCPC: 可以使用了,但是 使用 v2RayN 连接 大概 1 分钟不到就会掉线,断了重新连接又可以了。但是 1 分钟又会断。2023/01/09 22:23:53 [Warning] core: Xray 1.7.0 started 2023/01/09 22:28:13 [Warning] [2244166683] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1867->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:15 [Warning] [221933857] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1869->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:20 [Warning] [831127675] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1872->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:23 [Warning] [3006064210] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1874->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:42 [Warning] [1522382230] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1878->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:42 [Warning] [1522382230] proxy/http: failed to read response from www.gstatic.com > io: read/write on closed pipe 2023/01/09 22:28:46 [Warning] [4069559797] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1881->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:51 [Warning] [2957544304] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1885->127.0.0.1:1080: i/o timeout 2023/01/09 22:28:52 [Warning] [4118445812] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > read tcp 127.0.0.1:1887->127.0.0.1:1080: i/o timeout
Minsk: 换个 socks 端口试试看,我用 1080 好像容易出问题
在 7 楼 : 技术贴绑定
HKCPC: 换了 1090 10800 一样的问题,都是只能连接一分钟左右
在 7 楼 : 输入 docker logs -f naiveproxy 出现 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
注册 : 支持支持
注册 : 2023/01/13 11:37:16.926 INFO tls.obtain certificate obtained successfully {“identifier”: “ccc.700005.xyz”} 2023/01/13 11:37:16.926 INFO tls.obtain releasing lock {“identifier”: “=005.xyz”} ^Z [2]+ Stopped docker logs -f naiveproxy 到这就没反应了 客户端可以 ping 就是不能用
d2k01: 留名,好帖
CHH: 不支持 udp 吗
在 7 楼 : 感谢!
noway: 嗯,我是用的是官方版的 naiveproxy,不支持 upd 的(作者明确表示不会支持 upd:https://github.com/klzgrad/naiveproxy/issues/425)。当然有些三方的仓库自己扩展了 udp 功能,比如 singbox。这一版我计划就保持最忠于原版、保持最简单,就不扩展 upd 了。如果确实需要,可以考虑使用 sing-box(但它不支持伪装站点功能)。
hacn: 不支持伪装站点,意思是特征会明显很多嘛
laoxong: 想要多用户管理面板
在 7 楼 : 这个不会屏蔽 IP 吗.
hacn: 伪装站点指的是,你用浏览器直接访问代理地址,显示的是一个伪装用的正常网站,看不出是 proxy,用来对付墙的主动探测的。当前并没有直接证据表明墙会根据这个特征进行疯禁,所以也不能算必要功能,不是强迫症可以不用。
注册 : 为何我输入 ***.men 的域名,结果日志里是 ***.com 的域名,导致证书申请错误。请教各位大佬
注册 : 还是能整合到 xui 就好了
jinge: 能否加入 UDP 支持,谢谢
joshuabu: 大佬 Hysteria 能搞一个吗
打包的香肠 : 收到,稍后我来出一个基于 sing-box 版的,naive 和 hysteria 共存
在 7 楼 : 这玩意能套 CF 吗
lenchanlhz: curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker 补上 docker 命令 乌龟壳 ARM 可以用
在 7 楼 : 感谢反馈,我来更新到文档里
在 7 楼 : 不知道为啥用在 openwrt 上延时巨高,手机上又正常
Udyf465: navie 与 vless+tls+ws+cf 相比优势在哪呀,大佬
注册 : 我不是大佬,协议的区别,可以看我另一个帖子
注册 : yum install libseccomp-devel