Docker一键部署Univer Workspace:生产环境配置、GitHub/Discord OAuth登录与数据卷指南
Docker一键部署Univer Workspace生产环境配置、GitHub/Discord OAuth登录与数据卷指南【免费下载链接】univer-workspaceAn open-source Office workspace where people and AI agents create, collaborate, and review together.项目地址: https://gitcode.com/gh_mirrors/un/univer-workspace 本文带你用Docker 一键部署 Univer Workspace—— 开源 Office 协作工作区覆盖生产环境变量、GitHub/Discord OAuth 登录配置与数据卷持久化三大核心环节从拉取源码到对外提供服务全程约 10 分钟新手也能一次跑通。一、Univer Workspace 是什么Univer Workspace 是一个可自托管的开源办公与协作平台把**表格、文档、幻灯片、数据库Base、画布Board**装进同一个运行时支持多人实时协作、权限管理、回收站、版本历史还能为 AI Agent 提供隔离的 Worktree 评审工作流。部署架构非常轻量一个 Server 容器同时托管后端 API 和构建好的前端页面数据落在一个.data数据目录里——这也是本文 Docker 数据卷配置的核心。 部署细节官方出处apps/workspace/README.md二、Docker一键部署三步启动1. 获取源码git clone https://gitcode.com/gh_mirrors/un/univer-workspace cd univer-workspace2. 构建镜像镜像由多阶段构建完成先编译前端与 Server再打出一个只含生产依赖的轻量运行层基于node:24-bookworm-slim。构建文件位于 apps/workspace/Dockerfiledocker build \ --build-arg VITE_UNIVER_LICENSE$VITE_UNIVER_LICENSE \ -f apps/workspace/Dockerfile \ -t univer-workspace .⚠️VITE_UNIVER_LICENSE用于非 localhost 域名部署的运行时许可覆盖内置开发许可只对 localhost 生效生产域名部署必须通过该构建参数传入你自己的许可。3. 一键运行容器docker run --name univer-workspace \ -p 3020:3020 \ -v univer-workspace-data:/app/univer-workspace/.data \ -e GITHUB_CLIENT_ID \ -e GITHUB_CLIENT_SECRET \ -e GITHUB_CALLBACK_URLhttps://workspace.example.com/api/auth/github/callback \ -e DISCORD_CLIENT_ID \ -e DISCORD_CLIENT_SECRET \ -e DISCORD_CALLBACK_URLhttps://workspace.example.com/api/auth/discord/callback \ -e SECURE_COOKIEStrue \ univer-workspace容器默认以node 非 root 用户运行只暴露3020一个端口。启动后浏览器打开http://服务器IP:3020即可看到登录页API 文档在http://服务器IP:3020/api-docs与/openapi.yaml。三、生产环境配置关键环境变量清单配置模板见 .env.example。Docker 场景下用-e或--env-file传入最常碰到的项如下变量作用生产建议HOST/PORT监听地址与端口镜像默认0.0.0.0:3020保持默认靠端口映射对外SECURE_COOKIES会话 Cookie 是否仅 HTTPS 传输HTTPS 部署必须true纯 HTTP 环境才设falseSESSION_TTL_MS登录会话有效期默认 7 天按安全策略调整VITE_UNIVER_LICENSE前端构建期许可build-arg 传入非 localhost 域名必填METRICS_TOKEN启用带 Bearer 鉴权的/metrics端点接 Prometheus 监控时设置32 位以上随机串LOG_LEVEL日志级别info启动自检容器启动时会向 stdout 输出 JSON 行格式的启动诊断workspace.startup事件每个阶段带耗时与内存信息无需额外配置。排查卡在启动问题时直接docker logs即可定位到具体阶段。如需把指标接入监控面板仓库自带观测组件见 observability/README.md内含 Prometheus 抓取配置与 Grafana 仪表盘 univer-workspace.json。四、OAuth 登录GitHub / Discord 一键接入 GitHub 登录三项变量同时配置才会启用GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRETGitHub OAuth App 的凭据GITHUB_CALLBACK_URL回调地址必须与 GitHub 侧填写的回调 URL逐字符一致生产环境形如https://workspace.example.com/api/auth/github/callbackGitHub OAuth App 只允许一个回调 URL本地开发与生产建议各建一个 App不要共用。首次 GitHub 登录会自动创建用户与个人空间登录成功后账号菜单里还可把 GitHub 账号绑定到已有用户。访问令牌只用于拉取 GitHub 资料不会被持久化存储。团队管控两个进阶开关GITHUB_ALLOWED_ORGANIZATIONS逗号分隔的组织白名单登录后校验组织成员资格PASSWORD_AUTH_ENABLEDfalse关闭密码注册/登录。两者配合并留空 Discord 配置时唯一登录路径就是属于指定 GitHub 组织——适合企业内网部署。若密码登录关闭且 GitHub、Discord 都未配置服务会拒绝启动防止把自己锁在门外。 Discord 登录同样三项齐备即启用DISCORD_CLIENT_ID、DISCORD_CLIENT_SECRET、DISCORD_CALLBACK_URL回调指向/api/auth/discord/callback。Workspace 只申请identify权限保存稳定的 Discord 用户 ID 与昵称不保存访问令牌。 如果你有自建 Discord Bot还能通过DISCORD_BOT_API_KEY共享密钥调用 Bot 登录接口让用户从 Discord 直接进入工作区。细节见 apps/workspace/README.md。五、数据卷持久化与数据安全 卷里有什么镜像把/app/univer-workspace/.data声明为 VOLUME三类数据都落在这里univer-workspace.sqlite—— 产品数据库空间、节点、权限、Issue 等当前 V9univer-collaboration.sqlite—— 协作数据快照、修订、实时协作、评论、版本历史univer-workspace-blobs—— 上传文件与资源字节所以只要-v univer-workspace-data:/app/univer-workspace/.data这一行升级镜像、重建容器都不丢数据。三条安全铁律不要在宿主机直接打开 SQLite 文件。产品库运行在 WAL 模式宿主机用另一个 SQLite 版本打开——哪怕只是读——都可能损坏文件。检查数据请先docker stop容器或docker exec … node从容器内操作。升级只滚动单个实例。启动时会自动执行数据库备份与 V0–V8 → V9 迁移迁移前会独占锁并做完整性校验切勿让新旧进程并发写同一个库文件。重置是显式操作。启动/重启不会重建数据库仅在一次性实验环境里才使用官方重置命令docker run --rm \ -v univer-workspace-data:/app/univer-workspace/.data \ univer-workspace node dist/server/db/reset.js六、常见部署问题速查 现象处理登录页没有 Continue with GitHub检查 GitHub 三项变量是否同时传入回调 URL 是否与 GitHub App 完全一致登录后 Cookie 丢失HTTPS 环境确认SECURE_COOKIEStrue纯 HTTP 才用false非 localhost 域名打开白屏/许可报错重新docker build并传入--build-arg VITE_UNIVER_LICENSE容器启动失败想定位原因docker logs univer-workspace找最后一个没有completed/failed配对的workspace.startup阶段想彻底清空重来先停容器再执行第五节的 reset 命令最后删除数据卷延伸阅读应用完整指南认证、存储、迁移apps/workspace/README.md部署与运维架构apps/workspace/docs/architecture.md数据模型说明apps/workspace/docs/data-model.md可观测性Prometheus / Grafanaobservability/README.md按照本文操作你已经拥有一台带 GitHub/Discord 登录、数据卷持久化的生产级 Univer Workspace 服务。下一步可以给团队开几个 Space或接入 Workspace Agent 让 AI 参与文档协作与评审。【免费下载链接】univer-workspaceAn open-source Office workspace where people and AI agents create, collaborate, and review together.项目地址: https://gitcode.com/gh_mirrors/un/univer-workspace创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

