===== Installing Core Dependencies =====
This step installs essential utilities needed for subsequent installations.
sudo apt update && sudo apt upgrade -y
sudo apt install zip unzip software-properties-common wget curl ca-certificates -y
===== PHP Installation (Specified: PHP 8.4) =====
The **Ondrej Sury PPA** is used for installing and managing PHP versions. We will target **PHP 8.4** as specified. You can check the available versions and their support status on the official PPA page: [[https://launchpad.net/~ondrej/+archive/ubuntu/php|ondrej/php PPA]]
==== Adding Repository ====
The PPA must be added to your system's sources list.
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
==== Installing PHP and Required Modules ====
DokuWiki requires specific PHP modules (extensions). The following command installs PHP 8.4 alongside the necessary modules for DokuWiki's functionality (e.g., image manipulation, multi-byte string handling, XML parsing, and internationalization).
sudo apt install -y php8.4 php8.4-fpm php8.4-cli php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-pdo php8.4-mysql
**Note:** We include **php-fpm** for use with high-performance web servers like **Nginx** or **Apache** via **mod_fcgid** or **mod_proxy_fcgi**. If you encounter issues, ensure `php8.4` is available in the PPA at the time of installation, as this version may be a development or future release.
===== MariaDB Server Installation =====
MariaDB is the recommended drop-in replacement for MySQL.
==== Installation ====
sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
==== Initial Security Setup ====
Then, secure the installation by running the following script. **Execute all steps carefully.**
sudo mysql_secure_installation
* **1- Enter current password for root (enter for none):**
* **Action:** Press **ENTER** (the root MariaDB user has no password by default after installation).
* **2- Switch to unix_socket authentication [Y/n]:**
* **Action:** Type **n**. We will set a password instead.
* **3- Change the root password? [Y/n]:**
* **Action:** Type **Y** and set a strong password.
* RESPONSE:
- New password: SET A STRONG PASS
- Re-enter new password: RE-ENTER PASS
* **4- Remove anonymous users? [Y/n]:**
* **Action:** Type **Y**. Anonymous users are a security risk.
* **5- Disallow root login remotely? [Y/n]:**
* **Action:** Type **Y**. **Highly Recommended** for security unless absolutely required.
* **6 - Remove test database and access to it? [Y/n]:**
* **Action:** Type **Y**.
* **7 - Reload privilege tables now? [Y/n]:**
* **Action:** Type **Y**. This applies the changes immediately.
==== MariaDB Service Status ====
When installed from the default repositories, MariaDB will start running automatically. To test the MariaDB's status, you can run the following command:
sudo systemctl status mariadb
You should see a similar output as following one:
● mariadb.service - MariaDB 10.11.13 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-12-08 09:24:15 CET; 33min ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 13685 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 11 (limit: 244840)
Memory: 78.8M (peak: 85.0M)
CPU: 640ms
CGroup: /system.slice/mariadb.service
└─13685 /usr/sbin/mariadbd
==== Testing MariaDB ====
mysql -u root -pTypeThePasswordThatYouSet
If the installation successfully happened, you should see the following message:
user@domain:~$ mysql -u root -pTypeThePasswordThatYouSet
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 38
Server version: 10.11.13-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
You can just type the following command for exit the MySQL console:
MariaDB [(none)]> EXIT;
If MariaDB is not running, you can start the service by following command:
sudo systemctl start mariadb
and also enable the service by:
sudo systemctl enable mariadb
For and additional check, you can run the following command:
sudo mysqladmin version
You should receive a response like:
mysqladmin Ver 10.0 Distrib 10.11.13-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.11.13-MariaDB-0ubuntu0.24.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /run/mysqld/mysqld.sock
Uptime: 38 min 36 sec
Threads: 1 Questions: 74 Slow queries: 0 Opens: 33 Open tables: 26 Queries per second avg: 0.031
===== Composer Installation =====
Composer has an awesome description and installation guide on its webpage. You can use the following link: [[https://getcomposer.org/download/]] and see the section that "Command-line installation". I am just referencing the same code here:
It is better to go your home directory first:
cd ~
== 1. Download the terminal script ==
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
== 2. Check the hash file ==
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"
It should return the following message: **Installer verified**
== 3. Run the Script ==
php composer-setup.php
It should return the following message:
All settings correct for using Composer
Downloading...
Composer (version 2.9.2) successfully installed to: /home/USER/composer.phar
Use it: php composer.phar
== 4. Delete (Unlink) the File ==
php -r "unlink('composer-setup.php');"
== 5. Add it to the PATH ==
Then you can add the composer into your PATH to access the composer with just running `composer` command from any directory:
sudo mv composer.phar /usr/local/bin/composer
== 6. Test the Installation ==
composer --version
You need to see something similar like:
Composer version 2.9.2 2025-11-19 21:57:25
PHP version 8.4.15 (/usr/bin/php8.4)
Run the "diagnose" command to get more detailed diagnostics output.