平替飞书和Notion?快速部署一个开源的在线文档协作工具Docmost
mhr18 2025-05-08 19:52 10 浏览 0 评论
本期为大伙带来一个开源协作wiki和文档项目:Docmost。官方称他是 Confluence 和 Notion 的替代方案,支持Docker一键部署。
Docmost设计重点是团队知识管理,提供类似于 Confluence 的文档协作功能和 Notion 的简洁布局,适用于知识库、项目文档、团队共享文档等场景。
有飞书和Notion使用经验的朋友应该能够很快上手。
核心功能
实时协作编辑:多个用户可以同时编辑,支持富文本、图表(例如 Mermaid、Draw.io 和 Excalidraw)、表格和数学公式等。
权限系统和分区管理:通过分配权限和空间(Spaces)来管理不同团队和项目的访问权限,确保信息的安全性和分区的可管理性。
评论和历史记录:支持页面内嵌评论以及页面的历史版本查看与恢复,便于团队间的讨论和文档的追溯。
搜索功能:基于 PostgreSQL 的全文检索系统,能够快速查找页面内容。
附件支持:可直接在页面中粘贴图片或视频,支持 S3 和本地存储。
Docmost 的特点在于可自托管、免费使用,并且灵活适用于各类团队和个人用户,有助于提升文档协作效率。项目地址见下图。
部署流程
本文通过Docker Compose部署,所有平台基本通用。演示设备:威联通TS-673A。
准备文件目录
打开文件总管,在Docker常用路径下创建名为docmost的文件夹,并在其下再创建一个db_data和redis_data文件夹,大家可以抄作业也可自行设置。如下图所示。
创建应用程序
打开Docker管理工具,创建新的应用程序。代码如下:
version: '3' # 最新版本docker compose这行可删除
services:
docmost:
image: docmost/docmost:latest
depends_on:
- db
- redis
environment:
APP_URL: 'http://localhost:3000' # 访问地址,反代则要替换成反代后的域名,提前填写就行,不耽误后面操作
APP_SECRET: 'REPLACE_WITH_LONG_SECRET' # 密码自行设置
DATABASE_URL: 'postgresql://docmost:STRONG_DB_PASSWORD@db:5432/docmost?schema=public' # DB_PASSWORD可自行设置,但要与下面db项目密码一致
REDIS_URL: 'redis://redis:6379'
ports:
- "3000:3000"
restart: unless-stopped
volumes:
- /share/Container/docmost:/app/data/storage
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: STRONG_DB_PASSWORD # 与上面一致
restart: unless-stopped
volumes:
- /share/Container/docmost/db_data:/var/lib/postgresql/data
redis:
image: redis:7.2-alpine
restart: unless-stopped
volumes:
- /share/Container/docmost/redis_data:/data
注意重点:APP_URL访问地址填写正确、STRONG_DB_PASSWORD数据库密码上下一致以及文件映射目录。
若想外网访问,APP_URL中填写的是你准备在外网访问该项目的完整地址!非标准端口的话,端口号也要填!!
检查无误,则创建项目。我第一遍没创建成功,看日志发现是因为APP_SECRET: 'REPLACE_WITH_LONG_SECRET'引号中的密码没设置,所以大家别偷懒哈~
如果团队使用,请在环境变量中新增邮件服务器配置,这是必须的,邀请新成员要用到它。
# 以QQ邮箱为例,更多其他配置具体见官方手册
MAIL_DRIVER: smtp
SMTP_HOST: smtp.qq.com
SMTP_PORT: 465 # 或 587,具体取决于是否使用 SSL/TLS
SMTP_USERNAME: <您的QQ邮箱地址>
SMTP_PASSWORD: <您的授权码>
SMTP_SECURE: ssl # 或 tls,取决于端口
MAIL_FROM_ADDRESS: <您的QQ邮箱地址>
MAIL_FROM_NAME: <发件人名称>
反向代理
要想实现随时随地安全地对服务器设备等进行管理,就需要添加反向代理。因为部署于NAS,依然是通过Lucky来实现。关于Lucky的部署和使用,请见往期文章。反代神器,懒人利器!Docker网络工具Lucky部署使用流程记录
这里放一张截图配置供大家参考。服务类型选择反向代理,前端地址为自定义二级域名,后端地址为内网服务的完整访问地址。填写完毕后点击修改规则服务即可。
使用介绍
输入APP_URL中填写的访问地址,进入项目,创建账户和工作空间。
点击右上角,进入设置界面。
在设置中可以进行账户设置,创建不同的工作组以及成立各种团队(人员权限),并且可以邀请人员以及进行单独的权限设置。
我大概折腾了一下,效果如下。
在不同的类型下,若要创建子集,选中并拖动项目即可,之后在其下新建就行。
支持查看历史修改记录,可导出文档为Markdown或HTML,支持直接PDF打印。
可以版本回溯。
支持功能很多也挺全面。
相关推荐
- B站收藏视频失效?mybili 收藏夹备份神器完整部署指南
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙很多B站用户都有过类似经历:自己精心收藏的视频突然“消失”,点开一看不是“已被删除”,就是“因UP主设置不可见”。而B站并不会主动通知...
- 中间件推荐初始化配置
-
Redis推荐初始化配置bind0.0.0.0protected-modeyesport6379tcp-backlog511timeout300tcp-keepalive300...
- Redis中缓存穿透问题与解决方法
-
缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...
- 后端开发必看!Redis 哨兵机制如何保障系统高可用?
-
你是否曾在项目中遇到过Redis主服务器突然宕机,导致整个业务系统出现数据读取异常、响应延迟甚至服务中断的情况?面对这样的突发状况,作为互联网大厂的后端开发人员,如何快速恢复服务、保障系统的高可用...
- Redis合集-大Key处理建议
-
以下是Redis大Key问题的全流程解决方案,涵盖检测、处理、优化及预防策略,结合代码示例和最佳实践:一、大Key的定义与风险1.大Key判定标准数据类型大Key阈值风险场景S...
- 深入解析跳跃表:Redis里的"老六"数据结构,专治各种不服
-
大家好,我是你们的码农段子手,今天要给大家讲一个Redis世界里最会"跳科目三"的数据结构——跳跃表(SkipList)。这货表面上是个青铜,实际上是个王者,连红黑树见了都要喊声大哥。...
- Redis 中 AOF 持久化技术原理全解析,看完你就懂了!
-
你在使用Redis的过程中,有没有担心过数据丢失的问题?尤其是在服务器突然宕机、意外断电等情况发生时,那些还没来得及持久化的数据,是不是让你夜不能寐?别担心,Redis的AOF持久化技术就是...
- Redis合集-必备的几款运维工具
-
Redis在应用Redis时,经常会面临的运维工作,包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。接下来,从这三个方面,介绍一些工具。先来学习下监控Redis实时...
- 别再纠结线程池大小 + 线程数量了,没有固定公式的!
-
我们在百度上能很轻易地搜索到以下线程池设置大小的理论:在一台服务器上我们按照以下设置CPU密集型的程序-核心数+1I/O密集型的程序-核心数*2你不会真的按照这个理论来设置线程池的...
- 网络编程—IO多路复用详解
-
假如你想了解IO多路复用,那本文或许可以帮助你本文的最大目的就是想要把select、epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别。基础知识IO多路复用涉及...
- 5分钟学会C/C++多线程编程进程和线程
-
前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...
- 尽情阅读,技术进阶,详解mmap的原理
-
1.一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程...
- C++11多线程知识点总结
-
一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多...
- 微服务高可用的2个关键技巧,你一定用得上
-
概述上一篇文章讲了一个朋友公司使用SpringCloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但如果对一些东西理解的不深刻,还真会犯一些错误。这篇文章我们来聊聊在微服务架构中,到底如...
- Java线程间如何共享与传递数据
-
1、背景在日常SpringBoot应用或者Java应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)