家庭宽带一般都没有公网IP,因此需要一个隧道或者反代,进行服务公开、曝漏。

选型

SSH转发:可以使用,但是要求必须有公网服务器,而且通过脚本操作,不够傻瓜化
frpc:可以使用,但是要求必须有公网服务器
Tailscale:可以使用,需要注册一个 Tailscale 账号。个人账号有数量限制
Cloudflare Tunnel:可以使用,需要 Cloudflare 账户。基本无限制

综合对比,选择了 Cloudflare Tunnel 可以配合 Zero Trust 防止被攻击

创建配置

在 Cloudflare 后台,创建 Tunnel,然后复制对应的 token

启动Docker

创建如下文件内容 /mnt/ssd/docker/compose/cloudflared/compose.yaml

services:
  cloudflared:
    container_name: cloudflared
    image: cloudflare/cloudflared:latest
    restart: unless-stopped

    network_mode: host

    command:
      - tunnel
      - --no-autoupdate
      - run
      - --token
      - ${TUNNEL_TOKEN}

创建如下文件内容 /mnt/ssd/docker/compose/cloudflared/.env

TUNNEL_TOKEN=刚才保存的token

启动

cd /mnt/ssd/docker/compose/cloudflared
docker compose up -d
# 停止
# docker compose down

正常情况下,就可以在 Cloudflare 后台看到你的服务器上线了