Unraid篇:docker私有部署服务推荐

这是个特别的周末,似乎整个网络安全圈都沉浸在CVE-2021-44228这个CVSS 10分、影响颇大的漏洞,到处被log4j2的${jndi:ldap://dnslog/}刷屏。一时间PR稿、技术秀并起,极少人去关注漏洞发现的作者、非预期提前披露的原因与行业合理的严重漏洞处置与披露规范。七八年过去了,安全行业仿佛发生了很多变化,又其实哪里一直没变。或许人性使然吧,突然感慨几句、好似无病呻吟。

陆陆续续折腾过一堆虚拟化与NAS系统,三年前偶然发现unraid时被其设计理念与系统模式吸引,感叹遇到最适配自己HomeLab需求的OS。至今运行多年,基于其丰富的应用社区与awesome-selfhosted 开源项目参考,自己也体验了不少不错的的私有部署服务,简单做个总结供有缘人参考。


媒体资讯类

最近HC550很火,18T单盘位给高清爱好者带来更佳的存储体验,还好这一轮chia币没有显卡矿潮来的那么持久。私有媒体服务用户较多的是Plex、Emby和Jellyfin,只搭建使用过前两者,Plex的日常使用体验、在各种设备上丰富的客户端也完全满足我的需要,蓝光盘的播放也有些解决方案,只是服务端硬解等功能需要需要会员账号,好在每年都有Lifetime折扣,购买一次全家永久使用。

Plex主要解决媒体刮削与分类展示、服务端解码的需求,对于一个懒惰的追剧人来说还需要自动化的媒体跟踪下载与IPTV接入。自动化追剧体验上,主要两套方案并行(当然前提都要混PT):

  • Jackett(PT站统一API)->Radarr(电影)+Sonarr(剧集)->Overseerr(用户界面),完成的效果是日常访问overseerr,订阅在追的剧集,服务端匹配到imdb/tvdb编号后判断日常更新日期,并通过radarr/sonarr查询jackett封装的种子站API,创建种子任务。这套部署方案在smzdm上有不少文章可以参考。优点的UI不错、操作容易、自动规范化命名,但主要对美剧支持较好,因为关键词搜索的格式英文名+S*E*的格式,很多国产单季剧集难以被自动化检索到,看到有国内的朋友提了issue但官方无意改变。
  • FlexGet(定时任务自定义规则匹配)+Qbittorrent(下载),主要解决一些命名难以检索,更需要自定义查询的场景(这类场景其实更常见..),比如下面一个常用的flexget配置,会每半小时拉取PT站RSS内容凭匹配最新的标题含xx1/xx2的资源,并自动调用qb服务下载。
web_server:
  bind: 0.0.0.0
  port: 5050
  web_ui: yes

templates:
  dl:
    content_size:
      min: 128
      max: 30720
      strict: no

  anime:
    qbittorrent:
      path: /downloads/
      host: x.x.x.x
      port: 8080
      label: flexget

tasks: 
  pt_site_1:
    rss: https://xxx
    accept_all: no
    if:
      - "'xx1' in title": accept
      - "'xx2' in title": accept
    template:
      - dl
      - anime

schedules:
  - tasks: pt_site_1
    schedule:
      minute: "*/30"

传统的电视直播基本很少会看,不过也有解决方案,根本上还是依赖稳定的m3u源,使用xteve项目做中转,然后由Plex接入频道播放或录制。

资讯订阅上,基本基于RssHub(万物皆可RSS)与MiniFlux(一款极简RSS reader,需要的第三方API基本都有)

开发测试类

平时或多或少会有些云端开发的需求,这部分很多私有部署服务都广为人知

IDE上习惯VSCode,Web版本最早使用的codercom的code-server,JetBrains出品的registry.jetbrains.team/p/prj/containers/projector-idea-c系列让本来很重的IDEA Commnity也可以通过浏览器访问使用,大大降低临时使用时搭建环境折腾的时间,由于鉴权做的比较简单,只适合临时使用,另外除了Java、其他语言JetBrains也有提供不同的镜像。

代码仓库见仁见智,Gitlab功能成熟但较重,轻量一点Gitea、Gitee都不错,持续集成有Drone满足日常需要,私有Docker镜像仓库等使用了nexus3,另外一些服务解决方案,比如代码检索SourceGraph、API调试发包工具hoppscotch等。

笔记文档类

个人笔记找过很多,思源笔记是目前使用还不错的一款所见即所得知识库,也支持双向链接,比Obsidian更本地化,且支持Web使用;比起Notion等数据更自主可控。

之前也使用过Confluence私有部署版,一个传统可靠的团队知识库,个人使用每年几💲的授权,不过后来官方似乎有意停止私有部署市场,不再继续支持。

最早想找Notion的替代品,其实找到的是OutlineAnyType,前者部署会相对麻烦,需要修改较多参数、配置SSO等,具体可以参考这位前辈的博客。后者目前还在开发阶段,似乎布局很大,但目前看还是以App的形态存在。

除了笔记类,偶尔也会用到draw.io(绘流程图)和privatebin(pastebin alternative)

工具服务类

最后筛下来主要是杂七杂八的工具汇总,私有部署数据无价、切记做好多重备份。

统一密码管理:bitwarden (希望社区把插件UI再美化点吧),替代1password等

浏览器同步:firefox-sync,about:config修改identity.sync.tokenserver.uri指向私有服务,只私有化浏览器云同步内容,认证使用的还是firefox账号体系

数据库管理:cloudbeaveromnidb (远程浏览器操作数据库)

跳板堡垒机:next-terminal (中间闭源了一些版本,目前又恢复开源)

编码加解密:https://gchq.github.io/CyberChef/

文件管理:用过一段时间seafile,但是其存储格式与性能表现的不是特别放心,还是交给群晖Drive好了,对象存储使用minio是个不错的选择。

搜索引擎:https://github.com/searx/searx

隔空投送:https://github.com/RobinLinus/snapdrop

DNS分流:https://github.com/shawn1m/overture

网站可用性监控:https://github.com/louislam/uptime-kuma

工作流编程:https://github.com/node-red/node-red

写在最后

self-hosting除了折腾,更多是为尽可能少的将个人数据放心的交给服务提供商,以力图做到数据自主可控。相对的,自建服务的安全性也尤为重要。常看到公网莫名暴露的脆弱服务,反而导致个人NAS家庭数据的完全泄漏。

平时使用避免直接公网暴露端口服务,使用WireGuard/ZeroTier/Tailscale构建私有VPN网络,各设备控制接入是一个相对均衡的方案。另外可以购买域名,Let's Encrypt申领有效的SSL证书,并用nginx-manager对这些服务们做统一的代理有访问控制。

折腾吧,趁还年轻🐶