MarkFlow 是一个基于 Rust + Vue 3 的轻量文档系统,核心结构为:用户 -> 项目 -> 文档树。
Docker Hub 镜像仓库:
lhstack/markflow项目仓库:
linux/amd64linux/arm64拉取镜像:
docker pull lhstack/markflow:latest
说明:
v* 版本标签时构建并推送latest 始终指向最近一次正式版本发布lhstack/markflow:v1.0.9运行容器:
docker run -d \
--name markflow \
--restart unless-stopped \
-p 3000:3000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/logs:/app/logs \
-e JWT_SECRET=replace_with_your_secret \
-e SHARE_PASSWORD_SECRET=replace_with_your_share_password_secret \
-e REGISTRATION_ENABLED=true \
-e UPLOAD_MAX_MB=20 \
lhstack/markflow:latest
访问地址:
http://<你的服务器IP>:3000services:
markflow:
image: lhstack/markflow:latest
container_name: markflow
restart: unless-stopped
ports:
- "3000:3000"
environment:
PORT: "3000"
DATABASE_URL: "sqlite:data/markflow.db"
JWT_SECRET: "change_me_to_a_long_random_string_in_production"
SHARE_PASSWORD_SECRET: "change_me_to_a_long_random_string_for_share_password_encryption"
RUST_LOG: "markflow=info,tower_http=warn"
UPLOAD_DIR: "uploads"
REGISTRATION_ENABLED: "true"
UPLOAD_MAX_MB: "20"
LOG_TO_FILE: "true"
LOG_DIR: "logs"
LOG_FILE_NAME: "markflow.log"
LOG_ROTATE_SIZE_MB: "50"
LOG_ROTATE_DAYS: "1"
LOG_KEEP_DAYS: "14"
MCP_STDIO_ENABLED: "false"
MCP_STDIO_ALLOWED_COMMANDS: "npx,node,uvx"
volumes:
- ./data:/app/data
- ./uploads:/app/uploads
- ./logs:/app/logs
启动:
docker compose up -d
/app/data:SQLite 数据目录/app/uploads:头像、项目背景图、附件等上传目录/app/logs:应用日志目录建议持久化挂载这三个目录。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
PORT | 3000 | HTTP 监听端口 |
DATABASE_URL | sqlite:data/markflow.db | 数据库连接串 |
JWT_SECRET | markflow_dev_secret_change_in_production | JWT 密钥,生产必须替换 |
SHARE_PASSWORD_SECRET | 同 JWT_SECRET 回退值 | 分享密码加密密钥,生产建议单独配置 |
RUST_LOG | markflow=info,tower_http=warn | 日志级别 |
UPLOAD_DIR | uploads | 上传文件目录 |
REGISTRATION_ENABLED | true | 是否允许新用户注册 |
UPLOAD_MAX_MB | 20 | 单文件上传大小限制(MB) |
LOG_TO_FILE | false | 是否写入文件日志 |
LOG_DIR | logs | 日志目录 |
LOG_FILE_NAME | markflow.log | 当前日志文件名 |
LOG_ROTATE_SIZE_MB | 50 | 日志滚动大小(MB) |
LOG_ROTATE_DAYS | 1 | 日志滚动天数 |
LOG_KEEP_DAYS | 14 | 历史日志保留天数 |
MCP_STDIO_ENABLED | false | 是否启用 MCP stdio transport |
MCP_STDIO_ALLOWED_COMMANDS | 空 | 允许被 MCP stdio 拉起的命令白名单,逗号分隔 |
说明:
config.tomlSHARE_PASSWORD_SECRET 进行服务端加密后保存SHARE_PASSWORD_SECRET,系统会回退使用 JWT_SECRET,但生产环境不建议这样做stdio,必须同时设置 MCP_STDIO_ENABLED=true,并通过 MCP_STDIO_ALLOWED_COMMANDS 显式声明可执行命令stdio 后,才会显示对应 transport 配置项从 1.0.1 开始,系统启动时会自动检查超级管理员账号:
admin查看初始密码:
docker logs markflow | grep "Initialized super admin account"
如果环境里没有 grep,也可以直接查看最近日志:
docker logs --tail 200 markflow
建议首次登录后立即修改管理员密码。
以下内容基于 v1.0.8..当前工作区 的实际改动整理:
MCP 配置 弹窗,不再与供应商配置混在一起,MCP 管理的左右分栏和底部操作区也更适合长表单编辑sse、streamable-http 与 stdio 三种 transport,并补齐持久化、测试连接、刷新能力、工具/资源/提示快照与聊天实际注入stdio 支持命令、参数和环境变量配置MCP_STDIO_ENABLED / MCP_STDIO_ALLOWED_COMMANDS 配置,用于控制 stdio 是否可见以及允许执行的命令白名单streamable-http 不再允许误配 legacy /sse 端点,legacy SSE 心跳空消息也不会再产生日志噪音如果你准备基于 v1.0.9 发布镜像,建议在发布说明中额外强调两点:
v1.0.9 标签并推送后,Docker Hub 才会出现对应镜像计划发布后,Docker Hub 将新增:
lhstack/markflow:v1.0.9lhstack/markflow:latest以下内容基于 v1.0.7..当前工作区 的实际改动整理:
create_tree_node 明确约束了根目录创建语义:创建项目根目录节点时不要传 null、空字符串、0 等占位父节点参数,降低模型误传参概率move_tree_node 明确约束了根目录移动语义:移动到项目根目录时必须显式传 to_root=true,且不要混传 target_parent_* 字段,减少工具调用歧义parent_id=0 或目标父节点为 0 视为根目录别名,并统一解析 target_parent_* / parent_* 兼容字段,提升目录创建与节点移动的成功率previewDraft 节流同步机制,分栏/预览模式下可在保留实时预览的同时减少高频重渲染,改善长文编辑流畅度如果你准备基于 v1.0.8 发布镜像,建议在发布说明中额外强调两点:
v1.0.8 标签并推送后,Docker Hub 才会出现对应镜像计划发布后,Docker Hub 将新增:
lhstack/markflow:v1.0.8lhstack/markflow:latest以下内容基于 v1.0.6..当前工作区 的实际改动整理:
tool.request -> /api/agent/tool-callback 请求前端执行工具,并将结果作为标准 tool result 回灌模型上下文[[ACTION:append]] / [[ACTION:replace]] 文档动作协议纳入 loop 语义,ACTION 写入完成后会被视为 synthetic tool result 参与后续续轮[[/ACTION]][[ACTION:append]]...[[/ACTION]],整篇整体替换时使用 [[ACTION:replace]]...[[/ACTION]]AgentWorkbench,支持按 provider kind 管理模型接入,区分 openai / anthropic / gemini,并为单模型配置 modalities / thinking / tools / reasoning effort / additional paramsprovider_kind、model_configs、模态与工具开关的持久化存储与数据库迁移以下内容基于 v1.0.5..当前工作区 的实际改动整理:
auto / responses / chat 三种传输模式,便于兼容不同模型与网关append / replace / rewrite_section / replace_block 的 payload 规范与提示词规则以下内容基于 v1.0.4..v1.0.5 的实际 git 提交整理:
以下内容基于 v1.0.3..HEAD 的实际 git 提交整理:
append / replace / rewrite_section / replace_block,支持局部重写与片段替换read_editor_snapshot、save_current_document、update_tree_node_meta、update_project以下内容基于 v1.0.2..HEAD 的实际 git 提交整理:
Responses 链路补充工具调用回退处理,并增强当前会话上下文记忆Ctrl+Enter / Cmd+Enter 发送、Enter 换行查看日志:
docker logs -f markflow
重启容器:
docker restart markflow
更新镜像:
docker pull lhstack/markflow:latest
docker compose up -d
Content type
Image
Digest
sha256:1fcc72e8d…
Size
20 MB
Last updated
6 months ago
docker pull lhstack/markflow