土豆不好吃

Cloudflare Argo Tunnel 小试:我终于可以用树莓派做网站啦

文章目录[显示]
这篇文章在 2024年07月27日16:14:34 更新了哦~

 

之前,如果想用树莓派之类的设备去做网站,方法一是需要想办法弄到一个公网IP,无论是直接从运营商要,还是在阿里云、腾讯云上做frps之类的内网穿透,都挺麻烦的;方法二是如果有IPv6,那么就去做v6only的解析,并且这个IPv6的地址还可能会经常变,这样就会使得网站可用性变得非常差,并且v4用户就惨了。

现今,Cloudflare Argo Tunnel已经免费开放啦。这个东西有什么用呢?简单的来说就是在任何可以访问cloudflare的机器和cloudflare中搭建一个安全的加密隧道,然后这个隧道可以用来承载很多不同种类型的流量,比如说http(会被自动换成https),tcp,ssh,smb,rdp,甚至是unix套接字都可以哦。

也就是说,只要你在家里的机器上一顿操作,那么你家里的机器就可以通过cloudflare的网络来达到全球可以访问的目的了。听起来是不是很棒!

总结下来这样做大概有这几步:

  1. 注册cloudflare账号
  2. (可选)把域名的ns改成cloudflare
  3. 安装cloudflared并登录
  4. 创建argo tunnel
  5. 创建dns记录
  6. 配置tunnel
  7. 运行

本文以Raspberry Pi 3 + Ubuntu 20.04为例

更新:现在不需要操作这些命令了,直接在 Zero Trust那边网页点点点就好了,cloudflard会主动接受推送更新

注册cloudflare账号

略……

把域名的ns改成cloudflare

这一步是可选的,Argo Tunnel会提供一个默认的域名,当然如果能用自己的域名就更好啦。

安装cloudflared并登录

具体的话,可以参考这篇官方文档。我的树莓派是aarch64的架构,也就是arm64.

wget -O cloudflared https://github.com/cloudflare/cloudflared/releases/download/2021.4.0/cloudflared-linux-arm64
chmod +x cloudflared
sudo cp cloudflared /usr/loca/bin/

然后就可以开始登录啦!

cloudflared tunnel login

然后再打开的页面中选择你的域名~Pi 那边大概会有如下输出:

You have successfully logged in.

If you wish to copy your credentials to a server, they have been saved to:

/home/benny/.cloudflared/cert.pem

创建argo tunnel

cloudflared tunnel create <NAME>

这条命令会输出一个tunnle UUID

name可以自己随便取一个,比如说Pi啦~Yui啦~随便的啦

想要查看tunnel列表,可以使用 cloudflared tunnel list

很明显,想要删除,那就delete啦 cloudflared tunnel delete pi

创建DNS记录

有两种办法,一种是去cloudflare dashboard中创建一条道id. cfargotunnel.com的CNAME解析,另外一种是使用cli命令~

那比如说我要创建一个abcd.dmesg.app,那么就可以这样做

cloudflared tunnel route dns <UUID or NAME> abcd.dmesg.com

或者在网页上这样添加,结果是一样滴

此时如果你访问abcd.dmesg.app,会看到1033错误的哦,因为我们的tunnel还没有运行。

配置tunnel

那么接下来就需要在树莓派上配置如何tunnel了,一个最简单的例子是这样的:

tunnel: pi
credentials-file: /home/benny/.cloudflared/af4d19d0-7fb1-40ea-88b7-97036c026ca4.json

ingress:
  - hostname: pi.dmesg.app
    service: http://localhost:8000
  - service: http_status:404

其中hostname就是上面的那个域名,service表示我们要承载什么流量,如果想要承载ssh,那么就service: ssh://localhost:22就好了。

最开始的uuid同样可以替换成tunnel name

然后我们……

cloudflared tunnel --config ~/tunnel.yml run

如果不想写这种配置文件,那么可以一条cli解决

cloudflared tunnel run --url localhost:8000 <NAME or UUID>

看到一大串输出,没有报错,那我们的tunnel就成功了。当然树莓派上8000还没有程序在监听,那我们再赶紧开一个吧

docker run -d -p 127.0.0.1:8000:80 nginx:alpine

这个时候打开浏览器刷新一下,你的页面就已经出来啦!

以服务模式运行

当然了,咱不能开个screen去运行argo tunnel啊……

那么执行这条命令来安装服务

# 需要有~/.cloudflared/config.yaml
sudo cloudflared service install

# 指定配置文件位置
cloudflared --config CONFIG-FILE service install

这个时候哪怕重启都不怕啦😨

参考资料

Create and connect an application with a single command

用 Cloudflare Tunnel 进行内网穿透 | Re:Linked

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/argo-tunnel.html
退出移动版