不知道有没有人和我一样,觉得自建的东西是互联网上的“自留地”、私人空间,有一种自己的一亩三分地随心所欲的痛快。

比如自建的博客想写什么随笔就写什么,不用取悦读者可以自娱自乐;再比如自建的 wiki 有不会的知识点就可以直接记录,不用担心被嘲笑低级。抛开共建这块不聊,Wiki 不同于博客的随性,记录的内容更注重知识点和分类,可以用来构建自己的知识网络。

如果把博客比作“日记本”,那 wiki 就是“笔记本”它用来记录知识点,方便用时查阅和更新,有清晰的目录而且一个知识点还可以关联到其它知识点,逐步拓展成“百科全书”。

一、介绍

知识在于积累,还不能忘记梳理。

今天,我们要介绍的开源项目是专门用来构建 wiki 平台,助你梳理知识点的 wiki.js

地址:https://github.com/requarks/wiki

它是一款轻量级、功能强大的 wiki 开源项目,拥有评论、Markdown 编辑器、图片上传、标签、全局搜索、协同编辑、编辑历史、用户管理、谷歌分析等功能,而且支持高度自定义。

用到的技术栈也不同于老旧的 wiki 系统,它采用了 Node.js、PostgreSQL、Vue.js、Docker 等技术。基于 Docker 实现的一键部署,颇有 WordPress 之风,不要太爽!

重点是支持中文,而且界面简洁还不失美感,这点足以让它在众多同类项目中脱颖而出。

看到这儿,你是不是手痒了呢?下面就和我一起来让它跑起来吧!

二、安装

开源项目成功的必要因素之一就是有详细易懂的文档,而安装说明又是重中之重。

Wiki.js 官方文档提供了多种部署方法,包括:Linux、macOS、Windows、Docker、k8s 等,涵盖了几乎所有可能性,十分全面。

下面我就介绍其中最快捷和通用的一种,即基于 Docker 的 Docker Compose 部署。

Tips:如果你不懂 Docker 建议跟着这里逐步执行

下面我将主要介绍 Linux 下的安装步骤,其它系统有桌面版不再赘述。

如果你机器上有 Docker 仅需两步即可完成安装。

第一步,安装 docker-compose:

1、下载

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、加执行权限

$ sudo chmod +x /usr/local/bin/docker-compose

3、创建快捷方式

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

至此,你就可以在任何地方使用 docker-compose 命令了。

第二步,运行 docker-compose:

1、创建配置文件 docker-compose.yml 内容如下:

整个项目分为 数据库项目代码 两部分,与之对应的是 pg 容器wiki 容器

version: "3"
services: db:
container_name: pg
image: postgres:11-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: "none"
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data wiki:
container_name: wiki
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "8001:3000" volumes:
db-data:

2、在配置所在的目录下,执行命令:

  • 运行:docker-compose up -d
  • 查看容器:docker ps
  • 停止:docker-compose down

最后,如果你想开启 HTTPS 的话,我这里推荐用 Caddy 服务器。没用过没关系,我们写过介绍使用 Caddy 的文章特别简单。

Caddyfile 的配置内容如下:

8001 端口对应的是上面 wiki 容器的 ports 端口映射

域名 {
reverse_proxy 127.0.0.1:8001
}

执行 caddy start 启动 Caddy 服务器,浏览器中访问对应的域名,网站初始化的引导界面,就会出现在你的面前了。

至此,以上就是 wiki.js 安装的全过程,你跑起来了吗?

三、瑕不掩瑜

Wiki.js 并不是十全十美的,虽然我只是刚上手,但还是发现了一些美中不足:

  • 第一次访问加载速度较慢

  • 虽然 wiki.js 更新积极、提交频繁,但目前它还不支持自定义主题

  • 对中文搜索不友好,默认不支持中文搜索,需要采用 ES 但这样就不再轻量,或者采用 pg 插件让 pg 支持中文分词

  • 中文翻译覆盖率并不像官网展示的 100%,管理后台里还是有未翻译的地方

但是瑕不掩瑜,它基本上实现了我对 wiki 想要的所有功能。而且总好过自己从头实现一个 wiki 系统吧,后面我会用 wiki.js 做一个新的网站:

https://cheatsheet.store/

等我玩顺手了搞通上面的问题就去给它提 PR 做贡献,期待更强大的 wiki.js!

四、最后

知识需要融会贯通。

知识本是杂乱无章的,需要通过实践经验,让它们建立联系,变得井然有序,才会得心应手,释放出强大的创造力。

最后,用 wiki.js 构建你的知识网络,梳理已有的知识不断推陈出新,让它在你寻求更高突破的路上,助你一臂之力!

