You can support us by downloading this article as PDF from the Link below. Download the guide as PDF

DokuWiki is a free and open source wiki software written in PHP. DokuWiki is highly versatile and doesn’t require a database since it works on plain text files. It has a syntax similar to the one used by MediaWiki. This guide will cover the steps to Install DokuWiki on Ubuntu 18.04 with Nginx and Letsencrypt SSL certificate for encryption.

I had written another article a while back but it was for CentOS 7 server –> Install Dokuwiki behind nginx and letsencrypt on Linux. This is dedicated to Ubuntu 18.04.

DokuWiki on Ubuntu 18.04 Prerequisites:

  • Updated system
  • PHP and php-fpm
  • Nginx or Apache web server
  • certbot-auto for requesting a Certbot certificate

Let’s kick off by making sure all software requirements are installed.

Step 1: Update system packages

Make sure your apt index and all software packages are updated.

sudo apt-get update

After rebooting the system, set system hostname and proceed to install php and all required modules:

sudo hostnamectl set-hostname myserverhostname

Step 2: Install php and required modules

We now need to install php and some php modules required by DokuWiki. Run the following commands to get everything installed.

sudo apt-get -y install php php-curl php-apcu php-fpm php-bcmath php-gd php-intl php-pear php-imap php-memcache libapache2-mod-php php-pspell php-recode php-tidy php-xmlrpc php-mbstring php-gettext php-gmp php-json php-xml php-common

By default, php version 7.2 will be installed on Ubuntu 18.04. You can check version installed using the command php -v

$ php -v
PHP 7.2.5-0ubuntu0.18.04.1 (cli) (built: May 9 2018 17:21:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.5-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

Php socket is located on,/var/run/php/php7.2-fpm.sock, the configuration for this is./etc/php/7.2/fpm/pool.d/www.conf

php-fpm service will be started by default, and its name is php7.2-fpm.service

To get a list of php extensions installed on your system, use php -m command:

php -m

Step 3: Install Nginx and certbot-auto

Let’s install nginx webserver and certbot-auto which we’ll later use to get a certificate for DokuWiki site.

sudo apt-get update
sudo apt-get install wget nginx
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto

Step 4: Download and Install DokuWiki

Before downloading any version of DokuWiki, check Github releases page for the latest stable release. As of this writing, the latest stable release is release_stable_2018-04-22a

$ export RELEASE="2018-04-22a"
$ wget${RELEASE}.tar.gz

Extract DokuWiki archive using tar

tar xvf release_stable_${RELEASE}.tar.gz
sudo mv dokuwiki-release_stable_${RELEASE} /var/www/html/dokuwiki

Change ownership of /var/www/html/dokuwiki to www-data user and group.

sudo chown -R www-data:www-data /var/www/html/dokuwiki/

Step 5: Request for Letsencrypt SSL Certificate

Stop nginx since certbot-auto will bind to port 80

sudo systemctl stop nginx

Then request for a certificate:

export DOMAIN='yourdomain'
export EMAIL="youremail"
certbot-auto certonly --standalone -d $DOMAIN \
--preferred-challenges http --agree-tos -n -m $EMAIL \

If successful, certbot will give you a successful message:

# certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for
Waiting for verification...
Cleaning up challenges

 - Congratulations! Your certificate and chain have been saved at:
   Your key file has been saved at:
   Your cert will expire on 2018-09-29. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:
   Donating to EFF:          

Step 5: Configure Nginx with SSL

sudo systemctl enable nginx
sudo vim /etc/nginx/conf.d/dokuwiki.conf

Add the following content, modify to suit your use case. Replace with your domain name.

# Dokuwiki Nginx configuration
server {

listen 443 ssl;
 server_name mydomain;
 root /var/www/html/dokuwiki/;

 access_log /var/log/nginx/dokuwiki.access.log;
 error_log /var/log/nginx/dokuwiki.error.log;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mydomain/privkey.pem;
 ssl_session_timeout 5m;
 ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;

 index index.html index.php doku.php;

location / {
 try_files $uri $uri/ @dokuwiki;

location @dokuwiki {
 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 last;

location ~ /(data|conf|bin|inc)/ {
 deny all;

location ~* \.(css|js|gif|jpe?g|png)$ {
 expires 1M;
 add_header Pragma public;
 add_header Cache-Control "public, must-revalidate, proxy-revalidate";

location ~ \.php$ {
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_intercept_errors off;
 fastcgi_buffer_size 16k;
 fastcgi_buffers 4 16k;

location ~ /\.ht {
 deny all;

# Redirect http to https
server { 
 listen 80;
 server_name mydomain;
 add_header Strict-Transport-Security max-age=2592000;
 rewrite ^ https://mydomain$request_uri? permanent;

Replace all existence of mydomain with your wiki domain.

Check nginx syntax:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

If no error, restart nginx and php-fpm

sudo systemctl restart php-fpm nginx

Step 6: Configure DokuWiki on Ubuntu 18.04

Start DokuWiki configuration by opening the link: https://wiki.mydomain/install.php, you will get installation page like below:

Provide admin user details, under,Initial ACL policy choose your policy from one of:

  • Open Wiki – Open for everyone
  • Public Wiki – read for all, uploads and edits for registered users
  • Closed Wiki – Access only for registered users

Check whether you want to Allow users to register themselves

When done, click Save. The wiki page should now be ready.

Click “your new DokuWiki” to get to DokuWiki home page.

Step 7: Adding users to DokuWiki

If you had selected “Closed Wiki | Public” as your ACL policy, you will be given login page for edits. Log in with admin account you created earlier to start adding other users to the system:

Click “Admin” icon at the top of the page, this will take you to admin page:

Click on “User Manager” to get add user page:

Add User details and click “Add” button. After adding a user, you can assign ACL on “Access Control List Management” page.

Select from given Permissions.

In our next Wiki guides, I’ll cover how to install plugins on DokuWiki to extend its functionalities.

You can support us by downloading this article as PDF from the Link below. Download the guide as PDF