【博客搭建】Mac mini + Cloudflare Tunnel 搭建免费HTTPS图床
📌动机
此前用的是七牛云的图床方案, 折腾好久之后,发现这种方案存在问题:
- 存储空间绑定源站域名,产生的流量是计费的。(计费规则)
- 存储空间绑定CDN域名,需要备案,备案有需要云服务器,ip等等,手续也十分麻烦
- 这个方案只能用http,会导致常规状态下图片基本无法显示。想用https的话,有以下限制:
- 需要ssl证书(这个好解决,可以申请免费证书)
- 不管国内还是海外,https流量都要收费。(计费规则)
- 国内https需要域名备案。

🚀新方案:Mac mini + Cloudflare Tunnel 搭建免费HTTPS图床
1️⃣ 在本地搭建图片静态服务器(Nginx)
1 | brew install nginx |
编辑配置文件 /opt/homebrew/etc/nginx/nginx.conf,添加或修改以下内容:
1 | server { |
重启 Nginx:
1 | brew services restart nginx |
测试访问:
1 | http://localhost:8080/icon/timo_icon.png |
2️⃣ 绑定域名至 Cloudflare
访问https://www.cloudflare.com/zh-cn; 右上角登陆 -> 右上角添加【连接域】 -> 输入自己的域名 -> 计划选择【Free】 -> 继续前往激活 -> 复制cloudflare的两个DNS网址
将域名的DNS替换为Cloudflare的服务器:阿里云域名控制台 -> 管理 -> DNS修改 -> 修改为非阿里云DNS【填上刚刚复制的两个cloudflare DNS网址】
3️⃣ Mac 端添加 Cloudflare Tunnel
- 进入https://one.dash.cloudflare.com -> 网络 -> Tunnels -> 创建隧道 -> 选择 Cloudflared -> 为隧道命名【blog-imgs】 -> 保存隧道
Mac 端安装 cloudflared 并添加隧道
1 | brew install cloudflared && |
- 回到网页端Tunnels: 点击刚刚创建的隧道【blog-imgs】 -> 编辑 -> 公共主机名 -> 添加公共主机名 -> 子域【img】 -> 域【tianlejin.top】 -> 类型【HTTP】 -> URL【localhost:8080】 -> 保存
配置好了之后,隧道状态应该显示为【正常】
同样地,还可以把本地的其他服务也穿透到公共域名
😯 常见错误与解决方案
❗ 打开自己博客的时候显示:tianlejin.top 重定向你太多次。
- 原因:Cloudflare 使用 Flexible 模式 + 本地 HTTP/HTTPS 重定向冲突
- 解决:将 Cloudflare 中 SSL 模式设置为 “Full” 或 “Full (Strict)”
- 控制台 -> SSL/TLS -> 概述 -> SSL/TLS 加密 -> 配置【完全/完全(严格)】
❗ 错误:lookup argotunnel.com 失败(DNS 问题)
- 原因:系统使用 IPv6 链路本地地址作为 DNS,cloudflared 无法正常解析
- 解决:将 DNS 设置为 Cloudflare 的 1.1.1.1 和 1.0.0.1
- macOS 图形方式:系统设置 → 网络 → 当前网络 → 详细信息 → DNS → 添加:1.1.1.1、1.0.0.1
- 或终端命令:
1
networksetup -setdnsservers Wi-Fi 1.1.1.1 1.0.0.1
📸 博客中使用图片
把图片放进 ~/Desktop/blog-imgs/,例如 cat.jpg
然后在 Markdown 中引用:
1 |  |
👀展望
以后可以整个 NAS,用nas中的docker做内网穿透,会更加优雅~
📚参考
Cloudflare Tunnel配置的B站视频: https://www.bilibili.com/video/BV1Sy411B7Bb
未来配置 NAS 可参考: https://zhuanlan.zhihu.com/p/382702959
评论
