跳到主要内容

自部署

一个镜像。一条命令。
承载你的整个工作空间。

UnDercontrol 以单个 all-in-one 容器交付——前端和后端打包在一起。用一条命令部署到你自己的基础设施。没有厂商锁定,数据永不离开你的网络。

1 个容器~2 分钟即可运行免费 3 个月 Pro 许可证
bash — docker run
# the all-in-one image: frontend + backend in one container
docker run -d -p 3000:8080 \
  -e HOST_DOMAIN=http://localhost:3000 \
  -e JWT_SECRET=change-me-to-a-random-string \
  -e LICENSE_TOKEN=eyJjcmVhdGVkX2F0IjoxNzgzNjAwMzY4LCJ2YWxpZF91bnRpbCI6MTc5MTM3NjM2OCwidGllciI6InBybyIsInVzZXJfbmFtZSI6IlNlbGYtSG9zdCBUcmlhbCIsInVzZXJfc2VjcmV0X2hhc2giOiJlZDJiYTE3OGM2NzBlYzdmZjA0NzdlZTc1MTAyNjVkM2M4NWUzN2QyNWI2NDcxNDc3OTBmZDJmZDJlMTI1YmQ4Iiwibm9uY2UiOiJiMjAzYmFkNS1mYTQ4LTQwOWMtYmU1OC0yYTc0YWJkNjNiM2YiLCJtYXhfdXNlcnMiOjV9.Nf81OrehjlpXGDP7ppap5C8GYt0eXBh5wP0y62_-mz37SHd5-3iSMmGzGZ0P4Bz9z0E1cXs1F4IwDbad2s3BAQ \
  -e LICENSE_HOST_SECRET=undercontrol-selfhost-trial \
  -v undercontrol-data:/app/data \
  lintao0o0/undercontrol:latest

为什么自部署

你的基础设施,你的规则。

完全掌控数据

任务、笔记、文件和财务数据都保存在你掌控的硬件上。任何数据都不会发送给第三方——连 AI 都可以对接你自己的模型服务。

没有厂商锁定

一切皆代码。你的数据以 Markdown 和 YAML 声明,可用 Git 版本管理,随时可导出。没有需要逃离的专有格式。

离线与内网隔离

可部署在私有网络甚至完全隔离的内网环境。UnDercontrol 无需任何外网访问也能正常运行。

自由选择方案

自由选择数据库、存储、备份与扩展方式。树莓派、家用服务器、VPS 还是 Kubernetes 集群,全凭你决定。

渐进式部署

从小起步,就地成长。

先在自己的电脑上用桌面应用起步——不用 Docker、不用服务器。当你需要多设备访问时,升级到自部署容器,再扩展到 PostgreSQL、云存储或完整集群。全程数据模型不变——你只是改环境变量,从不重构。

01

本地桌面应用

下载即用。内置后端,完全离线。不用 Docker,不用服务器。

自部署
02

All-in-one · SQLite

自己服务器上的单个容器。任意设备均可访问。

+ postgres
03

独立 PostgreSQL

并发访问,生产级可靠性。

+ s3 / r2
04

云端文件存储

将附件卸载到 S3、R2 或 MinIO。

+ k8s
05

Kubernetes 集群

高可用、自动扩缩容、滚动更新。

单一根目录——完全可移植

你拥有的一切都存放在单一根数据目录下。迁移整个工作空间——从桌面应用到自部署服务器,或从一台服务器到另一台——只需拷贝一份 ./data. 无需专有导出,无需重新导入。备份、迁移、恢复,就这么简单。

免费试用许可证

免费用上 Pro——我们请客,3 个月。

我们正处于活跃开发阶段,所以这个 Pro 许可证对所有人免费开放。它已经预置在下面每种部署方式里——复制即用。

免费 · Pro 版

UnDercontrol Pro — 自部署试用

解锁 PostgreSQL、S3/R2 存储、多用户及角色权限,以及管理员控制台。

