DokuWiki is a simple wiki software, similar to MediaWiki. Unlike MediaWiki, it uses plain text files to store its content, not databases, making it simpler to configure than MediaWiki. It’s a good choice if you want a simple wiki engine without all the bells and whistles of MediaWiki and the additional step of setting up databases.
Installation
Although DokuWiki is available on the main debian repos, it is outdated and has a different directory structure, which may lead to problems with plugins and make it harder to follow the official documentation, so we’re gonna install it from a tarball.
First, install the dependencies.
apt install nginx php php-fpm php-xml php-mbstring php-zip php-intl php-gd
Now, get the tarball.
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
tar xzvf dokuwiki-stable.tgz
mv dokuwiki-*a /var/www/dokuwiki
chown -R www-data:www-data /var/www/dokuwiki
Nginx Configuration
Create a file named /etc/nginx/sites-available/dokuwiki
using your favorite text editor and add the following lines, based on the configuration here. Remember to change wiki.example.org
to your website’s name. Also, pay attention to the lines containing client_max_body_size
, which determines the maximum file size allowed for uploads, and the first location
line, because it needs to be commented during the installation and uncommented when it’s done.
server {
listen 80;
listen [::]:80;
server_name wiki.example.org;
# Maximum file upload size is 4MB - change accordingly if needed
client_max_body_size 4M;
client_body_buffer_size 128k;
root /var/www/dokuwiki;
index doku.php;
#Remember to comment the below out when you're installing, and uncomment it when done.
#location ~ /(conf/|bin/|inc/|vendor/|install.php) { deny all; }
#Support for X-Accel-Redirect
location ~ ^/data/ { internal ; }
location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {
expires 365d;
}
location / { try_files $uri $uri/ @dokuwiki; }
location @dokuwiki {
# rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki config page
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 ^/(.*) /doku.php?id=$1&$args last;
}
location ~ \.php$ {
try_files $uri $uri/ /doku.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
# fastcgi_pass unix:/var/run/php5-fpm.sock; #old php version
}
}
Enable the website.
ln -s /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/
Generate a SSL certificate for the subdomain.
certbot --nginx
Restart nginx and php in order for the changes to take effect.
systemctl restart nginx && systemctl restart php8.2-fpm
Finally, go to wiki.yourwebsite.com/install.php
to finish the installation process. Read up the documentation in order to understand what each of those itens mean.
Once that’s done, remember to uncomment the location
line on the nginx configuration file. Open /etc/nginx/sites-available/dokuwiki
with a text editor and remove the “#” symbol at the beginning of the line.
#Remember to comment the below out when you're installing, and uncomment it when done.
location ~ /(conf/|bin/|inc/|vendor/|install.php) { deny all; }
Reload nginx once again for the changes to take effect.
systemctl restart nginx
Your wiki is now live! Have fun and happy hacking.
Contributor - Adachi