03-Linux 内核与内核编程

03-Linux 内核与内核编程

3.1 Linux 内核的发展与演变版本时间标志性变化对驱动的意义1.01994单核、无模块化框架驱动必须编译进内核2.01996SMP 支持并发问题正式出现2.21999更完善的 VFS/网络栈驱动分层开始成形2.42001引入 kobject、sysfs 雏形设备模型起步2.62003统一设备模型、sysfs、kobject、plat…

2026/10/7 20:33:49 阅读更多 →
批量改写整个文件夹的AI草稿:humanizer批处理脚本完整教程(长文分段+数字核对报告)

批量改写整个文件夹的AI草稿:humanizer批处理脚本完整教程(长文分段+数字核对报告)

批量改写整个文件夹的AI草稿:humanizer批处理脚本完整教程(长文分段数字核对报告) 【免费下载链接】humanizer 项目地址: https://ai.gitcode.com/hf_mirrors/jialinyyzz/humanizer humanizer 是一个在本地运行的 12B 改写模型&#…

2026/10/8 22:42:30 阅读更多 →
java项目-第129期ssh的便利店运营管理系统-毕业设计ssh项目

java项目-第129期ssh的便利店运营管理系统-毕业设计ssh项目

java项目-第129期ssh的便利店运营管理系统-毕业设计ssh项目 今天分享的项目是《一款基于SSH架构的便利店运营管理系统》,基本思想是使用数据库存储便利店的大量数据以及使用前台后台来管理便利店。 系统主要实现的功能有: 销售管理:主要是实现…

