自托管个人内容平台 — 文章、说说、相册、足迹、AI 工具,一个 Bun 进程全部搞定
A self-hosted personal content platform for independent writers — posts, moments, albums, footprints and AI tools, served by a single Bun process.
Utterlog 面向独立作者和个人站长,把博客运营需要的东西收进一个系统:文章、页面、说说、评论、媒体、相册、足迹、友链、订阅、统计与 AI 工具。数据、数据库和附件全部托管在你自己的服务器上,不依赖第三方 SaaS。
前台、后台和全部 API 由 TanStack Start Server Routes 提供,跑在同一个 Bun 进程里——没有微服务,没有容器编排,一个 systemd 单元就是全部运维负担。
内容管理
- 文章、页面、说说、评论、媒体库
- 相册、足迹、友链、音乐与内容收藏
- WordPress / Typecho 数据导入,PostgreSQL 备份
发布与触达
- 服务端渲染、固定链接、SEO、RSS 与站点地图
- 公开页面 CDN 友好缓存,减少重复回源
- 5 套内置主题(Utterlog / Azure / Flux / Nebula / Renascent)、深色模式、后台可视化设置
安全
- Passkey 无密码登录、双因素认证
- 访问统计防刷:同页去重、行为限速、身份轮换保护
AI 工具
- 可配置 AI Provider(支持自定义服务地址与模型)
- 文章摘要、自动标签、AI 配图、文章 AI 伴读助手
| 层 | 技术 |
|---|---|
| 全栈框架 | TanStack Start(SSR + Server Routes) |
| UI | React 19、Tailwind CSS 4 |
| 路由与数据 | TanStack Router、TanStack Query |
| 运行时 | Bun 1.4 |
| 语言与构建 | TypeScript、Vite |
| 数据库 | PostgreSQL 19 + pgvector(PG_MAJOR=18 可装上一个正式版) |
| 存储 | 本地磁盘或 S3 / Cloudflare R2 |
| 部署 | Bun + systemd,Nginx / Caddy / 1Panel / 宝塔反代 |
一行安装(64 位 Linux + systemd,脚本自动补齐 Bun、PostgreSQL 19 + pgvector):
curl -fsSL https://raw.githubusercontent.com/utterlog/utterlog/main/install.sh | sudo bash指定域名并启用自动 HTTPS:
curl -fsSL https://raw.githubusercontent.com/utterlog/utterlog/main/install.sh | sudo DOMAIN=blog.example.com bash默认监听 127.0.0.1:9260,生产环境用 Nginx、Caddy、1Panel 或宝塔反向代理。详见 INSTALL.md。
需要 Bun 1.4 和可用的 PostgreSQL:
bun install
bun run dev常用命令:
bun run check # 类型检查(服务端 + TanStack Start)
bun run build # 构建后台 + 前台
bun run test:server # 服务端测试
bun run verify # 检查 + 构建 + 测试 + API 覆盖审计make deploy # 部署
make update # 更新
make logs # 查看日志后台也支持一键升级:触发受限的 systemd 更新任务,自动拉取源码、校验构建、重启服务并健康检查。详见 deploy/README.md。
- INSTALL.md — 安装指南
- DEVELOPMENT.md — 开发说明
- deploy/ — 反代与 systemd 模板
- CHANGELOG.md — 更新日志
- RELEASE_HISTORY.md — 历史版本