ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

llm-server-docs进阶配置:Caddy+Cloudflare如何搞定自定义域名与免费HTTPS证书

llm-server-docs进阶配置:Caddy+Cloudflare如何搞定自定义域名与免费HTTPS证书 llm-server-docs进阶配置CaddyCloudflare如何搞定自定义域名与免费HTTPS证书【免费下载链接】llm-server-docsEnd-to-end documentation to set up your own local fully private LLM server on Debian. Equipped with chat, web search, RAG, model management, MCP servers, image generation, and TTS.项目地址: https://gitcode.com/gh_mirrors/ll/llm-server-docs搭建好本地 LLM大语言模型服务器后用IP:端口访问既难记又不安全。本教程带你用 Caddy 反向代理 Cloudflare DNS 三步搞定为私有 LLM 服务器绑定自定义域名并自动申请免费 HTTPS 证书Lets Encrypt让你在任何网络下都能通过一个漂亮的域名安全访问自己的 AI 聊天服务。为什么需要 Caddy 反向代理告别IP端口假设你的 Open WebUI 跑在 3000 端口每次都要输入http://192.168.x.x:3000实在太劝退而且暴露了真实服务地址。反向代理的思路是用子域名代替IP端口。给每个服务分配一个子域名例如子域名指向的服务owui.example.comOpen WebUI端口 3000dashboard.example.com管理面板端口 3001search.example.comSearXNG 搜索端口 8080流量走向变为https://owui.example.com→ Caddy →100.x.y.z:3000→ Open WebUI ✅Caddy 是一款用 Go 编写的轻量反向代理它的杀手锏是零配置自动 HTTPS通过 Lets Encrypt 自动签发、自动续期免费 SSL 证书还内置 HTTP/3 支持。在 LLM 服务器整体架构中Caddy 正是站在服务入口的门卫 完整远程访问方案见项目文档 docs/remote-access.md。三个前置准备域名、Cloudflare账号与后端服务开始前请确保一个域名任意注册商购买即可约 2–15 美元/年一个免费的 Cloudflare 账号用于托管 DNS 记录运行中的 LLM 服务器至少有一个对外服务如 Open WebUI 3000 端口且建议已接入 Tailscale获得一个100.x.y.z的虚拟 IP。 安全提醒把服务暴露到公网需要开放路由器 80/443 端口若你对防火墙规则不熟悉建议让 Caddy 只把流量转发到 Tailscale IP —— 这样未授权用户访问域名时会直接得到Server not found天然实现访问控制。Cloudflare DNS 配置 3 步走一条泛解析记录搞定所有子域名第 1 步域名接入 Cloudflare在 Cloudflare 控制台添加你的域名它会提供新的 Nameserver把注册商那边的 DNS 服务器改成即可。第 2 步添加泛解析 A 记录在 DNS 面板新增一条 A 记录名称填*指向你的服务器 Tailscale IP类型名称IPv4 地址代理状态A*你的Tailscale IPDNS only灰色云朵这一条记录就能让owui.example.com、dashboard.example.com等所有子域名都解析到同一台服务器后续每加一个服务都不用再改 DNS。注意把代理状态设为DNS only灰色云朵让流量直达你的服务器。第 3 步验证解析执行dig owui.example.com确认记录生效。Cloudflare 通常几分钟内全球生效最慢不超过 24 小时。安装 Caddy 并添加 Cloudflare DNS 模块在 Debian/Ubuntu 上先通过官方源安装 Caddysudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl # 添加 Caddy 官方仓库后 sudo apt update sudo apt install caddy但有一个关键问题Tailscale 环境下80 和 443 端口对公网不可直达传统的 HTTP-01 证书验证方式走不通。解决办法是使用DNS-01 挑战Caddy 通过 Cloudflare API 在你的域名下临时创建一条 TXT 记录来证明这个域名确实归你无需开放任何额外端口。为此需要换一个带 Cloudflare 模块的 Caddy 二进制版本。打开 Caddy 官方下载页勾选caddy-dns/cloudflare模块方框变蓝然后右键复制下载按钮的 URL用一条命令覆盖安装sudo curl -o /usr/bin/caddy -L 上一步复制的URL 小贴士Cloudflare 并非唯一选择caddy-dns 项目支持 75 家 DNS 服务商如 AWS Route 53、DigitalOcean 等替换模块名即可。编写 Caddyfile开启 DNS-01 自动签发免费证书第 1 步创建 Cloudflare API 令牌在 Cloudflare 控制台进入 Profile → API Tokens → Create Token使用Edit zone DNS模板为你的域名创建令牌。第 2 步把令牌存为环境变量echo export CLOUDFLARE_API_TOKEN你的令牌 ~/.bashrc source ~/.bashrc第 3 步配置通配符证书与反向代理编辑/etc/caddy/Caddyfile添加*.example.com { tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } reverse_proxy 100.x.y.z:3000 }就这一小段配置Caddy 会自动通过 Cloudflare API 创建并校验 TXT 记录为你的域名签发通配符证书覆盖所有子域名到期前还会自动续期 —— 全程零手动操作。之后新增服务只需再加一个reverse_proxy路由即可。第 4 步格式化并重载配置sudo caddy fmt --overwrite /etc/caddy/Caddyfile sudo systemctl reload caddy此时打开浏览器访问https://owui.example.com看到小锁标志就说明免费 HTTPS 证书已经生效常见故障排查清单遇到问题时按下面顺序自查Caddy 启动失败→ 运行sudo caddy validate --config /etc/caddy/Caddyfile检查语法证书一直签不下来→ 查看日志journalctl -u caddy -n 50确认令牌具有Edit zone DNS权限、环境变量已正确导出echo $CLOUDFLARE_API_TOKEN。常见坑Caddy 发给 Cloudflare 的 TXT 记录可能缺少双引号登录 Cloudflare 面板手动给*的 TXT 记录值补上即可域名不解析→ 用dig或在线 DNS 检查工具确认泛解析已传播502/504 错误→ Caddy 能访问域名但连不上后端核对 Caddyfile 里的 IP 与端口是否正确并确认后端服务确实在运行外网无法访问→ 检查路由器是否已将443 端口转发到服务器DNS-01 方案下无需开放 80 端口。小结与下一步至此你的 LLM 服务器已经拥有了自定义域名 免费 HTTPS 的完整公网入口配合 Tailscale 还能保持只有白名单用户可访问的安全性。后续可以考虑用 Uptime Kuma 等工具监控服务可用性定期备份 Caddyfile 等关键配置相关安全加固见 docs/docker-security.md探索 Tailscale Funnel无需域名即可选择性暴露服务。完整步骤与更多细节欢迎查阅项目文档 docs/remote-access.md 中的 Remote Access 章节。【免费下载链接】llm-server-docsEnd-to-end documentation to set up your own local fully private LLM server on Debian. Equipped with chat, web search, RAG, model management, MCP servers, image generation, and TTS.项目地址: https://gitcode.com/gh_mirrors/ll/llm-server-docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表