2026/10/8 22:42:41 阅读更多 →

最新新闻

OpenAI API 中场战事:模型选型、批量任务与成本排查指南

OpenAI API 中场战事:模型选型、批量任务与成本排查指南

这次我们不看某个本地一键包,而是从一个技术人更容易感知的维度拆一个更大的题:OpenAI 的中场战事。GPT 迭代、推理模型、多模态、API 生态、批量任务和 Token 成本,这些东西正在决定 AI 应用落地的“下半场”怎么走。这篇文章不聊太多叙事层…

2026/10/9 2:35:39 阅读更多 →
Java对接阿里云身份证实名认证:接口选型、代码实现与工程化避坑指南

Java对接阿里云身份证实名认证:接口选型、代码实现与工程化避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:35:39 阅读更多 →
pi coding agent 实战:TUI + Agent Loop + LLM API 极简终端编程助手

pi coding agent 实战:TUI + Agent Loop + LLM API 极简终端编程助手

1. 从“pi”这个标题说起:一个极简命名背后的技术野心第一次看到“pi”这个项目标题,很多人会愣一下——是那个圆周率?还是树莓派?其实都不是。在当下 coding agent 工具链爆发的节点上,pi是一个把LLM API、agent loop…

2026/10/9 2:35:39 阅读更多 →
SQL格式化工具sql-formatter:多方言支持与工程化实践指南

SQL格式化工具sql-formatter:多方言支持与工程化实践指南

1. 为什么我们需要一个靠谱的SQL格式化工具写SQL的人大概都经历过这种场景:接手一个祖传项目,打开存储过程或者一段复杂查询,迎面而来的是全大写关键字混着小写字段名、缩进全靠空格和Tab随机排列、子查询嵌套得像迷宫一样的代码。你想改一个…

2026/10/9 2:35:38 阅读更多 →
扫地机器人DIY全栈指南:从改装到自研的六接口控制体系

扫地机器人DIY全栈指南:从改装到自研的六接口控制体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:35:38 阅读更多 →
SHA1算法的各种密码分析方法全面盘点

SHA1算法的各种密码分析方法全面盘点

SHA1算法的各种密码分析方法全面盘点SHA-1(安全散列算法1)是由NSA设计、NIST于1995年发布的160位密码杂凑函数。基于Merkle-Damgrd迭代结构,将任意长度消息分为512位块,通过压缩函数依次处理。理论上,SHA-1应具备160位…

2026/10/9 2:34:38 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →