Photo by Mariia Zakatiura on Unsplash

Photo by Mariia Zakatiura on Unsplash

Five free wiki platforms reviewed

Private Library

Article from ADMIN 69/2022
By
If you want to operate a wiki in your data center as a document and knowledge database for workgroups, you will find a large selection of open source applications. We tested five free wiki platforms for different use cases on the local network.

Wikipedia is famous not just as a large encyclopedia; the web software also helps users collaborate on online documents. Wiki markup (or wikicode or wikitext) lets you format documents with very simple methods and without the need to use special WYSIWYG editors or complex page description languages, as in HTML, XML, and LaTeX (for technical and scientific documents). Therefore, wikis are often used on local networks for documentation and internal document collections for code repositories, project management tools, and IT service management tools.

The requirements for a wiki server are fairly meager. In most cases, you just need a web server and a database server. Some systems can even manage without a database. The learning curve for users is also low because the Markdown syntax for text can be learned in next to no time. Additionally, modern wikis increasingly include optional online WYSIWYG editors that make it even easier to get started.

In this article, I look at five free wiki platforms and discuss the advantages of the different platforms. Check out the "Test Setups with Podman and Ansible" box to see how I roll out the wiki applications and databases.

Test Setups with Podman and Ansible

For this article, I roll out the wiki applications and databases as containers with Ansible playbooks on a Podman host. To prevent multiple parallel installations fighting for the web or MySQL port on a single IP address on the container host, I set up the containers with their own IP addresses. To do this, I first need to define the host_local bridged network of the macvlan type on the Podman host, which means the containers do not have to run on the IP address of the host but can use their own IP addresses. Next, I create matching containers in Ansible, as this excerpt from a playbook shows:

...
- name: wiki.js
   containers.podman.podman_container:
      name: wikijs
      image: docker.io/requarks/wiki:2
      state: started
      network:
      - host_local
      ip: "192.168.2.188"
      dns: "192.168.2.2"
      expose:
      - "3000"
      env:
....

DokuWiki

DokuWiki [1] is one of the most popular wiki servers around, especially for smaller installations. The PHP program does not need a separate database server; in fact, it only needs a Linux installation with an Apache or NGINX server. DokuWiki stores all pages in separate TXT files in the original format, which makes it easy to back up the complete wiki and version it with a repository management tool like Git. DokuWiki has a number of plugins that enhance both functionality and appearance.

After the initial installation, DokuWiki lets all users create and edit documents, but the tool does have granular user and group management. As the admin, you use access control lists to define which users and groups are authorized for specific areas of the wiki. Often, unauthenticated users are only allowed to read the wiki's content, whereas registered users and groups can edit within their respective subdirectories. Special pages like start or sidebar support navigation within the wiki. Users create link and menu pages in the wiki language, too. In addition to internal user management, DokuWiki can connect to authentication services such as Active Directory (AD), Lightweight Directory Access Protocol (LDAP), and others.

The built-in media manager takes care of additional binary files (e.g., images, movies, PDFs) that can be linked into the wiki pages. DokuWiki's initial look is very functional, but a bit outdated. Fortunately, you can freshen up the look with themes. That said, the selection is limited and cannot keep pace with the theme collection of a blog system like WordPress. Plugin and theme management is well programmed. As the administrator, you can search for extensions directly in the administration menu and install them right away.

Ready Fast

The wiki is simple and ready to use in a few minutes. Anyone looking to come to grips with the topic of wiki servers, but with no previous experience, would do well to start with a DokuWiki installation (Figure 1). As the administrator, you write the complete wiki structure and menu navigation, just like documents, in the Markdown "WikiCloth" syntax, which is also used by MediaWiki (Wikipedia). Simple themes like Bootstrap3 spice up the look of the wiki but keep the functionality aspect in the foreground. Managing and saving the content is very easy, because DokuWiki does not require a database.

Figure 1: DokuWiki uses the same Markdown language as Wikipedia. Authors can work in a simple text editor. Plugins can also be used to retrofit a WYSIWYG editor for Markdown.

One downside for beginners, however, is that DokuWiki only uses WikiCloth and does not offer a WYSIWYG editor. If you frequently work with GitHub and would like to stay with the Markdown used there, DokuWiki has a number of Markdown plugins that support Markdown in addition to WikiCloth. The stackedit plugin, in combination with mdpage , adds a very useful WYSIWYG Markdown editor to the DokuWiki system.

Wiki.js

The JavaScript Wiki.js [2] application was released at the end of 2016 and has grown by leaps and bounds in recent years. Wiki.js combines original wiki functionality with an appealing, modern user interface (UI) and an integrated WYSIWYG editor for documents, making it far easier for users without Markdown experience to get started. If you are familiar with Markdown, you will be pleased to know that Wiki.js does not use its own dialect; instead, it relies on the standard used by GitHub.

Wiki.js also offers a flexible plugin system for expanding the feature set. Features include renderers (i.e., alternative page description languages). If you want to use technical and scientific documents in Wiki.js, you will be happy to find a LaTeX renderer. Modules also ensure that user authentication with back-end services such as Google, LDAP, or similar is supported.

The basic installation is not as simple as with DokuWiki. Wiki.js needs a PostgreSQL database, although the current version also supports back ends such as Microsoft SQL, MariaDB, or even plain vanilla SQLite. Support for these databases is on the scratch list, though, so future versions will only work with PostgreSQL [3]. In the test setup, you just need two containers: one for the wiki app and one for the PostgreSQL database. The wiki container does without a pass-through directory for storing data on the host disk. All information is stored in the database without a separate document directory.

The application comes with support for a number of file back ends like Amazon Web Services Simple Storage Service (AWS S3), Secure File Transfer Protocol (SFTP), or Git, although they do not serve the live application, but provide backup storage. When running, Wiki.js has a familiar-looking state-of-the-art web interface, although some processes are more complicated than with the simple DokuWiki. Generally speaking, many functions on the admin back end of Wiki.js still wear a "Coming Soon" tag (Figure 2). The driving company behind Wiki.js, requarks.io, has announced the new version 3 for 2022, which should see a number of improvements and changes [4].

Figure 2: Wiki.js comes with a modern interface and many plugins. However, more than half of the displayed functions are due to follow in future releases.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.

Learn More”>
	</a>

<hr>		    
			</div>
		    		</div>

		<div class=