LiveMS 是一个生活管理系统,包含:
- 日程(Schedule)
- 待办(Todo)
- 课程(Course)
- 文件(File)
- 笔记(Note)
系统支持主系统(master)和子系统(slave)协作部署。
- 后端:FastAPI + SQLAlchemy + SQLite
- 前端:Vue 3 + TypeScript + Vite + Vuetify
- 认证:
- master:密码登录
- slave:用户名密码登录(直接读取共享主库校验)
backend/:统一后端代码(master_app.py+slave_app.py,以及master_routes/+slave_routes/)frontend/:统一前端(根据后端返回模式切换 master/slave 行为)common/:主从复用的公共代码ops/:部署、systemd、nginx、hook 样例
- master 是数据源和权限中心:
- 保存所有用户、策略组、业务数据
- 提供管理员功能(用户管理、策略管理等)
- slave 是受限视图层:
- 不保存业务主数据,只保存本地 session/cache
- 与 master 在同机运行,直接读取共享数据库与文件存储
- 不通过 HTTP 请求 master 内部 API
- 用户可见范围由 master 返回的策略规则决定。
- 规则可按
type + tags + fields限定可见对象和字段。 recursive=true时,规则命中的对象会额外放开“它引用的对象”(一层)。- 引用关系来自业务文本中的引用标记(schedule/todo/course/file/note 间互引)。
- 用户在 slave 登录(
/api/auth/login)。 - slave 直接读取共享主库校验用户名密码并加载用户上下文。
- slave 本地签发 session token(24h),后续请求都使用该 token。
- slave 直接从共享主库读取业务数据,并在 slave 侧做字段/对象过滤后返回前端。
说明:
- 主从不再依赖内部 HTTP token/pre-auth 链路。
- 数据库迁移会确保存在默认子系统管理员:
- 用户名:
admin - 初始密码:
admin/admin - 首次登录强制改密
- 用户名:
- 子系统管理员登录后只进入子系统管理面板,不访问业务资源页面。
本地执行:
git push server mainserver 上的 bare repo hook(/opt/livems/repo.git/hooks/post-receive)会:
- checkout 到
/opt/livems/app - 安装/更新
backend依赖 - 构建前端
- 重启
livems.service(并可选重启livems-slave.service) - 写入部署状态到
/opt/livems/deploy/status.json
master和slave在同一台服务器上以两个 systemd 服务运行。- 两者共用同一套环境文件(默认
/opt/livems/env/.env)。 - 两者直接访问同一
LIVEMS_DB_PATH和LIVEMS_STORAGE_DIR。
仓库根目录可直接使用:
make dev-master-backend
make dev-slave-backend
make dev-frontend-master
make dev-frontend-slave说明:
dev-frontend-master:前端连接 master 后端(默认http://127.0.0.1:8000)dev-frontend-slave:前端连接 slave 后端(默认http://127.0.0.1:8010)
LIVEMS_PASSWORDLIVEMS_SECRET_KEYLIVEMS_DB_PATHLIVEMS_STORAGE_DIRLIVEMS_PUBLIC_BASE_URL
LIVEMS_SLAVE_FILE_CACHE_DIRLIVEMS_SLAVE_FILE_CACHE_MAX_BYTESLIVEMS_SLAVE_FILE_CACHE_TTL_SECONDS
- 主系统部署:
ops/deploy.md - 子系统部署:
ops/slave-deploy.md - server 实机文档:
~/livems-ops.md(server)
note.txt不提交到 git。- 认证 URL、token、证书路径等敏感信息只放环境文件,不进入仓库。
- slave 与 master 同机部署时,建议明确配置共享主库路径与共享存储路径。