如何在NixOS上通过configuration.nix以声明式方式启用Cloudflare Tunnel?
在NixOS中通过configuration.nix声明式配置Cloudflare Tunnel(cloudflared)
步骤1:获取Cloudflare Tunnel凭证
在Cloudflare仪表盘创建隧道后,获取你的隧道令牌(Token)(推荐,无需额外管理凭证文件),或者下载对应的凭证JSON文件。
步骤2:编辑configuration.nix配置
根据你的需求选择以下配置方式:
方式1:令牌快速启动
直接在configuration.nix中添加服务配置,通过令牌启动隧道:
services.cloudflared = { enable = true; extraArgs = [ "tunnel" "run" "--token" "替换为你的Cloudflare隧道令牌" ]; };
方式2:自定义路由规则(配置文件方式)
如果需要自定义域名转发、多服务路由规则,可通过声明式生成配置文件:
- 先在
configuration.nix中创建cloudflared的规则配置文件:
# 声明式生成cloudflared配置文件 environment.etc."cloudflared/config.yml" = { text = '' tunnel: 替换为你的隧道ID credentials-file: /var/lib/cloudflared/credentials.json ingress: - hostname: your-domain.com service: http://localhost:8080 # 替换为你要转发的本地服务地址 - service: http_status:404 # 无匹配路由时返回404 ''; }; # 启用cloudflared服务并指定配置文件路径 services.cloudflared = { enable = true; configFile = "/etc/cloudflared/config.yml"; };
若使用凭证JSON文件,将其放置在/var/lib/cloudflared/credentials.json,并确保文件权限对cloudflared用户可读。
步骤3:部署配置
运行以下命令应用配置并启动服务:
sudo nixos-rebuild switch
验证与调试
- 查看服务运行状态:
systemctl status cloudflared - 实时查看服务日志:
journalctl -u cloudflared -f
内容的提问来源于stack exchange,提问作者Prateek Raj Gautam
相关产品推荐
相关产品推荐

