skip to content
Liu Yang's Blog
Table of Contents

自建 Gitea 放到公网后,最直接的顾虑是源站 IP 暴露。把它放到 Cloudflare 后面,既能隐藏源站 IP,也能获得一定的加速效果。

麻烦在于 Cloudflare 的代理只处理 HTTP(S),SSH 方式的 git clone 会失效,需要单独处理。

网页端 / HTTPS

假设 Gitea 的域名是 git.example.com,在 Cloudflare DNS 中打开代理(橙色小云朵)即可,用户无感知。

SSH 的单独处理

  1. 用 Cloudflare Tunnel 把 Gitea 的 SSH 端口以内网穿透的方式暴露出来。
  2. 在 Cloudflare 中为 SSH 新增一个主机名,例如 git-ssh.example.com,解析到对应 Tunnel 的 CNAME。
  3. 在 Gitea 配置中把 SSH_DOMAIN 改为 git-ssh.example.com,这样仓库页面显示的 SSH 地址才是对的。
  4. 重启 Gitea 服务或 Docker 容器。

客户端访问

客户端需要安装 cloudflared,然后在 ~/.ssh/config 中加入:

Terminal window
Host git-ssh.example.com
ProxyCommand cloudflared access ssh --hostname %h

ProxyCommand 里的 cloudflared 写成命令即可,只要在 PATH 中,不需要写绝对路径。

安装方式:

配置好之后,git clone git@git-ssh.example.com:user/repo.git 就能正常使用了。实现方式不止这一种,但这种对客户端的要求最少,体验也最好。

参考