Crowi - a great Wiki platform for Groups

introduction

crowi is a simple wiki web platform built on Node.js and markdown syntax.

Articles, notes, and other knowledge are organized by tree structure which is similar to file hierarchy in (*nix) operating systems. For example, /user/ directory contains all the users default directories, while /user/tom/ contains all the notes from user named tom.

Permissions for the whole site and users are controlled by the administrator. The site access type is selected among:

  • Public readable;
  • Private site with public registration;
  • Private site with registration under the approval of administrator;
  • Invites only private site.

For our usage as knowledge base for a research group, the later two types should be more appropriate.

Markdown files and user information are stored in host server's mongo database. However, this platform also allow user upload attachments, such as images and pdf documents. The method is simple: just grab a file and drop into the editor in your browser. Uploaded attachments are not saved in database, but in the server's local folder or AWS's S3 service. Thus, please do NOT upload large files or rely this system for backups.

There are more highlights like comments and private pages for you to discover!

(Please feel free to edit and fulfill this introduction)

Existing bugs

Crowi-plus is a new project currently under heavy development, which means some functions are not quite stable. Here is a list of known issues for this version: (add if you find some more)

  • User can modify permission of articles from others;
  • lsx plugin not working in Portal page;
  • no easy backup or export method, which is quite important for a wiki system (though one can get them from database);

Installation

Here are some instructions on how to install your own crowi service:

Dependencies

  • A linux server is preferred
  • Node.js (Version 6.x is required, one can use nvm to manage various versiosn)
  • npm (version 4.x, in fact version 5.3.0 also works)
  • yarn (for node packages installation)
  • Mongodb (version 3.x)

(optional) + Redis (also a database) + ElasticSearch (for search function, may cost lots of memory)

Building

git clone https://github.com/weseek/crowi-plus.git  
cd crowi-plus  
yarn  

Running with some environment settings

ENV0=val0 ENV1=val1 ENV2=val2 npm start  

available ENV options (see this document for details):

PASSWORD_SEED="some random string"  
MONGO_URI="mongodb://localhost/crowi"  
REDIS_URL="localhost"  
ELASTICSEARCH_URI="http://127.0.0.1:9200/crowi_search"  
FILE_UPLOAD="local"  
PORT=3000  
SECRET_TOKEN="some secret string"  
MATHJAX=1  
NODE_ENV=production  

run it in background with pm2:

pm2 start npm --name "crowi" -- start