selfhosted 整体结构

毕业在即,目前服务跑在校园网下,有公网 IP,但毕业之后大概率租房网络不会有这个条件。另外还要考虑离校后 BYR 下载的问题,经过几天的摸索得出了以下方案

背景

  1. 在家里跑一个 NAS,其上可能会跑一些服务

    如果租房不允许自己拉宽带,那么连光猫桥接都不一定能做,所以可以假设它一定没有公网 IP,可能会经过多层 NAT (运营商 NAT/家里路由器的 NAT)

  2. 在家里会有局域网设备需要访问 NAS,这个随便怎么都能实现
  3. 我自己可能需要在其他地方 (比如公司) 访问 NAS
  4. (本质同 3.) 其他人可能需要 (广域网的其他无公网 IP 设备) 需要访问 NAS 上的服务 (比如 Plex 串流),期望能够有一个不错的服务质量
  5. 最好有能力继续在 BYR 下载一些想看的资源

必要条件

  • 为了实现 3./4.,本质上需要一个内网穿透的手段,比如 frp 或者 vpn,经过测试 tailscale 的效果不错
  • 为了实现 5.,必须
    • 有一台 教育网/海外v6服务器,服务器延迟无所谓,但必须有不太小的带宽 (100Mbps 及以上为佳),流量最好无限制,或者足够多。教育网服务器可以找 THU 的同学嫖一个实验室的机位,因为校园网是给公网 IP 的,带宽够大、流量不限还不用花钱,缺点就是维护需要频繁请同学吃饭。海外v6服务器带宽满足要求,但便宜的机型通常有 1T 的流量限制
    • 有合适的通过该服务器访问 v6 的手段,比较方便的是 ssr

具体实现

互相访问

NAS - 公网Server - 其他设备 通过 tailscale 组网

任何其他设备都通过 tailscale 访问 NAS

Tailscale 带宽问题

因为 NAS 和其他设备可能都会经过 NAT,因此这里很可能做不到 direct 而是会变成 relay,延迟/带宽会非常差

如果只是 ssh 或 webui,relay 可能没什么问题,假设要 Plex 串流,就得想个增加带宽的办法,最通用的办法是在 公网Server 上搭一个 DERP

BYR 下载

通过 ssr 代理来做 4to6 来做下载效果似乎不是很好,而且很挑客户端,因此我采用了另一个方式:

  • Server 通过 tailscale + SMB mount NAS 的盘
  • Server 上跑 qBittorrent 等客户端,通过 SMB 下载到 NAS 里

由于 Server 有公网 IP,tailscale 一定是 direct,所以 SMB 的读写速度勉强能用