Dokuwiki is the wiki engine I am using. It seemed the nicer, more complete and easier to use to me.

Le faire fonctionner sur les pages persos de

Il y a quelques problèmes pour le faire fonctionner chez Free, mais quelqu'un a créé un patch qui résout tous les problèmes :

Cependant dokuwiki est dorénavant banni chez Free. Si vous êtes détecté, votre compte sera suspendu pour le motif :

Les interfaces utilisant des fichiers locaux comme base de données/log sont interdites.

Install with Nginx

userewrite = 2 (dokuwiki is rewriting) did not work with nginx, so I wanted to switch to mode 1 where the web server manages rewriting.

There are suggestions of configuration here and here but they all seemed to assume that the wiki was at the root of the server, and the “@dokuwiki” syntax did not work in my case, when I want to access the wiki with domain.tld/wiki.

Therefore I use this configuration, that in addition permanently redirects the old rewrite mode 2 to mode 1:

                # always needed
                location ~ /wiki/(data|conf|bin|inc) {
                        deny all;
                # needed to support old rewrite
                location ~ /wiki/doku.php/ {
                        rewrite ^/wiki/doku.php/(.*) /wiki/$1 permanent;

                # needed for new rewrite
                location ~ /wiki/lib/ {}
                location ~ /wiki/ {
                        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
                        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
                        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
                        rewrite ^/wiki/(.*) /wiki/doku.php?id=$1 last;

With version 2020-07-29 Hogfather the rewritemode 2 was working, but then it was impossible to log in anymore…

The sidebar

One bottleneck of Dokuwiki in the standard version is navigation.

There is a template Sidebar which replaces the default template, which adds this sidebar with the index you can see at your left :

You just have to copy the content of the archive in Dokuwiki/lib/tpl, and either use the admin page to modify the template, or change in local.php :

$conf['template'] = 'sidebar-rc2006-09-28'; // the name of your template folder

You can change some options in sidebar/conf/tplfn_sidebar.php.

In version 2020-07-29 Hogfather the default template has a sidebar, by creating the “:sidebar” page.

Disabling some automatic conversions

In particular if you use to write C/C++ code, you can find annoying that Dokuwiki replaced << and >> by &laquo; and &raquo;.

You can do that by commenting out the lines in conf/entities.conf.


A list of all plugins is available here

Those I use are:


It wasn't finding the local files without giving the full path. So I've added several cases where if it fails to find the file, it tries to find it relatively to the website root and relatively to the dokuwiki media path.

  $source = @file($this->location.$file);
+ if (empty($source)) $source = @file($_SERVER['DOCUMENT_ROOT']."/".$this->location.$file);
+ if (empty($source)) $source = @file(DOKU_INC."data/media/".$this->location.$file);
  if (empty($source)) return '';


I modified it so that it displays directories/namespaces too, and displays recursively all pages.

- if ($type == 'd') return false;
+ if ($type == 'd')
+ {
+ 	$id = pathID($file);
+ 	if($opts['ns'].":$id" <> $ID) 
+ 	{
+ 		$data[] = array( 
+ 			'id'    => $opts['ns'].":$id",
+ 			'type'  => $type,
+ 			'level' => $lvl );
+ 	}
+ 	return true;
+ }

Show start on directory

To show the start page when clicking on a directory/namespace in the sidebar/index, and to hide the start page in the list of pages.

- addEvent(elem,'click',function(e){ return index.toggle(e,this); });
+ //addEvent(elem,'click',function(e){ return index.toggle(e,this); });
  $base = substr($base,strrpos($base,':')+1);
+ if ($base == "start" && $item['id'] != "start") return $ret;
- $ret .= '<a href="'.wl($item['id'], "").':start" class="idx_dir"><strong>';
+ $ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" class="idx_dir"><strong>';
  function html_li_index($item){
+ $base = ':'.$item['id'];
+ $base = substr($base,strrpos($base,':')+1);
+ if ($base == "start" && $item['id'] != "start") return;

Allow more file types for upload

In conf/mime.conf, add:

html    text/html
htm     text/html
txt     text/plain
conf    text/plain
xml     text/xml
bas     text/bas
pas     text/pas
c     text/c
cpp     text/cpp
cxx     text/cxx
h     text/h
hpp     text/hpp
hxx     text/hxx
software/dokuwiki.txt · Last modified: 2022/04/08 07:34 by cyril
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0