知识库列表:

  • dokuwiwki
  • mediawiki
  • wikijs
  • tiddlywiki
  • xwiki

dokuwiki

5d3273b09b14ed1fd37781e079d7f28c.png
优点:可以在线多人编辑,轻量,帮助文档详细,有详细的wiki语法介绍,插件多,模板也多。

dokuwiki的缺点在于不能批量导入导出笔记,比如你手上有很多个md笔记,想批量导入dokuwiki,那是不行的,只能手动一个一个新建,如果你会php的话,可能可以自己写一下批量导入的插件。

就算你是完全手动写的,想批量导出也是不行的,你备份,得把除了你笔记源代码的文件备份之外,各种配置数据文件都要一起备份,而且如果你切换主题,一旦崩溃,那你只能重开。你新增的笔记也要一条一条的重新编写。。。

version: '3'
services:
  dokuwiki:
    container_name: dokuwiki
    image: bitnami/dokuwiki:latest
    ports:
      - 8080:8080
    environment:
      - PUID=1000
      - PGID=1000
      # - ALLOW_EMPTY_PASSWORD=yes
      - DOKUWIKI_USERNAME=admin
      - DOKUWIKI_FULL_NAME=admin
      - DOKUWIKI_PASSWORD=admin
      - DOKUWIKI_EMAIL=admin@test.com
      - DOKUWIKI_WIKI_NAME=我的知识库
      - PHP_DEFAULT_MEMORY_LIMIT=256M

    volumes:
      - ./data:/bitnami/dokuwiki 

mediawiki

736be84710a3d1a667ca272ce999c111.png

这个,对于个人来说,可能有点复杂,用sqlite作为数据库的话,在最初数据量不是很多的时候,占用资源不算太多。数据量一多、或者换成mysql等数据库,就可能需要更多的硬件资源了。

version: "3"

services:
  mediawiki:
    restart: always
    image: mediawiki
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:mediawiki.lab.io"
      - "traefik.frontend.passHostHeader=true"
      - "traefik.frontend.entryPoints=http,https"
    # ports:
    #   - 7880:80
    volumes:
      # 默认上传位置
      - ./uploads/images:/var/www/html/images
      # 默认 SQLite 储存位置
      - ./data:/var/www/data
               #  向导安装完成之后,把LocalSettings.php复制到当前文件夹之后吧,取消下面一行的注释,重新启动容器
      # - ./LocalSettings.php:/var/www/html/LocalSettings.php
    networks:
      default: 
        ipv4_address: 172.32.0.9
networks:
  default:
    external: true
    name: web_net

运行之后,访问http://ip:7880;进向导安装,

安装的时候,为了方便体验,直接选择sqlite

db1875da0a86f55c5795ab62d176281b.png

安装出现无法创建,说明对目录没有访问权限,

ae331c0727f017bda46472b40ed6cf95.png

赋予data、uploads文件夹权限

chmod -R 777 data uploads

然后重新点击继续,安装完之后会让你下载一个LocalSettings.php文件,把这个文件复制到docker-compose.yml文件所在的当前文件夹,停止容器,重新创建就行。修改一下docker-compose.yml文件,取消注释

 - ./LocalSettings.php:/var/www/html/LocalSettings.php

cd533fcf6daaa4a7fd1bf3885261235b.png

wikijs

7da5f03c8e33852b0e86e8a6a22814c7.png
不习惯这个wiki的各种页面,可能是外国人开发的原因,对于我来了说比较反人类。当然,可能是因为不熟悉的缘故,只是创建页面的时候,就让我觉得很难受,创建一个页面需要点击的次数太多了,每新建一个新页面,都需要重新让我选编辑器,填写各种页面属性。

其实我只是想新建,然后能直接填个标题和内容就行了。个人习惯问题,用不惯。不过这个自带评论系统,还是挺不错的,在团队一起协作的时候,可以用评论的方式讨论某个页面内容

---
services:
  wikijs:
    image: lscr.io/linuxserver/wikijs:latest
    container_name: wikijs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - DB_TYPE=sqlite #optional
      - DB_HOST= #optional
      - DB_PORT= #optional
      - DB_NAME= #optional
      - DB_USER= #optional
      - DB_PASS= #optional
    volumes:
      - ./config:/config
      - ./data:/data
    ports:
      - 3000:3000
    restart: unless-stopped

xwiki

资源没有个4核8G内存,慎用,这个占用资源很多,docker启动的时候没有限制资源的使用,我2核2G的服务器直接给我干崩溃,


version: '2'
networks:
  bridge:
    driver: bridge
services:
  # The container that runs XWiki + Tomcat
  web:
    image: "xwiki:lts-postgres-tomcat"
    container_name: xwiki-postgres-tomcat-web
    depends_on:
      - db
    ports:
      - "8080:8080"
    # Default values defined in .env file.
    # The DB_USER/DB_PASSWORD/DB_DATABASE/DB_HOST variables are used in the hibernate.cfg.xml file.
    environment:
      - XWIKI_VERSION=xwiki
      - DB_USER=xwiki
      - DB_PASSWORD=xwiki
      - DB_DATABASE=xwiki
      - DB_HOST=xwiki-postgres-db
    # Provide a name instead of an auto-generated id for xwiki data (the permanent directory in included in it)
    # configured in the Dockerfile, to make it simpler to identify in 'docker volume ls'.
    volumes:
      - xwiki-data:/usr/local/xwiki
    networks:
      - bridge
  # The container that runs the database (postgres)
  db:
    image: "postgres:13"
    container_name: xwiki-postgres-db
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_ROOT_PASSWORD=xwiki
      - POSTGRES_PASSWORD=xwiki
      - POSTGRES_USER=xwiki
      - POSTGRES_DB=xwiki
      - POSTGRES_INITDB_ARGS="--encoding=UTF8"
    networks:
      - bridge
volumes:
  postgres-data: {}
  xwiki-data: {}

tiddlywiki

375509a23a511de187ab41fde88fa497.png

这个对于个人来说还是很实用的,轻量,比上面的简单很多,支持批量导入md文件,导出的话,还是没法批量导出。

对于服务器版本的tiddlywiki,每个条目对应一个tid文件,所有文件都是放在一个目录下,没有父子目录的层级结构。比单文件版本的好的地方在于图片可以直接嵌入到wiki里面,单文件版本对于图片的管理比较麻烦,直接嵌入很容易导致wiki变卡顿。

但是没有账号角色的管理,只有一个数据文件,多人以前协作的话支持不太好。

version: '3'

services:
  tiddlywiki:
      image: nicolaw/tiddlywiki
      container_name: tiddlywiki
      restart: always
      environment:
        - TW_USERNAME=admin
        - TW_PASSWORD=admin
      ports:
        - 8081:8080
      volumes:
        - ./tiddlywiki:/var/lib/tiddlywiki