前期准备
目前探索到的一种方式是,需要使用命令行进行登录,并创建隧道等方式。因为暂时没有找到其他的方式,所以只能先按这种进行操作。
1. 登录授权
docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel login输入命令后提示打开如下 url,浏览器打开登录即可。
登录后会进入如下界面,随便点击一个域名进行授权。
点击授权即可。
授权以后,证书就下载完成了。
到这里,第一步就完成了。
2. 创建隧道
本地配置管理的隧道和界面管理不通用,所以需要使用命令进行创建隧道,而不能使用管理界面创建的隧道。
docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel create testtest 为创建的隧道名称,这里随意即可。执行命令后会在本地生成一个以隧道 id 命名的 json 文件。
3. 创建配置文件
在 /home/docker/cloudflared 目录下创建 config.yaml 文件,部分内容需要替换为自己的配置。
tunnel: <tunnel-id>
credentials-file: /root/.cloudflared/<tunnel-id>.json
protocol: http2protocol: http2
ingress:ingress:
- hostname: "*.domain.xyz" - hostname: "*.domain.xyz"
service: http://localhost:80 service: http://localhost:80
- service: http_status:404 - service: http_status:404credentials-file: /root/.cloudflared/<tunnel-id>.json
protocol: http2protocol: http2
ingress:ingress:
- hostname: "*.domain.xyz" - hostname: "*.domain.xyz"
service: http://localhost:80 service: http://localhost:80
- service: http_status:404 - service: http_status:404替换为上一步创建的隧道的 id号,注意是一串数字字母组成的那个,不是隧道名,符号〈 〉要去掉
*.domain.xyz 替换为自己的域名,注意通配符需要加上,引号“ ”要保留
这里将所有的流量都转发到 80 端口。
4. 创建路由
运行命令之前需要保证之前没有创建过通配符的 dns 记录。
docker run --rm -u root -v /home/docker/cloudflared:/root/.cloudflared cloudflare/cloudflared tunnel route dns test "*.domain.xyz"test 替换为自己的隧道名
*.domain.xyz 替换为自己的域名,注意通配符需要加上
运行命令不报错,并且 dns 记录新增了一条通配符的记录就可以了。
运行
这里使用 docker-compose 运行了,如果想直接 docker run,使用 gpt 转换一下即可。
version: '3'
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm-tunnel
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /home/docker/npm/data:/data
- /home/docker/npm/letsencrypt:/etc/letsencrypt
tunnel:
container_name: tunnel
image: cloudflare/cloudflared
user: root
volumes:
- /home/docker/cloudflared:/root/.cloudflared
restart: always
network_mode: host
command: tunnel run test需要注意的是,command 这里需要替换为自己的隧道名。
注意要避免80端口冲突
npm 的安装似乎需要一段时间,安装好以后打开 81 端口。
邮箱和密码:
Email: [email protected]
Password: changeme
登陆后会强制修改邮箱和密码。
然后点击 Proxy Hosts 进行新增反向代理。
新增一条反向代理配置到 npm 的管理界面试试。
测试可以通过配置的域名进行访问 npm。
方便的是,以后如果部署了其他的程序,只需要在 npm 管理界面添加反向代理即可。
优点:1、支持通配域名,2、免端口
缺点:有点慢

评论区