当初拿旧笔记本搭建的 Homelab,到现在为止已经运行快两三年了,某种程度上也算是挺稳定的,所以今天特地来简单分享一下自己的配置和玩法。

配置

当前的配置如下图和下表所示:

硬件型号价格(元)作用备注
旧笔记本电脑华硕 X456UJ0Homelab 主体,目前运行的是 Debian 11 系统,用于跑各种 Docker 程序好像是大概 16 年花三四千买的?具体价格忘了
硬盘4T 希捷酷鹰 X 2628 + 566用于存放影视剧资源,可视作个人网盘(没有组 RAID)京东上购买,后面存储不够又加了一块,没想到比第一次买的时候价格还低
硬盘笼绿联159连接笔记本和硬盘由于没有买 UPS,硬盘笼意外断电可能会造成损坏和数据丢失!!!
小米路由器Redmi AX6000386软路由,刷了 ImmortalWrt 系统,主要用于 🪜,以及运行 WireGuard 内网穿透京东上购买,现在没货了
交换机绿联的八口千兆交换机99弥补路由器接口不足的问题 

数据

容易注意到,设备列表中并没有 UPS 的身影 😂😂😂!(强烈建议不要模仿!!!)之前想补上这个设备的,但是琢磨了一下又觉得当下不是很有必要,因为硬盘存的都是 PT 站下的资源,大部分看完一次之后就不会再看了,就算丢失了自己也不心疼。。。(也许后面有需求了才会加)

但是话又说回来了,虽然机械硬盘里面的数据丢了不心疼,但是旧电脑里面运行的 Docker 容器数据等丢失了的话,那不得难受死,这也是我推荐使用旧笔记本电脑作为 Homelab 主体的原因之一。因为它有电池!!!就算意外断电,数据也不会丢失!

强烈建议想捣鼓 Homelab 的玩家使用旧笔记本电脑,它具有以下几个优点:
- 功耗低
- 自带 UPS
- 噪音小

除此之外,为了防止笔记本电脑本体数据丢失,我在最后还设置了两道防线:

  • 运行 scrutiny 进行 S.M.A.R.T. 硬盘检测,通过 ntfy 进行告警通知
  • 使用 alist 连接百度云盘。所有重要 Docker 的数据 volume 都映射到本地特定文件夹,每周对这个文件夹进行加密备份,并使用 rclone 上传至百度云盘

备份的目录结构大致如下:

├── compose
│   ├── alist
|   |   ├──data.db
|   |   ├──...
│   ├── lobe-chat
|   |   ├──data
|   |   ├──compose.yaml
│   ├── xxx
|   |   ├──...
│   ├── .env
│   ├── pass
│   ├── backup.sh
│   ├── ...
│   └── compose.yaml

网络

刚开始搭建 Homelab 时,我是在笔记本上运行了 ImmortalWrt 容器作为了旁路由,这样做有两个缺点:

  • 设备入网需要配置网关才能使用 🪜
  • 笔记本自身使用 🪜 比较麻烦,特别是更新某些 Docker 容器时

后来为了省心,搜了一下攻略,最终选择购买了 Redmi AX6000,刷了 ImmortalWrt 系统后,能够比较舒服的上网了。

其实我的电信宽带已经开通了公网 IP,搭配购买的域名以及服务器上运行的 Ngnix ,能很方便地访问家里的各种服务。但是个人害怕被电信查水表以及被爆破 😓,所以还是选用了 WireGuard 来进行内网穿透,只有少数服务可通过域名直接访问。

服务

目前我的 Homelab 运行的服务如下图所示:

简单介绍一下分组和部分容器的说明:

  • Tools
    一些好用的工具
    • bitwarden: 密码管理器。容器:vaultwarden/server
    • DDNS: 动态域名解析,公网 IP 必备。容器:qmcgaw/ddns-updater
    • gogs: 个人 git 项目管理。容器:gogs/gogs
    • ntfy: 消息推送服务。容器:binwiederhier/ntfy
    • searxng: 自定义搜索引擎。容器:searxng/searxng
    • TTRSS: 个人 RSS 服务。容器:wangqiru/ttrss,建议使用 docker compose部署。
    • uptime-kuma: 站点监控工具。容器:louislam/uptime-kuma
    • wallos: 订阅费用追踪。容器:bellamy/wallos
  • Manager
    • dozzle: Docker 日志查看面板。容器:amir20/dozzle
    • nginix-proxy-manager: Ngnix 转发。容器:zoeyvid/npmplus
    • portainer: Docker 管理面板。容器:portainer/portainer-ce
  • Files
    • scrutiny: 硬盘监控。容器:ghcr.io/analogj/scrutiny:master-omnibus
    • syncthing: 文件同步。容器:linuxserver/syncthing
    • syncthing relay server: Syncthing 的全局发现与中级服务。容器:t4skforce/syncthing-relay-discovery
  • AI
    • Dify: LLM 应用程序开发平台。源仓库:https://github.com/langgenius/dify,建议使用 docker compose部署。
    • GPT_MJ_PROXY: chatgpt web 与 midjourney web 的整合 UI。容器:ydlhero/chatgpt-web-midjourney-proxy
    • lobe-chat:LLMs 聊天应用 Web 端。源码:https://github.com/lobehub/lobe-chat,建议使用 docker compose部署。
    • one-api: OpenAI-compatible API 转发。容器:justsong/one-api用于转发一些第三方站的 OpenAI API,不过考虑到速率问题,目前用 openrouter 其实是最佳方案了。
    • Phoenix: 开源的 LLMOps 平台。容器:arizephoenix/phoenix最近开始接触不久,可能会围绕它出一系列教程。
    • prompt-optimizer: 提示词优化器。容器:linshen/prompt-optimizer
  • Media
    • alist: 网盘以及云存储浏览管理。容器:xhofe/alist
    • jellyfin: 家庭影音系统。容器:jellyfin/jellyfin
    • qbittorrent: BitTorrent 客户端。容器:linuxserver/qbittorrent。主要用于下载资源。
    • transmission: BitTorrent 客户端。容器:linuxserver/transmission。主要用于保种。

感想

目前来说,各种好用的自托管服务其实还有很多,而且有时候感觉自己的工作和生活其实有点离不开这台搭建的 Homelab 了。

每天刷资讯新闻要用到 TTRSS,自动填写密码用 bitwarden,同步 obsidian 和其他的一些文件会用到 syncthing,下载影视剧和观看需要用到 qbittorrent 和 jellyfin。另一方面,用 prompt-optimizer 写初始 Prompt,用 lobe-chat 和 LLMs 聊天,用 dify 做一点小应用。

这些服务或多或少都有一些商业上的替代产品,但是为什么要自建呢?我想,这在一定程度上满足了自己的折腾欲望,同时也带给我一种对自己(数据)的掌控感(错觉)。

但是注意!!!切记做好备份!!!