Sharing knowledge is was the very first scope of internet at its born. The greatest expression of this is still Wikipedia, letting people share what they know with all the world. But you can get your knowledge portal identical to Wikipedia with the open source Mediawiki on Raspberry PI.
In this tutorial, I’m going to show you how to install Mediawilki on a Raspberry PI computer.
What Is MediaWiki
MediaWiki is an open source collaboration and documentation platform used to share knowledge between people across Internet. It is the base of the famous Wikipedia website.
Licensed under GNU General Public License (GPL), it is extremely powerful, scalable and feature-rich. MediaWiki uses PHP for its front-end to display information to your browser and a number of databases variety (most common being MySQL).
In this article, I’m going to show you how to create your personal wiki with the cheap and powerful Raspberry PI. To simplify installation and setup, I’ll use Docker and docker-compose to deploy services with a single command line and a few configuration files. Instead of MySQL, our database will be built on custom MariaDB installation (fork of MySQL), which is performing better on Raspberry PI boards.
I will use a Raspberry Pi 3 model A+, but this guide will work also with newer Raspberry PI boards. You can check hardware differences with Raspberry PI comparison between latest models.
What We need
As usual, I suggest adding from now to your favourite e-commerce shopping cart all needed hardware, so that at the end you will be able to evaluate overall costs and decide if continue with the project or remove them from the shopping cart. So, hardware will be only:
- Raspberry PI 3 Model A+ (including proper power supply or using a smartphone micro USB charger with at least 3A) or newer Raspberry PI Board
- high speed micro SD card (at least 16 GB, at least class 10)
Check hardware prices with the following links:
Start with a fresh Raspberry PI OS Lite installation. Then make sure your operating system is updated and upgraded:
sudo apt update sudo apt upgrade
Our environment will be completed installing Docker and docker-compose (using linked procedure).
Installing Database and MediaWiki
Using docker will result in a huge simplification for the installation procedure. Create a directory that will include our configuration files. Consider that by default, docker-compose will prepend to containers your directory name, even if you can easily edit it later. From terminal:
mkdir mediawiki cd mediawiki
The following files will be created in this directory:
docker-compose.yml Dockerfile mySqlScript.sql
Docker-compose yaml file
Create a docker compose file:
and add the following code;
# My MediaWiki # from peppe8o.com version: '3' services: mediawiki: image: mediawiki restart: unless-stopped ports: - 8080:80 links: - database volumes: - mediawiki-www:/var/www/html #After initial setup, download LocalSettings.php to the same directory as #this yaml and uncomment the following line and use compose to restart #the mediawiki service # - ./LocalSettings.php:/var/www/html/LocalSettings.php database: build: . restart: unless-stopped volumes: - mediawiki-db:/var/lib/mysql volumes: mediawiki-www: mediawiki-db:
As you can see, our database will be built on custom installation (please refer to create custom MariaDB container on Raspberry PI for more info).
Create a Dockerfile:
And use the following content inside it:
FROM debian RUN apt update -y && apt install mariadb-server -y RUN sed -i 's/bind-address/bind-address = 0.0.0.0 #/i' /etc/mysql/mariadb.conf.d/50-server.cnf RUN mkdir /mysql_scripts COPY mySqlScript.sql /mysql_scripts/ RUN /etc/init.d/mariadb start && mysql -uroot --password="" -e "source /mysql_scripts/mySqlScript.sql" CMD /etc/init.d/mariadb start && tail -f /dev/null
MySQL initialization script
Finally, create your database initialization script:
Use the following code, changing “mediauser” and “mediapassword” with your preferred credentials:
CREATE USER mediauser@'%' IDENTIFIED BY 'mediapassword'; CREATE DATABASE my_wiki; GRANT ALL PRIVILEGES ON my_wiki.* TO mediauser@'%'; flush privileges; quit
Service Creation and Initialization
With previous files ready to be used, you will be able to install and have it up only with following command:
docker-compose up -d
This process will require a while to download the required images and install / configure MariaDB.
Once your Raspberry PI prompts you for installation finished, you can go to your favourite browser to configure your MediaWiki installation. Browse url http://<<yourRaspberryIpAddress>>:8080 (in my case, My local Raspberry PI IP address il 192.168.1.177):
First page notifies you that the settings file has not been found. The following steps will create it. Click on “set up the wiki” link. The next page will ask you for your preferred language;
Choose it and click Continue. Next page will warn you that some environmental checks will be performed:
Scrolling down, you should see a green row reporting: “The environment has been checked. You can install MediaWiki.”. Scroll to the bottom and click “Continue”. The next page will require database configuration:
Scroll down to white fields. Leave MariaDB in database type and use the following for other fields (changing mediauser and mediapassword with your ones configured in MySQL initialization script). Note that you have to change Database Host from default “localhost” to “database:3306”:
Scroll down and click continue. The next screen will make you able to use the same user/password configured for database connection also for web access:
You can change and make your configuration more secure (but you need to define a new database user) or keep default and click continue. The next page will ask you the name of your mediawiki page and administration account.
Use your favourite ones (remember to use a strong password). To complete installation, scroll down and select “I’m bored already, just install the wiki.” option, then click Continue. Finally, a confirmation for installation completion will be asked to you:
Click Continue to complete. The next screen will confirm that installation is complete:
Click continue. On the next page, a popup will open giving you a download for a file named “LocalSettings.php”:
Download it locally and copy it to your MediaWiki folder (docker-compose folder) in your Raspberry PI. From the terminal, shut down MediaWiki service:
Edit docker-compose.yml file by uncommenting the following line:
This will allow the MediaWiki container to import LocalSettings.php file in Apache directory. Finally, our new folder will contain the following files:
docker-compose.yml Dockerfile LocalSettings.php mySqlScript.sql
Start again with docker-compose;
docker-compose up -d
And go back to your browser, refreshing http://<<yourRaspberryIpAddress>>:8080 page. You will find now your Mediawiki page ready:
Once finished, a good security practice is entering your database container and changing the DB root password.
If you want to discover many other projects for your Raspberry PI, you can take a look at peppe8o Raspberry PI tutorials.
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?