如果你和我一样,家里跑着好几台机器、十几个自建服务,”现在到底哪个挂了”这个问题只能靠挨个开浏览器标签来回答——那你大概也早就想要一个统一的地方把这些都管起来。最近在 GitHub 上翻到一个叫 CoreControl 的小项目,定位很直白:把你分散在各处的服务器、应用、网络关系,收拢到一块仪表盘上。
它不像 Prometheus + Grafana 那种重型监控栈,也不只是个书签首页。CoreControl 想做的是基础设施的”台账 + 探活 + 拓扑图”三件套,介于”收藏夹”和”监控系统”之间的那个空档。项目还年轻(MIT 许可,作者 crocofied,目前星星数很少,属于早期个人作品),但思路清楚,部署也简单,值得当玩具先玩起来。

它到底是什么
CoreControl 是一个自托管的 Next.js 应用,核心就三块:
- 服务器目录:把每台机器登记进来,填 CPU、内存、硬盘这些硬件参数,再挂上管理面板的快捷链接(比如某台机器的管理后台、容器面板地址等)。
- 应用追踪:把你的自建服务一个个加进去,填名称和访问地址,CoreControl 会持续去探活,记下在线/离线时间线。
- 网络可视化:用拖拽的方式画一张拓扑图,把服务器和应用连起来,记录它们之间怎么互通——出事的时候一眼就能看清谁依赖谁。
它还带一个用 Go 写的轻量 agent,通过 Glances 的 API 去采集被监控机器的硬件指标(CPU、内存、负载等),不需要开 SSH、也不塞重agent。不想用 agent 也行,web 容器单独跑,应用探活和拓扑图照样能用,只是少了硬件监控那一块。

为什么值得一试
大多数自托管玩家的真实需求,不是”我那个网盘实例的 p99 延迟是多少”,而是”网盘还活着吗?管理后台的链接我又忘了“。CoreControl 正好回答这两个问题。
它和几个常见替代品的角度不太一样:
- Homepage / Homer:漂亮的起始页,能放链接和 widget,但一般不做历史探活,也没有网络拓扑。
- Uptime Kuma:探活是强项,但不管服务器台账,也没有拓扑视图。
- CoreControl:把”服务器档案 + 应用探活 + 拓扑图”放一起,恰好填补那个中间地带。
技术栈也现代:Next.js + TypeScript 做前端,Go 写 agent,PostgreSQL 17 存数据(Prisma ORM),拓扑图用 React Flow,图标直接调 selfh.st 的图标库,应用列表一眼就能认出来。

怎么部署
官方给的是三容器 Docker Compose:一个 web(Next.js,端口 3000)、一个 agent(Go)、一个 PostgreSQL 17,共享一个数据卷。最小配置长这样(整段照抄即可,只改 JWT_SECRET):
services:
web:
image: haedlessdev/corecontrol:latest
ports:
- "3000:3000"
environment:
JWT_SECRET: "换成一段随机长字符串"
DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres"
depends_on:
db:
condition: service_healthy
restart: unless-stopped
agent:
image: haedlessdev/corecontrol-agent:latest
environment:
DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres"
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: postgres:17
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 2s
timeout: 2s
retries: 10
volumes:
postgres_data:
存成 docker-compose.yml,跑 docker compose up -d,打开 http://你的机器IP:3000。默认登录是 admin@example.com / admin,第一次进务必去设置里改密码。JWT_SECRET 随便用 openssl rand -hex 32 生成一段填进去就行,其余保持默认就能跑。
数据全在 postgres_data 这个卷里,升级镜像时卷不丢,应用启动时自己跑迁移,这点对懒人很友好。要上生产的话,把 PostgreSQL 那三个 postgres:postgres 换成强密码,再用反代套一层 HTTPS(Caddy 一行 reverse_proxy localhost:3000 就完事),数据库端口本来就不暴露到宿主机,安全性够用。

几个坑要注意
- 项目非常早期:GitHub 上星星寥寥,作者同时在做后端用 Elysia(TypeScript/Bun)的重构并加入多租户,仓库看起来”空”是因为稳定版走的是预构建 Docker 镜像,代码在慢慢迁。当玩具玩没问题,别指望它像 Uptime Kuma 那样成熟。
- agent 依赖 Glances:要拿硬件指标,被监控机器得先跑起 Glances 并且 agent 容器能访问到它的 API。没装 Glances 就只有应用探活,少了服务器层面的监控。
- Dashboard 概览页还是 WIP:README 里那个”总览大屏”目前还是半成品,真正常用的是服务器、应用、探活、拓扑这几页。
- 默认密码是 admin:这是最容易踩的,公网暴露前一定改掉,最好套反代 + 强 JWT_SECRET。
- 没有移动 App:web 端响应式,手机浏览器能用,但别等原生客户端。
小结
CoreControl 不打算替代你的专业监控栈,它解决的是更日常的那个痛点:东西一多就记不住谁在哪、谁还活着。三容器 Compose 一贴就起,MIT 随便改,早期但思路对。如果你正好缺一个轻量的”基础设施台账”,可以拉下来试试,等它重构完多租户说不定就更香了。