更多讲解开源项目的文章尽在:https://github.com/HelloGitHub-Team/Article

支持中文!秒建 wiki 知识库的开源项目,构建私人知识网络的更多相关文章

  1. 我发起了一个 支持 PostgreSql 的 外围设施 的 .Net 开源项目

    目标 :  让 PostgreSql 成为 通用的 跨平台 的 数据库 , 成为 开发者 喜爱 的 利器 . 要做的事 , 当然 , PostgreSql 本身现在不用我们去做什么 . 一个 数据库 ...

  2. Android开源项目发现--- 工具类网络相关篇(持续更新)

    1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...

  3. 转:Android开源项目推荐之「网络请求哪家强」 Android开源项目推荐之「网络请求哪家强」

    转载自https://zhuanlan.zhihu.com/p/21879931 1. 原则 本篇说的网络请求专指 http 请求,在选择一个框架之前,我个人有个习惯,就是我喜欢选择专注的库,其实在软 ...

  4. 开源项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字相似度/markdown 目录

    前言 以前在 github 上自己开源了一些项目.碍于技术与精力,大部分项目都是 java 实现的. 这对于非 java 开发者而言很不友好,对于不会编程的用户更加不友好. 为了让更多的人可以使用到这 ...

  5. Android开源项目分类汇总-转载

    太长了,还是转载吧...今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参 ...

  6. 【转】10款GitHub上最火爆的国产开源项目

    将开源做到极致,提高效率方便更多用户 接触开源时间虽然比较短但是后续会努力为开源社区贡献自己微薄的力量 衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitH ...

  7. 点评10款Github上最火爆的国产开源项目

    衡量一个开源产品好不好,看看产品在Github的Star数量就知道了.由此可见,Github已经沦落为开源产品的“大众点评”了. 一个开源产品希望快速的被开发者知道.快速的获取反馈,放到Github上 ...

  8. 10款GitHub上最火爆的国产开源项目

    衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 Gi ...

  9. 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集

    Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提升应用性能,同时降低开发难度. Swift仍然处于beta测试的阶段,会在iOS 8发布 ...

随机推荐

  1. 5月7日 python学习总结 MySQL数据库(一)

    一.数据库介绍 1.数据库相关概念 数据库服务器(本质就是一台计算机,该计算机之上安装有数据库管理软件的服务端) 数据库管理系统RDBMS(本质就是一个C/S机构的套接字软件) 库(文件夹)===&g ...

  2. docker学习笔记(4)- 应用数据管理(容器外)

    简介 docker storage driver支持了image分层存储和容器可写层的存储管理,使用挂载主机目录的方式可以将数据存储在主机的文件系统上或内存中. 之前学习过镜像的分层存储,以Docke ...

  3. C# WinForm 解决子窗体放大后,子窗体图标放大的问题

    解决子窗体放大后,子窗体的图标占用主窗体的菜单栏的问题. C#子窗体最大化时, 那个图标跑到主窗体的前面去了, 造成界面不统一也不美观. 所以需要进行处理, 只要有主窗体的菜单ItemAdded事件中 ...

  4. CF736D Permutations(伴随矩阵)

    CF736D Permutations(伴随矩阵) Luogu 题解时间 首先把边直接放进邻接矩阵, 很明显行列式的奇偶和方案数的奇偶一样. 设 $ A_{ i , j } $ 为矩阵的该行列的余子式 ...

  5. synchronized已经不在臃肿了,放下对他的成见之初识轻量级锁

    前言 物竞天择,适者生存.JDK也在不断的优化中.关于JDK中synchronized锁内部也是不断的优化,前面我们分析了偏向锁用来解决初期问题,随着争抢的不断堆积轻量级锁营运而生. 关注我,一个不断 ...

  6. 羽夏逆向指引—— Hook

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的, ...

  7. Spring Boot 多模块项目创建与配置 (转)

    转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...

  8. 在 Spring AOP 中,关注点和横切关注的区别是什么?

    关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的 一个功能. 横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应 用,比如日志,安全和数据传输,几乎应用的每个 ...

  9. Linux 基础优化

    1.操作的最小化原则 1)安装系统最小化 一般情况下安装OS时,软件安装包组(Package Group)的选择: base--------------------------基本环境 editors ...

  10. ACM - 图论 - P3385 负环

    P3385 负环 题目描述 给定一个 \(n\) 个点的有向图,请求出图中是否存在从顶点 \(1\) 出发能到达的负环. 负环的定义是:一条边权之和为负数的回路. 输入格式 本题单测试点有多组测试数据 ...