这篇笔记将会分享我自己正在使用的或者曾经使用过的、支持本地容器化部署的服务。这些服务大多是一些开源的服务,如果这篇笔记对你有帮助,可以到 GitHub@JimmyKmi 和 BiliBili@JimmyKmi 给我点个关注~
笔记内容将会持续更新,主要是太忙了…还没有太多时间敲笔记。
#什么是 Self Host
Self-Host(自架服务/自托管)是指自行在私有服务器上运行和维护的服务,而不是使用第三方公司(如云服务提供商)提供的服务。例如飞书这款软件,我们通常使用的是飞书的 App 连接飞书的服务器,而 Self-Host 版飞书则可以使用自己的服务器搭建飞书后台,数据不外漏。这赋予用户:
- 更大的数据隐私、控制权和灵活性
- 可能带来成本节省和技能提升的机会
我喜欢的 Self Host
按照我的定义,一个我喜欢的 Self Host 的服务应当具备以下几种条件:
- 支持本地部署,最好是支持容器化部署。
- 本地部署的版本相对云端(如有)没有对个人需求极具影响的功能消减。
- 我可以接受其由一个可靠的商业组织维护,但最好会接受社区的参与与代码审查。
在选择 Self Host 服务的时候,若有同类型的项目,我会更优先选择以下类型:
注意,这里只是我的个人喜好,不代表我的喜好就是"正确的"。
-
代码公开,或社区版代码公开(ce),接受社区维护。这类开源项目能更容易地接受审查,任何潜在漏洞在被发现和修复时往往会更加迅速。对于不开源的项目,我总会有所顾虑,担心可能会存在一些未被察觉的漏洞。
-
对社区版保持长期免费的政策。这一点与第一点密切相关。我并不反对项目推出企业版或付费版,并且很乐意为作者购买一杯咖啡或购买一个付费版,比如我已经给 Cloudreve 买了一杯咖啡。如果社区版或开源版能够公开接受 PR,应该为社区上的个人用户提供一个能够满足个人使用需求的基本免费版本。
-
适配 SSO 的序,且没有 SSO Tax 或极低的费用。为什么我会执着于使用 SSO 呢:
- 方便。尽管使用密码管理器也很方便,但维护多套密码仍然是一个非常费劲的活。尤其在家人共享的情况下很难让家人记住多套账号。
- 统一的账号管理与授权。如果需要将某些服务给与朋友/家人使用,例如云存储或者笔记,可以在身份认证提供服务器上直接开通,而不需要在不同平台进行操作。当然账号失窃时也可以一键封禁。
- 整体上相对安全。不排除部分项目的安全性即使接入了 SSO 也做的一塌糊涂,但 SSO 是有标准接入流程的,按照标准 SSO 流程接入 IdP 一般不会有太多问题,而程序自维护账号体系则会导致校验流程五花八门。对于一些支持 SSO 但漏洞百出的项目,可以在上一层嵌套 Proxy Auth 以要求所有请求必须先认证。这样可以有效防止机器人扫描以及自动攻击程序。而 Proxy Auth 与业务均使用 SSO,点击两次 SSO 比输入两次密码方便太多。
-
没有 SSO Tax 或极低的费用。如果一个软件推出了其企业版,往往会推出各种限制以保证企业版的功能独特性。但部署一个 SSO 服务对于"能够 Self Host 社区版"的用户来说也不算是什么难题…这很可能拦住了我这种对 SSO 强烈需求的人。
我的 Self Host 都是如何运行的
写在这里了,可以看看我的运维故事:https://lzj.ac.cn/notes/sre/5a655zmo5yyw566h55cg5oir55qe5pyn5yqh-OZgHH7AZsJ
#目前我收集的 Self Host 程序
这些项目有些具有不同的付费门槛,但依然是一个优秀的项目,作为用户也很感谢这些作者的付出,我也尽力争取给他们的项目贡献一份力。
身份认证(IdP)
- logto(完全免费,非常轻量)
- zitadel(完全免费,相对轻量。不支持 LDAP、RADIUS)
- authentik(个人碰不到收费门槛,支持 LDAP 等更丰富的认证)
- casdoor(个人碰不到收费门槛,支持 LDAP、RADIUS 等)
笔记
- outline(支持 SSO,个人使用碰不到收费门槛)
文件管理
#防火墙及出口
- 雷池(WAF;不支持 SSO,支持 Proxy Auth,社区版限制略大了但还是很有良心)
- NginxProxyManager(不支持 SSO,但是很轻量很方便)
运维
- Portainer(Docker 管理 UI;支持 SSO,并且支持 3 个节点的免费企业版,在外紧急运维真不错)
- uptime kuma(网站状态监测;不支持 SSO,但可以关闭登录并使用 ProxyAuth 实现 SSO,类似 traefik)
- beszel(服务器状态检测;支持 SSO,非常好用)