版本Pro
有效期至2026-10-07
最大用户数5
.env
# UnDercontrol - free 3-month Pro trial license
LICENSE_TOKEN=eyJjcmVhdGVkX2F0IjoxNzgzNjAwMzY4LCJ2YWxpZF91bnRpbCI6MTc5MTM3NjM2OCwidGllciI6InBybyIsInVzZXJfbmFtZSI6IlNlbGYtSG9zdCBUcmlhbCIsInVzZXJfc2VjcmV0X2hhc2giOiJlZDJiYTE3OGM2NzBlYzdmZjA0NzdlZTc1MTAyNjVkM2M4NWUzN2QyNWI2NDcxNDc3OTBmZDJmZDJlMTI1YmQ4Iiwibm9uY2UiOiJiMjAzYmFkNS1mYTQ4LTQwOWMtYmU1OC0yYTc0YWJkNjNiM2YiLCJtYXhfdXNlcnMiOjV9.Nf81OrehjlpXGDP7ppap5C8GYt0eXBh5wP0y62_-mz37SHd5-3iSMmGzGZ0P4Bz9z0E1cXs1F4IwDbad2s3BAQ
LICENSE_HOST_SECRET=undercontrol-selfhost-trial

部署方式

复制一份 compose 文件,即可运行。

下面每种方式都内嵌了试用许可证。all-in-one 镜像是最快的路径;其他方式则适合你需要独立数据库或集群时。

docker-compose.yml — all-in-one (SQLite)
services:
  undercontrol:
    image: lintao0o0/undercontrol:latest
    container_name: undercontrol
    ports:
      - "3000:8080"
    environment:
      - GIN_MODE=release
      - HOST_DOMAIN=http://localhost:3000
      - JWT_SECRET=change-me-to-a-random-string
      - ADMIN_EMAIL=admin@example.com
      - ADMIN_PASSWORD=changeme
      # free 3-month Pro trial license
      - LICENSE_TOKEN=eyJjcmVhdGVkX2F0IjoxNzgzNjAwMzY4LCJ2YWxpZF91bnRpbCI6MTc5MTM3NjM2OCwidGllciI6InBybyIsInVzZXJfbmFtZSI6IlNlbGYtSG9zdCBUcmlhbCIsInVzZXJfc2VjcmV0X2hhc2giOiJlZDJiYTE3OGM2NzBlYzdmZjA0NzdlZTc1MTAyNjVkM2M4NWUzN2QyNWI2NDcxNDc3OTBmZDJmZDJlMTI1YmQ4Iiwibm9uY2UiOiJiMjAzYmFkNS1mYTQ4LTQwOWMtYmU1OC0yYTc0YWJkNjNiM2YiLCJtYXhfdXNlcnMiOjV9.Nf81OrehjlpXGDP7ppap5C8GYt0eXBh5wP0y62_-mz37SHd5-3iSMmGzGZ0P4Bz9z0E1cXs1F4IwDbad2s3BAQ
      - LICENSE_HOST_SECRET=undercontrol-selfhost-trial
    volumes:
      - ./data:/app/data
    restart: unless-stopped
然后打开 http://localhost:3000 —— 单个容器,SQLite 存储在 ./data。
想用 S3 / R2 存储? 在以上任意方式中加入 S3_ENABLED=true、S3_ENDPOINT、S3_BUCKET、S3_ACCESS_KEY_ID 和 S3_SECRET_ACCESS_KEY —— 支持 AWS S3、Cloudflare R2 或 MinIO。

启动它

保存文件,然后运行 docker compose up -d。首次启动会自动拉取镜像并执行数据库迁移。

架构

默认单镜像——需要时再拆分。

Browser
web · desktop · mobile
undercontrol
all-in-one · :3000
Database
sqlite / postgres
AI provider
optional
S3 storage
optional

all-in-one 镜像用一个容器同时提供 Web 应用和 Go API。自带 PostgreSQL 或 SQLite,并可插入兼容 OpenAI 的 AI 服务、兼容 S3 的存储或 OpenTelemetry —— 均为可选,全部由你掌控。

准备好拥有你的工作空间了吗?

复制上面的 compose 文件,或跟随完整指南完成 PostgreSQL、S3 和 Kubernetes 部署。