# 一、Wiki是什么 Wiki,概念的发明人是沃德·坎宁安(Ward Cunningham,1949.5.26-),WikiWiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”(quick)的意思。 本文根据实际使用经验,讨论一种实用的分布式个人知识库(wiki)架构。 # 二、系统特点 完整的分布式个人知识库包括以下功能: - 使用文件系统管理文档,无需数据库。 - 使用Git分布式管理档案 - Markdown编辑 - 可以本地编辑与管理Markdown文档 - 可以在线编辑与管理Makedown文档 - ACL权限控制,内外网ACL权限独立管理。 # 三、架构 ![img](../../../ff_internal_upload/img/2020/image-搭建个人知识库.PNG) # 四、组件 以下组件可以根据需要选择: - 本地Markdown编辑器:Typora - 基于文件系统的在线Wiki系统:DokuWiki - 云服务器:Linux或者Windows系统 - Git Server:GitStack 下文分别说明各组件。 ## 4.1 本地Markdown编辑器 本地编辑Markdown的编辑器很多,本文推荐Typora。 Typora,完全免费,支持Windows、Linux、OS X主流操作系统,使用操作系统的目录层次结构管理Markdown文档。功能丰富,所见即所得编辑。支持多种格式文档导出、全文搜索等。 ![img](../../../ff_internal_upload/img/2020/image-20200729215020482.png) ## 4.2 在线Wiki系统 如果希望Wiki发布到网络上,则需要一个在线Wiki管理系统。 本方案推荐使用DokuWiki。相比较于WordPress,优点如下: - 轻巧,便于部署。 - 直接使用文件系统管理Markdown文档,无需数据库。 - 插件、主题足够使用。 Typora与DokuWiki很好地结合使用,使用同一套Markdown数据,前者负责本地Markdown编辑,后者负责前端在线服务(也可以在线编辑Markdown文档)。 ![img](../../../ff_internal_upload/img/2020/image-20200801215448121.png) ## 4.3 云服务器 如果需要把Wiki发布到互联网上,那么推荐使用云服务器,数据安全,且可以部署自己的应用,例如,部署上git server等,达到Wiki数据分布式管理目的。 ![img](../../../ff_internal_upload/img/2020/image-20200801222633005.png) ## 4.4 Git Server 如果云服务器选择Windows系统,那么git server建议使用GitStack。GitStack非常小巧,便于部署,提供Web管理界面。 ![img](../../../ff_internal_upload/img/2020/image-20200801215733414.png) # 五、关键问题 ## 5.1 Typora和DokuWiki融合 虽然两者可以直接结合使用,但是毕竟是两套独立系统,还需要做一些改造,以便更好地融合: - Typora默认文件后缀是.md,而DokuWiki默认是.txt,可以修改后者源代码,使后者默认支持.md文件扩展名。 - DokuWiki默认使用自己独特的Markdown格式,与标准Markdown格式有很大差异,可以通过安装Markdowku插件解决。 - 将Typora的默认文件夹设置成DokuWiki的数据目录,以达到Typora编辑DokuWiki文档的目的。 ## 5.2 权限控制 在特定网络环境下,例如外网,我们希望控制用户访问Wiki的权限。DokuWiki的ACL(访问控制列表),可以达到按用户设定Wiki访问权限的目的。 ## 5.3 分布式 为了解决Wiki数据分布式共享,建议使用git管理Wiki数据,在云服务器上部署Git Server,这样,我们可以随时随地,异地共享数据。 ## 5.4 内外网分离 在内网和外网分别部署DokuWiki,分别设置ACL权限,可以达到内外网独立管理目的,而Wiki数据来自同一个Git仓库。 # 六、组件下载官网 - [Typora](https://www.typora.io/) - [DokuWiki](https://www.dokuwiki.org/) - [GitStack](https://gitstack.com)