V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shunagliu008
V2EX  ›  分享发现

Homelab | 架构设计与实现-High-level design

  •  
  •   shunagliu008 · 2023-06-23 10:29:27 +08:00 · 1411 次点击
    这是一个创建于 553 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一 :介绍

    这个家庭实验室的 IT 基础架构,从最初的设计到最终实现差不多历时大半年,花了不少时间,也花了一点金钱。

    时间自不用说,上班期间的摸鱼,包括下班时间的“加班”;金钱花费上包括软硬件的费用,例如域名,Handsome 主题,云主机,云存储,还有一个放置在家里的 X86 小盒子和一个 ARM 的树莓派,总共花费差不多 3K ,以后还会有每年 300 人民币云主机的固定费用。以后在这个项目上的时间花销才是真正的无底洞,生命不息,折腾不止。

    基于此,大多数互联网服务,像博客,网盘,视频,下载,邮箱,代码仓库等等,都可以借助开源项目自建自用,随时随地。

    二: 清单

    • 域名:

      samliu.tech 从腾讯云购买,为了方便申请 SSL 证书,目前托管在 Cloudflare 。

    • 云主机:

      Hostdare,一家在漂亮国的,不那么知名的老牌主机商家,配置不重要,线路才是重点。最大带宽 50Mb ,电信双向 CN2 GIA 线路,联通和移动直连,平时 RTT< 200ms ,,高峰 RTT<300ms,高峰期间也很稳定,极少丢包。

    • 云存储:

      腾讯云 COS ,作为博客图床使用,因此即使主机在远在米国,国内访问体验也是非常不错的,目前没有配置 CDN 。

    • X86 主机和 ARM 主机:

      homelab 大部分东西关于这部分,放置在家中,7x24 。使用 Proxmox 系统虚拟化,Docker 进程虚拟化。

    • Let's Encrypt 一个用来申请免费 SSL 证书的互联网服务,借助自动化脚本,第一次配置完成后,后续就不用关注了,包括证书续期,全自动。 [post cid="1396" /]

    homelab_hld-1.png

    三: 云上部分

    云主机有一个固定的公网 IP ,系统 Ubuntu 12 。域名目前由 Cloudflare 托管,在上面自定义 DNS 记录。

    Nginx 作为一级反向代理服务器,接受来自用户侧的流量,主要代理 Web 流量,依据 Http 协议中不同 host 字段,即不同域名,转发到后端不同服务。后端部署的服务,例如 两个不同类型的博客:

    基于 Typecho 平台: https://homelab.samliu.tech

    基于 Wordpress 平台: https://blog.samliu.tech

    当然还有一些独立的 docker-based 的应用,例如 Letsencrypt,用于自动化处理关于证书的所有事情。 对于一些对时延不敏感的应用,则可以部署在另一个后端,'Homelab'本地环境。云主机此时会充当流量转发的角色,基于策略,转发不同流量到‘Homelab’本地环境,可以是 Web 流量,也可以是普通 TCP/UPD 流量。

    完成转发任务的组件是一个开源项目 FRP ,它可以基于端口转发 TCP/UDP 流量,也可以基于域名转发 HTTP ( S )流量,充当 Web 反向代理。在云上部署 FRP server 端,’Homelab‘本地部署 FRP client 端,此时的 FRP server ,对于 web 流量而言,其实也是作为一个二级 反向代理,出于证书集中管理和会话建立效率问题考虑,云上主机终结所有 HTTPS 流量,对于去往’Homelab‘的 web 流量,只转发 http 流量,frp tunnel 自身有加密功能,安全性可以保证。

    [scode type="yellow"]会话建立效率问题:对于弱网环境,例如丢包或者高时延线路,TCP 三次握手,以及 TLS 1-4 次握手,会严重拉高服务响应时间,表现就是网站打开很慢,基于 UDP 的 HTTP3 ,对此场景完美适配[/scode]

    homelab_hld-2.png

    四: 云下部分

    ’Homelab‘环境下的 X86 小鸡,部署免费开源 Proxmox 虚拟化系统,一个 VMWare Vsphere 的替代方案。 目前有如下 VM:

    • Debian 11:主力系统,部署各种应用,大部分也是 docker-based 的应用
    • OpenMediaVault:一个开源的 NAS 系统
    • OpenWrt: Bypass GFW
    • Win10: 图形化工作台

    ARM 小鸡,主要用于尝试一些 ARM 应用,当然亦可以部署 ARM 版本的 Proxmox 。

    在 Debian VM 上,有一些特殊的基础架构应用,前面提到的 FRP:

    • FRP client:用于与 FRP server 建立隧道,并充当二级反向代理
    • NPM(Nginx Proxy Management): 开源的 Nginx 的图形化项目,方便管理配置一些 Nginx 的功能,以及集成一些其他功能,这里它作为三级
      反向代理,接受来自 FRP Tunnel 的 http web 流量,然后分发到真正的应用端。FRP 当然也可以直接转 发流量到应用端,但是对于需要经常变动的后端应用来说,FRP 管理起来不太方便,NPM 就更容易一些, 更完美的方案其实是 Traefik,当部署基于 Docker 的应用时,会自动变更相关反向代理配置,部署即上线。
    • Next terminal: 这个其实是一个基于 Web 的管理平台,跨平台的管理内网 IT 资产,随时随地
    • **Wireguard:**下一代 VPN 解决方案,这里也是用于连接内网,便于管理,当然需要安装 wireguard 客户端

    homelab_hld-3.png

    五: 生命不息,折腾不止

    上述基础架构部署完成后,就可以聚焦应用本身了,Docker Hub 大市场,Github 菜市场,任你...博客,网盘,视频,下载,邮箱,代码仓库等等

    8 条回复    2023-06-25 10:23:46 +08:00
    ltkun
        1
    ltkun  
       2023-06-23 10:39:40 +08:00 via Android
    差不多的架构也用 hostdare 和 pve 哈 其他乱七八糟的也很多
    shunagliu008
        2
    shunagliu008  
    OP
       2023-06-23 10:42:12 +08:00
    其他的 LLD 可以参考这个博客 https://homelab.samliu.tech/archives/1436.html
    fabiannnnnnnnnn
        3
    fabiannnnnnnnnn  
       2023-06-23 10:42:26 +08:00 via Android
    问一下 其他地方买的域名放到 cf 托管也可以吗?具体怎么操作怎么收费啊
    shunagliu008
        4
    shunagliu008  
    OP
       2023-06-23 10:53:19 +08:00
    @fabiannnnnnnnnn 不收费,只需双向验证一下就可以,Google 下
    cylx3124
        5
    cylx3124  
       2023-06-23 18:39:49 +08:00
    Hostdare 几年前的特殊时期拔过线,后来我就不敢用他家的东西了
    vsyf
        6
    vsyf  
       2023-06-23 19:10:12 +08:00 via Android
    内网中可以将域名解析到 NPM,这样在家里也可以直接域名访问了,不用记几十个不一样的端口号。
    airbact
        7
    airbact  
       2023-06-25 04:10:30 +08:00 via Android
    @cylx3124 hostdare 今年一月也突然停止服务了一个月左右,而且没有公开回复原因。
    shunagliu008
        8
    shunagliu008  
    OP
       2023-06-25 10:23:46 +08:00
    @airbact 是的,以为跑路了。好像是被一家印度公司收购了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:43 · PVG 05:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.