安装
version: '3'
services:
cf:
image: lsposed/my:cftunnel.token
container_name: cf
deploy:
resources:
limits:
cpus: '0.10'
memory: 200M
# ports:
# - "23:22"
networks:
- mynetworks
restart: always
# command: tail -f /dev/null
environment:
- token=
networks:
mynetworks:
external: true
登录
cloudflared tunnel login
会弹出来一串链接,复制到浏览器,授权一个域名,终端会自动下载一个证书,并提示:
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
查看已有隧道id和name
TUNNEL_ORIGIN_CERT=/root/.cloudflared/cert.pem cloudflared tunnel list
强制切换某隧道为http2,这一点一定要在cloudflared cli下操作,很坑!
cloudflared tunnel run --protocol http2 id/name
容器下
/usr/bin/cloudflared --no-autoupdate tunnel run --protocol http2 --token <token>
新建隧道
cloudflared tunnel create name
启动隧道
cloudflared tunnel run --url <Source> <NAME or UUID>
e.g
cloudflared tunnel run --url [http://localhost](http://localhost/) Website
关于HTTPS
cloudflared
默认通过80端口访问你的服务.
这意味着如果你的网站只设置了https访问,或者设置了http跳转https时,都有可能不能正常工作.
你需要将http://localhost
改为https://localhost
,并添加参数--no-tls-verify
禁用证书验证.
隧道已经创建好了,但是这时候还不能访问创建的隧道,你需要将他绑定到域名.
绑定隧道到域名
cloudflared tunnel route dns <UUID or NAME> <DOMAIN>
例如:
cloudflared tunnel route dns Website blog.baidu.com
cloudflared tunnel run –help
名称:
cloudflared tunnel run - 运行给定隧道以代理本地 Web 服务器
用法:
cloudflared tunnel [隧道命令选项] run [子命令选项] [TUNNEL]
描述:
运行由名称或UUID标识的隧道,创建您的服务器与 Cloudflare 边缘之间的高度可用连接。您可以将要运行的隧道的名称或UUID作为最后一个命令行参数提供,或者在配置文件中使用 “tunnel: TUNNEL”。
此命令需要在运行 “cloudflared tunnel create” 时创建的隧道凭据文件,但如果通过UUID标识隧道,则不需要 “cloudflared login” 生成的 cert.pem 文件。
如果在运行隧道时遇到其他问题,”cloudflared tunnel cleanup” 可能会帮助删除任何旧的连接记录。
# 隧道命令选项:
--config value 指定 YAML 格式的配置文件。 (默认: "/usr/local/etc/cloudflared/config.yml")
--origincert value 运行 cloudflared login 时为您的源生成的证书的路径。 (默认: "/root/.cloudflared/cert.pem") [$TUNNEL_ORIGIN_CERT]
--autoupdate-freq value 自动更新频率。默认值为 24h0m0s。 (默认: 24h0m0s)
--no-autoupdate 禁用定期检查更新,使用新版本重新启动服务器。 (默认: false) [$NO_AUTOUPDATE]
--metrics value 用于报告度量的监听地址。 (默认: "localhost:") [$TUNNEL_METRICS]
--pidfile value 在第一次成功连接后,将应用程序的 PID 写入此文件。 [$TUNNEL_PIDFILE]
--loglevel value 应用程序日志级别 {debug, info, warn, error, fatal}。在调试级别下,cloudflared 将记录请求的 URL、方法、协议、内容长度,以及所有请求和响应头。这可能会在日志中暴露敏感信息。 (默认: "info") [$TUNNEL_LOGLEVEL]
--transport-loglevel value, --proto-loglevel value 传输日志级别(以前称为协议日志级别) {debug, info, warn, error, fatal} (默认: "info") [$TUNNEL_PROTO_LOGLEVEL, $TUNNEL_TRANSPORT_LOGLEVEL]
--logfile value 将应用程序日志保存到此文件以报告问题。 [$TUNNEL_LOGFILE]
--log-directory value 将应用程序日志保存到此目录以报告问题。 [$TUNNEL_LOGDIRECTORY]
--trace-output value cloudflared 停止时生成的跟踪输出文件的名称。 [$TUNNEL_TRACE_OUTPUT]
# 子命令选项:
--credentials-file value, --cred-file value 读取/写入隧道凭据的文件路径 [$TUNNEL_CRED_FILE]
--credentials-contents value 要使用的隧道凭据 JSON 文件的内容。当与 credentials-file 一起提供时,此内容将优先。 [$TUNNEL_CRED_CONTENTS]
--post-quantum, --pq 提供时,创建一个实验性的后量子安全隧道 (默认: false) [$TUNNEL_POST_QUANTUM]
--features value, -F value 选择各种仍在开发或测试中的功能。(接受多个输入)
--token value 隧道令牌。当与凭据一起提供时,此内容将优先。 [$TUNNEL_TOKEN]
--icmpv4-src value 发送/接收 ICMPv4 消息的源地址。如果未提供,cloudflared 将拨号本地地址以确定源 IP,或者退回到 0.0.0.0。 [$TUNNEL_ICMPV4_SRC]
--icmpv6-src value 发送/接收 ICMPv6 消息的源地址和接口名称。如果未提供,cloudflared 将拨号本地地址以确定源 IP,或者退回到 ::。 [$TUNNEL_ICMPV6_SRC]
--url URL 连接到 URL 上的本地 Web 服务器。 (默认: "[http://localhost:8080](http://localhost:8080/)") [$TUNNEL_URL]
--hello-world
运行 Hello World 服务器 (默认: false) [$TUNNEL_HELLO_WORLD]
--socks5 --url
#指定此隧道是否作为 SOCK5 服务器运行。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress 中的建议在 originRequest 下定义此属性 (默认: false) [$TUNNEL_SOCKS]
--proxy-connect-timeout --url
#用于建立新连接的 HTTP 代理超时。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress 中的建议在 originRequest 下定义此属性 (默认: 30s)
--proxy-tls-timeout --url
#用于完成 TLS 握手的 HTTP 代理超时。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: 10s)
--proxy-tcp-keepalive --url
#HTTP 代理 TCP 保活持续时间。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: 30s)
--proxy-no-happy-eyeballs --url HTTP 代理应禁用 IPv4/v6 回退的 "happy eyeballs"。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: false)
--proxy-keepalive-connections --url HTTP 代理最大保活连接池大小。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: 100)
--proxy-keepalive-timeout --url 用于关闭空闲连接的 HTTP 代理超时。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: 1m30s)
--proxy-connection-timeout value 已弃用。不再起作用。 (默认: 1m30s)
--proxy-expect-continue-timeout value 已弃用。不再起作用。 (默认: 1m30s)
--http-host-header --url 设置本地 Web 服务器的 HTTP Host 头。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 [$TUNNEL_HTTP_HOST_HEADER]
--origin-server-name --url 源服务器证书上的主机名。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 [$TUNNEL_ORIGIN_SERVER_NAME]
--unix-socket value 使用而不是 --url 的 unix 套接字的路径。[$TUNNEL_UNIX_SOCKET]
--origin-ca-pool --url 您的源证书的 CA 的路径。仅当您的证书未由 Cloudflare 签名时才应使用此选项。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 [$TUNNEL_ORIGIN_CA_POOL]
--no-tls-verify --url 禁用对源呈现的证书的 TLS 验证。将允许接受来自源的任何证书。注意: 从您的计算机到 Cloudflare 边缘的连接仍然是加密的。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: false) [$NO_TLS_VERIFY]
--no-chunked-encoding --url 禁用分块传输编码; 如果运行 WSGI 服务器,这很有用。此标志仅在使用 --url 定义您的源并且不使用入口规则时生效。推荐的方式是依赖入口规则,并按 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/configuration-file/ingress) 中的建议在 originRequest 下定义此属性 (默认: false) [$TUNNEL_NO_CHUNKED_ENCODING]
--http2-origin 启用 HTTP/2 源服务器。 (默认: false) [$TUNNEL_ORIGIN_ENABLE_HTTP2]
--bastion 作为跳板主机运行 (默认: false) [$TUNNEL_BASTION]
--proxy-address value 代理的监听地址。 (默认: "127.0.0.1") [$TUNNEL_PROXY_ADDRESS]
--proxy-port value 代理的监听端口。 (默认: 0) [$TUNNEL_PROXY_PORT]
--help, -h 显示帮助信息 (默认: false)
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。