家用 HomeLab 的搭建
- 0
路由器限制:家中现有路由器无法很好地满足科学上网和广告拦截的需求。
云服务器劣势:云服务器价格高且配置低,无法满足需求。
媒体需求:期望家庭影院可以替代各种视频会员
功耗考虑:家用服务器需要7x24小时不间断运行,因此低功耗设备是首选。
性能要求:如果打算搭建Homelab或小型服务器,需要选择具备一定性能的设备。尽管可以自行组装主板、CPU、内存、硬盘等,但难以做到小巧且节能。
或者用闲置废旧笔记本(曾经用大学的1T硬盘的笔记本搭的家庭影院 plex+infuse)
淘宝购入零刻的小主机
京东购入内存条和硬盘
由于无线和弱电箱之间只有一根网线,目前无法实现有线Mesh网络。
服务器宿主系统
这里一般有2个选择
https://pve.proxmox.com/wiki/Main_Page
https://www.vmware.com/products/cloud-infrastructure/esxi-and-esx
最终选择了Proxmox VE(PVE)作为虚拟化平台,因为它基于Debian系统,而ESXi是闭源的。
虚拟机系统过去使用CentOS,但由于停止维护,现已全部迁移到Debian
公网域名:分为备案和不备案域名。备案域名用于上海的服务器及阿里云服务,不备案域名则用于香港的服务器。
内网域名:仅供内网访问,DNS解析由内网DNS服务器控制
软路由编译
软路由即在电脑上运行一个操作系统,通常具备双网口。使用了开源项目 coolsnowwolf/lede 来编译固件,并将其刷入硬路由或虚拟机中。
也可以做单臂路由(单网口,把设备的dns指到路由器上就行)
VPN组网
因为电信给的 公网IP 大概一个月会改一次,所以需要ddns服务把 一个域名始终映射到公网ip上。
Openclash插件
Surge(Apple TV、mac、手机通用)
规则生成器
https://github.com/surgioproject/surgio
私聊~
通过 AdGuardHome 实现去广告,并兼顾私有DNS解析与广告拦截功能。
自定义上游dns,负载均衡,使用doh
javascript 取消自动换行 复制https://dns10.quad9.net/dns-queryhttps://dns.alidns.com/dns-queryhttps://doh.pub/dns-querytls://dns.alidns.comtls://dns.pubtls://dns.google
广告黑名单
参考 FX 系统使用Drone CI连接GitHub,在代码推送后自动打包,并推送到内网的Docker镜像和私有NPM,随后通过K8S拉取代码并部署。
部署的好玩的服务
bash
家里网络挂了怎么办、服务挂了怎么办
Bark IOS APP 用来接受通知消息
prometheus
grafana
数据备份与恢复策略: 数据库每天早上8点备份到阿里云oss,其他配置文件存储在git上,可通过k8s配置文件搭出完全一模一样的
自部署的相册应用:https://github.com/immich-app/immich
自部署的Vercel替代品:https://github.com/coollabsio/coolify
对家庭网络服务、NAS感兴趣的可以一起交流~
kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEalert-manager ClusterIP 10.43.190.52 <none> 9093/TCP 17dblackbox-exporter-svc ClusterIP 10.43.97.94 <none> 9115/TCP 17dblog ClusterIP 10.43.94.69 <none> 3000/TCP 32dblog-server ClusterIP 10.43.78.129 <none> 8000/TCP 32dddns ClusterIP 10.43.38.229 <none> 9876/TCP 32ddrone-server-service ClusterIP 10.43.117.206 <none> 80/TCP 32ddrone-webhook-svc ClusterIP 10.43.99.143 <none> 3000/TCP 31des ClusterIP 10.43.44.167 <none> 9200/TCP 32dgrafana-svc ClusterIP 10.43.109.216 <none> 3000/TCP 17dkafka ClusterIP 10.43.246.5 <none> 9092/TCP 32dkubernetes ClusterIP 10.43.0.1 <none> 443/TCP 32dnexus ClusterIP 10.43.187.33 <none> 8081/TCP,8082/TCP 32dopenspeedtest ClusterIP 10.43.149.230 <none> 3000/TCP,3001/TCP 31dpostgres-svc ClusterIP 10.43.10.59 <none> 5432/TCP 32dprometheus-svc ClusterIP 10.43.98.41 <none> 9090/TCP 17dproxy-robot ClusterIP 10.43.44.178 <none> 80/TCP 32drabbitmq NodePort 10.43.80.197 <none> 5672:30017/TCP,15672:30018/TCP 32dredis ClusterIP 10.43.206.190 <none> 6379/TCP 16dumami-app ClusterIP 10.43.134.81 <none> 3000/TCP 31d