登录
  • 人们都希望被别人需要 却往往事与愿违
  • 获得信任的技巧就是避免使用任何技巧。

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

Cloudflare Benny小土豆 9416次浏览 2231字 18个评论
文章目录[显示]
这篇文章在 2023年04月21日20:51:28 更新了哦~

 

之前,如果想用树莓派之类的设备去做网站,方法一是需要想办法弄到一个公网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为例

注册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

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

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

此时如果你访问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

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

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

以服务模式运行

当然了,咱不能开个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
喜欢 (71)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论(代码和日志请使用Pastebin或Gist)
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(18)个小伙伴在吐槽
  1. 成功了,感谢 Benny!
    yihong06182022-10-14 17:57 回复
    • 😏还可以用这个当梯子噢
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2022-10-14 17:59 回复
  2. 现在好像已经要收费了。
    D2021-09-03 11:40 回复
  3. cloudflared tunnel login 可以用 token 登录吗? 用对帐号有完整权限的 credential 登录感觉不太安全诶 再单独配置 vault 感觉会将问题复杂化
    去你妹的实名制!2021-08-26 13:51 回复
  4. 本站点是在哪里托管的
    linc2021-07-12 22:55 回复
    • 日本vps
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-07-13 07:38 回复
  5. 感觉不错啊,那我可以在树莓派上运行我的ttrss了,然后配置个域名让在外网也能访问。就是不知道这样安全不安全
    袅残烟2021-05-25 12:38 回复
  6. wget -o cloudflared https://github.com/cloudflare/cloudflared/releases/download/2021.4.0/cloudflared-linux-arm64 chmod +x cloudflared 所以你將 wget 的日誌輸出到 cloudflare 文件裡面, 然後把它當成二進制執行? 完全沒 Get 到啊 另: 我下載後直接運行 cloudflared-linux-arm64 文件, 提示: 可執行檔格式錯誤: ./cloudflared-linux-arm64 我的樹莓派也是 Pi4B, 8GRAM. 不知道你怎麼可以跑起來.
    Justin2021-05-12 22:17 回复
    • 不好意思, 找到跑不起來的原因了. 我的樹莓派刷入系統是 armv7l, 32 位, 需要手動修改 /boot/config.txt 來改架構到 aarch64.
      Justin2021-05-12 22:52 回复
    • 呃,手抖了应该是大写的O,curl才是小写的o。实在抱歉
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-05-13 09:38 回复
  7. 大佬,树莓派什么型号呀 ,纯小白表示有点羡慕,有点看不懂,请问有视频指导之类的嘛~~~
    莉莉2021-05-04 08:23 回复
    • 4B的8G RAM版……
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-05-04 08:25 回复
  8. https 有问题,没办法反代过去,似乎免费帐户只能使用一级域名。试着用一级域名开ssh, 还是不行...提示 ws bad handshake,感觉这玩意bug太多。
    patmeow2021-04-21 13:17 回复
  9. 俺的树莓派早成了电视盒加游戏盒,博主这是想让俺重归正途不忘初心
    dd2021-04-20 17:07 回复
  10. get 到啦
    木子2021-04-17 13:42 回复
    • 😏赶紧搞一个呀
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-04-17 14:01 回复