概述
目的是利用家里闲置的硬件资源,搭建一套自用的互联网服务。
技术需求以及解决方案
使用开源技术
开源软件从一定程度上更能保证安全性。优先选择 GitHub 上的开源项目。
自动化
好处不言而喻,可通过 Github Action 进行 CI/CD。
互联网访问
可互联网访问是必须支持的一个功能点。
域名使用之前阿里云申请的十年有效期的域名。 GCP 部署的服务有外网 IP,可以直接在阿里云绑定进行解析。
家里部署的服务,实施过两个方案:
- 由于广东电信可以申请外网 IP 地址,所以可以通过路由器端口转发的方式,将互联网请求转发到家庭内网服务。但是缺点如下:
- 外网 IP 是动态变化的,需要内网部署 DDNS 服务来更新阿里云域名绑定。
- 电信封掉了一下常见的 HTTP 端口,如 80/443,使得访问服务的时候必须要在域名后携带端口号,一点都不优雅。
- 需要自己申请 SSL 证书,配置 nginx 代理,为内网服务提供 HTTPS 支持。
- 直接将内网服务暴露在外网有安全隐患。
- 通过 cloudflare tunnel 提供内网穿透功能 进行访问。优点如下:
- 配置简单。
- cloudflare 负责解析域名,同时默认为域名提供 SSL 证书,支持 HTTPS 访问。
- cloudflare 有访问控制功能,使得内网服务更加安全。
- 由于广东电信可以申请外网 IP 地址,所以可以通过路由器端口转发的方式,将互联网请求转发到家庭内网服务。但是缺点如下:
能效比
7*24
运行的服务能效比是必须考虑的,相比较 nas 或者 nuc,闲置吃灰的树莓派 4B 功耗只有 5w 左右,是个不错的选择。
业务需求以及解决方案
同步
作为业余摄影爱好者,现在积累的素材都已经上 T 了。年初时候 macmini 系统崩溃了一次,虽然最后数据恢复了,但仍然心有余悸。需求点:
- 同步。不只是备份,多端同步方便其他工作端 (macbook/windows/Android/ios) 进一步处理和分享。
- 速度要快。有 P2P 支持多设备同步当然更快。
- 最好支持加密后同步,方便利用现有网盘功能进行备份,这样既可以利用网盘功能,又不担心资源泄露。
多方调研后发现 resilio 用作跨设备同步是一个完美的解决方案。之前该软件曾被国内封禁过一段时间,现在已经解禁。
备份
自己搭建网盘主要有几方面的考虑:
- 有些网盘不开会员下载速度感人,没错,说的就是百度网盘。
- 敏感信息
- 都是家人小孩视频,不想被拿做去 AI 训练。
- 基于众所周知的原因,有些资源存储在国内的网盘会被删掉,哪怕是误删,厂商也不会承担任何责任,国内网盘提供商这方面可以说劣迹斑斑。
与同步功能不同,备份主要是用来存储下载的电影。这就要求除了基本的存储功能外,还需支持:
- webDAV。可以作为磁盘挂载本地电脑或者电视软件上通过 webDAV 打开。
- 在线预览播放功能,方便直接下载观看,不用下载。
- 分享,可以通过链接对外分享相关资源。
多方调研对比后发现 cloudreve 满足上面的需求。
家庭网络拓扑
为了可互联网访问家庭网络,使用 Cloudflare tunnel 进行内网穿透,注意使用
svc.sh
脚本安装并启动服务。三台 raspi 为了达到通电可用的目的:
- 设置好 SSH 后通电即可使用。
- 通过 WIFI 连接到路由器,在路由器上绑定 mac 和 IP。
NUC 通过 wlan 唤醒的方式,使用 Microsoft Remote Desktop 工具进行远程访问
业务架构
- raspi 4b 组成集群 作为硬件支撑。
- [clash]https://blog.panghuli.cn/posts/clash/ 搭建透明代理,处理整个家庭的网络,解决部署过程中的镜像问题。
- 通过 kubernetes 管理服务。
- longhorn 将 raspi 的硬盘资源在 k8s 池化。
- 通过 prometheus+grafana 监控。
- collabora 和 onlyoffice 运行对树莓派的负载较大,所以部署在 GCP 上面。
评论