User Tools

Site Tools


webapps:dokuwiki2004

DokuWiki Installation

This install guide is a how-to for installing DokuWiki Ubuntu server 20.04.

Prerequisites

Packages required for DokuWiki to work:

sudo apt install php7.4 php7.4-common php7.4-cli php7.4-gd php7.4-mbstring php7.4-mysql php7.4-xml php7.4-ldap php7.4-fpm
sudo apt install nginx

Compiling mcrypt PHP module

First Check whether the mcrypt PHP module is present:

php -m | grep mcrypt

To install the mcrypt PHP module we first need to satisfy the following prerequisites:

sudo apt install php-dev libmcrypt-dev php-pear

Now we are ready to install mcrypt PHP module on our Ubuntu 20.04 system:

sudo pecl channel-update pecl.php.net
sudo pecl install mcrypt-1.0.4

Open the /etc/php/7.4/cli/php.ini file and insert:

extension=mcrypt.so

All done. When successful, checking for the presence of the mcrypt PHP module should produce the following output:

php -m | grep mcrypt
mcrypt

DokuWiki

Download and extract DokuWiki stable to the proper directory.

wget -c https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
mv dokuwiki-stable.tgz dokuwiki.tgz
sudo tar -xvf dokuwiki.tgz -C /var/www/

Let's Encrypt

For SSL use the EFF's PPA for the Let's Encrypt certbot.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update; sudo apt upgrade
sudo apt install python3-certbot-nginx
sudo certbot --nginx certonly

Cert and Key locations:

/etc/letsencrypt/live/wiki.domainname.tld/fullchain.pem
/etc/letsencrypt/live/wiki.domainname.tld/privkey.pem

source: https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx

Renewing Certificate

sudo certbot renew

Configure nginx

Need to make the configuration file for nginx to point to the correct files. Make sure to change the domain to the correct one, a generic placeholder wiki.domainname.tld is used for this example config.

sudo nano /etc/nginx/conf.d/dokuwiki.conf

Paste in the below configuration and save.

server {

listen 443 ssl;
 server_name wiki.domainname.tld;
 root /var/www/dokuwiki/;

access_log /var/log/nginx/dokuwiki.access.log;
 error_log /var/log/nginx/dokuwiki.error.log;

ssl on;
 ssl_certificate /etc/letsencrypt/live/wiki.domainname.tld/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/wiki.domainname.tld/privkey.pem;
 ssl_session_timeout 5m;
 ssl_ciphers 'AES256+EECDH:AES256+EDH:!aNULL';
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;

add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;";
add_header X-XSS-Protection "1; mode=block";

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.0-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;
 }
}


server { 
 listen 80;
 server_name wiki.domainname.tld;
 add_header Strict-Transport-Security max-age=2592000;
 rewrite ^ https://wiki.domainname.tld$request_uri? permanent;
}

Here we are going to change the permissions on the web root files so that the web server can use and modify them.

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

Start nginx and php-fpm, and enable php-fpm to start at boot.

sudo systemctl start nginx php7.4-fpm
sudo systemctl enable php7.4-fpm

Configure DokuWiki

Navigate your browser to your https://wiki.domainname.tld/install.php

From there you can configure everything for the initial setup of DokuWiki.

Removing the Glow

Make userstyle.css in /conf

sudo vim /var/www/dokuwiki/conf/userstyle.css

Copy the following

.dokuwiki div.page {
	box-shadow: none;
}
.dokuwiki .pageId span {
	box-shadow: none;
}
pre {
	box-shadow: none;
}
webapps/dokuwiki2004.txt · Last modified: 2023/11/29 10:48 by lucid