Skip to main content

Command Palette

Search for a command to run...

How to install DokuWiki on Ubuntu

Updated
4 min read
How to install DokuWiki on Ubuntu

Overview

  • DokuWiki is a historic open-source wiki engine first released in 2004. It operates based on PHP and functions without a database, using only the file system, making it lightweight and easy to manage for anyone. This article outlines the steps to install DokuWiki on an Ubuntu operating system.

Prerequisites

  • Your own internet domain
  • A remote server with Ubuntu operating system installed and accessible over the internet

Installing NGINX

  • NGINX enables the server to provide web services.
# Update packages to latest
$ sudo apt-get update && sudo apt-get upgrade -y

# Install NGINX
$ sudo apt-get install nginx -y
$ sudo systemctl enable nginx
$ sudo chmod -R 777 /var/www/html

# Start NGINX service
$ sudo systemctl start nginx

Installing PHP-FPM

  • PHP-FPM enables NGINX to execute PHP source code. Install it as follows:
# Install PHP-FPM package repository
$ sudo apt-get install ca-certificates apt-transport-https software-properties-common -y
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update

# Install PHP-FPM
$ sudo apt-get install php8.3-fpm php8.3-gd php8.3-xml -y 
$ sudo systemctl enable php8.3-fpm

# Start PHP-FPM service
$ sudo systemctl start php8.3-fpm

# Restart NGINX service
$ sudo systemctl restart nginx

Installing Certbot

  • Certbot automatically facilitates the installation of free SSL certificates from Let's Encrypt. Once installed, it will serve requests to your domain over HTTPS only.
### Install Certbot
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

### Automatically apply Certbot to NGINX
$ sudo certbot --nginx -d {your-domain}
$ sudo systemctl status snap.certbot.renew.service

NGINX Configuration

  • Add the following configuration for PHP-FPM and DokuWiki in the NGINX environment configuration file.
$ sudo nano /etc/nginx/sites-available/default
server {
    server_name {your-domain};

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

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

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/{your-domain}/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/{your-domain}/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    server_name {your-domain};

    if ($host = {your-domain}) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;

    return 404; # managed by Certbot
}

Firewall Configuration

  • On the remote server, allow only SSH and NGINX service ports through the firewall and start the service.
# Allow SSH and NGINX in firewall
$ sudo ufw allow ssh
$ sudo ufw allow 'Nginx Full'

# Start firewall service
$ sudo ufw enable
$ sudo ufw start

Installing DokuWiki

  • To install DokuWiki, navigate to https://download.dokuwiki.org/ in your browser, select the installation options that suit your preferences, and click the Download button to obtain the .tgz file URL. Use the acquired URL to install DokuWiki as follows:
# Install DokuWiki
$ cd /var/www/html
$ wget {your-dokuwiki-tgz-download-url}
$ tar xzvf {your-dokuwiki-tgz-filename}
$ sudo chown -R www-data:www-data /var/www/html/dokuwiki

# Deny crawling collection
$ nano /var/www/html/robots.txt
User-agent: *
Disallow: /
Disallow: /dokuwiki/
  • The installation process through the terminal console is now complete. To finish the installation, access https://{your-domain}/dokuwiki/install.php in your browser and follow the instructions.

Regenerating DokuWiki Document Cache

  • DokuWiki provides fast search functionality through pre-generated document caches. If you encounter issues with the cache function for various reasons, you can reset and regenerate the document cache as follows:
# Navigate to the DokuWiki installation directory
$ cd /var/www/html/dokuwiki
# Delete all existing document caches
$ sudo rm -rf data/cache/*
# Bulk regenerate document caches
$ sudo -u www-data php bin/indexer.php -c

References

More from this blog

T

Taehyeong Lee | Software Engineer

56 posts

I am Software Engineer with 15 years of experience, working at Gentle Monster. I specialize in developing high-load, large-scale processing APIs using Kotlin and Spring Boot. I live in Seoul, Korea.