跳到主要内容

用自托管掌控你的数据

· 阅读需 4 分钟
Creator of UnderControl

这种挫败感往往是慢慢积累的。你注册了一款效率工具,把任务和财务数据迁移进去,围绕它建立起工作习惯——然后某一天,定价突然变了,公司转型了,甚至服务直接关停了。你的数据就此消失,或者被锁在一个导出按钮后面,导出来的东西几乎无法使用。

UnDercontrol 从一开始就是为了彻底避免这种情况而设计的。它支持自托管,意味着你在自己掌控的基础设施上运行它,数据存放在你指定的地方。

UnDercontrol dashboard — self-hosted and fully under your control

用 Docker Compose 几分钟内完成部署

对大多数人来说,Docker Compose 是最快的启动方式。一个 docker-compose.yml 文件就能拉取后端和前端镜像,将它们连接起来,几分钟内就能在你的服务器或本地机器上运行 UnDercontrol。

一个最简配置大致如下:一个将数据目录挂载为卷的后端服务、一个指向它的前端服务,以及可选的 Caddy 或 Nginx 反向代理。对于单用户或小家庭部署来说,这就是全部了。不需要托管云账户,不需要第三方服务的 API 密钥,数据不会离开你的网络。

Docker 镜像设计得轻量且行为可预期。它不会回连服务器,初次拉取后无需网络连接,所有内容都存储在你配置的路径下。

面向团队和进阶用户的 Kubernetes 部署

如果你在使用 Kubernetes 搭建家庭实验室,或者希望获得正式编排带来的可靠性,UnDercontrol 同样提供了 Kubernetes 清单文件。你可以使用标准的 Deployment 和 Service、用于数据持久化的 PersistentVolumeClaim,以及用于环境配置的 ConfigMap。

这对于为小型团队——家庭、朋友群组、小公司——部署 UnDercontrol 尤为实用。你可以设置合理的资源限制、滚动更新,并在需要时独立扩展后端。Kubernetes 还让添加 Ingress 规则、TLS 终止和命名空间级别的隔离变得非常简单。

SQLite 还是 PostgreSQL——按需选择

UnDercontrol 在数据库选择上给了你充分的灵活性。对于单用户或少量用户的场景,SQLite 是默认选项,而且表现非常出色。无需管理数据库服务器,无需配置连接池,备份就是复制一个文件那么简单。在这种场景下,SQLite 的能力出乎意料地强,运维负担几乎为零。

当你需要更多能力时——并发用户、大规模数据集、与现有数据库基础设施集成——切换到 PostgreSQL 只需修改环境变量并运行迁移。两种后端的 Schema 完全一致,不需要重新设计任何东西,只需将应用指向你的 Postgres 实例即可。

这种灵活性很重要,因为你的需求会随时间变化。从 SQLite 起步、之后再迁移是一条官方支持的路径,而不是事后才想到的补丁。

数据完全自主意味着什么

自托管意味着你的任务、财务记录、上传的文件以及 AI 对话历史,全部存储在你掌控的存储介质上。想迁移到其他服务器,只需复制数据目录并更新部署配置。想备份所有内容,备份那个目录就行。即使你决定彻底停用 UnDercontrol,数据依然在那里,格式可读。

不需要注销账户,不需要提交工单,不需要等待期。数据属于你,因为它从一开始就在你的机器上。

这也意味着你控制着访问权限。在私有网络或 VPN 后面运行 UnDercontrol,你的财务数据就不会触及公共互联网,除非你主动将其路由出去。对于追踪详细预算或敏感个人信息的用户来说,这绝非小事。

无供应商锁定,由设计保证

后端 API 有完整文档,且对外开放。CLI 使用 kubectl 风格的命令,与 Web 应用调用的是同一套 API。你可以编写脚本调用它、与其他工具集成,或者构建自己的客户端。任务和笔记的格式设计上注重可移植性。

我们的目标始终是:让你持续使用它,是因为它真的有用——而不是因为迁移走的代价太高、懒得折腾。

开始使用

部署指南详细介绍了 Docker Compose 配置、Kubernetes 清单、数据库配置以及备份策略。如果你有一台服务器或闲置的机器,今天就能跑起来一个可用实例。

查阅自托管文档开始部署,或者在 GitHub 上提 Issue,如果配置过程中有任何地方不符合预期。