- 所有文章/
初探 Cloudflare 零信任 - 通过 Cloudflare Tunnel 访问服务
本文目录
前言 #
前段时间发现一个开源可自托管的网站服务运行状态监控服务—— Uptime Kuma,最近在整理 Oracle 免费服务器,早就想玩 Cloudflare Zero Trust 了,这次先来试试 Cloudflare Tunnel。
初始条件:
- 域名已经添加到 Cloudflare 上
- 在 Cloudflare Zero Trust 平台注册一个 Team (Free Plan 即可)
准备环境 #
本文演示的服务器是新开的 Oracle 免费服务器 (Ubuntu 22.04.1 LTS x86_64),通过 SSH 登录
# 刷新软件源 && 更新软件包
sudo apt update && \
apt upgrade -y
# 安装环境所需的软件包
sudo apt install -y curl wget && \
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && \
sudo apt install -y nodejs
# 验证安装
node -v
npm -v
# 安装 PM2 守护进程管理器
sudo npm install pm2 -g
[可选] 设置系统 Swap 交换分区
因为 Oracle 免费服务器的运行内存很小,所以这里先设置下 Swap
# 1GB RAM with 2GB Swap
sudo fallocate -l 2G /swapfile && \
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152 && \
sudo chmod 600 /swapfile && \
sudo mkswap /swapfile && \
sudo swapon /swapfile && \
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab && \
sudo swapon --show && \
sudo free -h
部署 Uptime Kuma #
上面的「准备环境」完成后就可以开始部署 Uptime Kuma 了
git clone https://github.com/louislam/uptime-kuma.git && \
cd uptime-kuma && \
npm run setup
# 使用 PM2 守护运行 Uptime Kuma
pm2 start server/server.js --name uptime-kuma
# 设置 PM2 跟随系统启动(执行提示的命令)
pm2 startup
# 开始守护 uptime-kuma 服务(现在 Uptime Kuma 运行在本地 3001 端口上)
pm2 start uptime-kuma
后续 PM2 对 Uptime Kuma 的进程守护和管理
# 启动 Uptime Kuma
pm2 start uptime-kuma
# 查看 Uptime Kuma 运行状态
pm2 status uptime-kuma
# 停止 Uptime Kuma 服务
pm2 stop uptime-kuma
# 重启 Uptime Kuma 服务
pm2 restart uptime-kuma
配置 Cloudflare Tunnel #
登录 Cloudflare Zero Trust 控制台,选择左侧导航栏的 Access 菜单,进入 Tunnels 配置,点击 Create a tunnel 创建一个 Tunnel,输入 Tunnel 隧道名称
选择服务器的操作系统和平台架构
复制左边命令粘贴到 SSH 会话里安装 Cloudflared(注意保护 Refresh Token 不要泄漏)
现在 Cloudflared 服务已经正常安装在我们的服务器上了,接下来配置 Cloudflared 监听服务即可
点击保存,Cloudflare 会自动给托管的域名添加一条 DNS 解析记录。现在打开你的域名就可以愉快的访问了。
PS:只要是可以安装 Cloudflared 的机器、并且能访问 Cloudflare 网络,就可以使用 Cloudflare Tunnel 保护服务的访问。
Cloudflare Tunnel 可以用是内网穿透、反向代理、完全自动的 HTTPS,支持 HTTP, HTTPS, TCP, UNIX, SSH, RDP, SMB, UNIX+TLS… 等协议,如果配合 Cloudflare 的零信任策略,还可以有更安(hao)全(wan)的玩法,比如:零信任 SSH、Web SSH、Web RDP 等等。
参考资料