108Mediawiki - amagerard/Docker GitHub Wiki
Docker/Home
RedHat10/Docker.
| 1- Docker | 2- Firewall | 3- Portainer | 4- Drupal | 5- Joomla |
|---|---|---|---|---|
| 6- Wordpress | 7- Xwiki | 8- Mediawiki | 9- Environment | |
| Casaos | Zimaos |
8. Mediawiki.
MediaWiki is a wiki engine for the web.
This procedure is based on this example.
Docker server ip :192.168.60.55/24
Your username: teacher
Your home directory:/home/teacher
8.1 Create Network and Volumes with Portainer.
Open Portainer for create network and volumes.
https://192.168.60.55:9443
Click on Environments Local.
8.1.1 Each Mediawiki instance has its container.
- cnt_mki_wb_number.
- cnt_mki_db_number.
Containers will be created from the docker compose command line.
8.1.2 Each Mediawiki instance has its network.
- net_mki_number.
Create net_mki_1.
Select Networks.
Add network.
Name : net_mki_1
Add Driver options:
Name : com.docker.network.bridge.name value : net_mki_1
Create the network.
Name: com.docker.network.bridge.name value : net_mki_1 is not specified, docker will give it a name as br-XXXX.
8.1.3 Each Mediawiki instance has its volume.
- vol_mki_wb_number.
- vol_mki_db_number.
Create these volumes.
Select Volumes.
Add volume.
Name: vol_mki_wb_1
Create the volume.
Add the volume.
Name: vol_mki_db_1
Create the volume.
8.1.4 Information.
Command lines to create the netwok and volumes without portainer.
docker network create --opt com.docker.network.bridge.name=net_mki_1 net_mki_1
docker volume create vol_mki_wb_1
docker volume create vol_mki_db_1
8.2 Give permissions to www-dock and mysql-dock for volumes.
chown -R www-dock:www-dock /var/lib/docker/volumes/vol_mki_wb_1
chown -R mysql-dock:mysql-dock /var/lib/docker/volumes/vol_mki_db_1
8.3 Edit a yaml script for Mediawiki.
Logging with your username.
mkdir /home/teacher/mediawiki
vi /home/teacher/mediawiki/instance_mediawiki_1.yaml
# 2025, January
# replace number by 1 or 2 or ... until 9
# example n = 1
# port published wb = 8081
# port published db = 33771
# ip = 192.168.60.55
# your username is teacher
# you must create network net_mki_1 from portainer before installing mediawiki.
# you must create volume vol_mki_wb_1 from portainer before installing mediawiki.
# you must create volume vol_mki_db_1 from portainer before installing mediawiki.
# you must create mediawiki_1 folder under /home/teacher/docker/files before installing mediawiki
#
# mkdir -p /home/teacher/docker/files/mediawiki_1/
#
#
# you cannot delete /home/teacher/docker/files/mediawiki_1
#
# Be careful with the tab, the indentation is 4 characters.
#
name: mediawiki_1 ## change n of mediawiki_n
services:
mediawiki:
cpu_shares: 90
command: []
container_name: cnt_mki_wb_1 ## change n of cnt_mki_wb_n
depends_on:
mediawikidb:
condition: service_started
restart: true
required: true
deploy:
resources:
limits:
memory: 2048M
environment: []
hostname: cnt_mki_wb_1 ## change n to cnt_mki_wb_n
image: mediawiki:latest
links:
- mediawikidb:mariadb
ports:
- target: 80
published: '8081' ## change n of 808n
protocol: tcp
restart: always
volumes:
- /var/lib/docker/volumes/vol_mki_wb_1/_data:/var/www/html/images # create volume from portainer and change n of vol_mki_wb_n
# 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.
# put newly created LocalSettings.php in the /home/teacher/docker/files/mediawiki_1/ and remove the "#"
#- /home/teacher/docker/files/mediawiki_1/LocalSettings.php:/var/www/html/LocalSettings.php
user: 2001:2001 ## www-dock uid:gid
devices: []
cap_add: []
network_mode: net_mki_1 # create network from portainer and change n of net_mki_1
privileged: false
mediawikidb:
cpu_shares: 90
container_name: cnt_mki_db_1 ## change n of cnt_mki_db_n
command: []
deploy:
resources:
limits:
memory: 2048M
environment:
- MYSQL_DATABASE=my_wiki
- MYSQL_USER=wikiuser
- MYSQL_PASSWORD=641fqAB4d # as you want
- MYSQL_RANDOM_ROOT_PASSWORD=yes
hostname: cnt_mki_db_1 ## change n of cnt_mki_db_n
image: mariadb:latest
ports:
- target: 3306
published: '33771' ## change n to 3377n
protocol: tcp
restart: always
volumes:
- /var/lib/docker/volumes/vol_mki_db_1/_data:/var/lib/mysql ## create volume from portainer and change n of vol_mki_db_n
user: 2002:2002 ## mysql-dock uid:gid
devices: []
cap_add: []
network_mode: net_mki_1 # create network from portainer and change n of net_mki_1
privileged: false
Information.
If you want to change your Mediawiki instance in 2,
Edit this file and replace _1 by _2.
Then replace the port 8081 by 8082
and 33771 by 33772.
You will need to create a mediawiki_2 folder under /home/teacher/docker/files/
because the LocalSettings file will be different.
8.4 First Installation for initial setup.
Installing Mediawiki is done in 2 steps:
- 1- After initial setup, download
LocalSettings.phpto the same directory as/home/teacher/docker/files/mediawiki_1. - 2- Uncomment the following line.
- /home/teacher/docker/files/mediawiki_1/LocalSettings.php:/var/www/html/LocalSettings.php
frominstance_mediawiki_1.yaml
First installation of mediawiki.
docker compose -f /home/teacher/mediawiki/instance_mediawiki_1.yaml up
Do not stop containers.
Do not do Ctrl+C to stop.
8.5 Firewall.
Open another console terminal.
Find your interface for network net_mki_1.
The gateway is displayed in Portainer Networks.
Example:
the net_mki_1 gateway is 172.18.0.1/16.
Network interface is net_mki_1.
ifconfig
net_mki_1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
ether 02:42:6a:71:3d:51 txqueuelen 0 (Ethernet)
RX packets 10742 bytes 23229052 (22.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12571 bytes 5854522 (5.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Add rules on firewall.
iptables -t nat -A POSTROUTING ! -o net_mki_1 -s 172.18.0.0/16 -j MASQUERADE
ufw route allow in on net_mki_1 out on eth0 to any from any
The postrouting iptable rule disappears after restarting the server.
The solution is to add the rule in crontab.
Add postrouting iptable in /opt/docker/postrouting_sh.
vi /opt/docker/postrouting_sh
iptables -t nat -A POSTROUTING ! -o net_mki_1 -s 172.18.0.0/16 -j MASQUERADE
Don't forget to delete line if you no longer use this iptable rule.
Information.
To delete an iptable postrouting rule without reboot.
Postrouting line number.
iptables --list -v --line-numbers -t nat
Remove rule ( 1 is the line number).
iptables -t nat -D POSTROUTING 1
8.6 First access Mediawiki for initial setup.
http://192.168.60.55:8081.
First page :setup the wiki first.
Language:
Your Language :en - English.
Wiki language :en - English
All is OK : Continue.
Connect to database:
Database type:MariasDB.
Database host:cnt_mki_db_1.
Identify this wiki:
Database name:my_wiki.
User account for installation:
Database username:wikiuser.
Database password:641fqAB4d.
Continue.
Database settings:
Use the same account as for installation.
Continue.
Name:
Name of wiki:Mybeautifulweb.
Administrator account:
Your username: adminwiki.
Password (10 characters) :as you want.
Email address:as you want;
I'm bored already, just install the wiki.
Install
Continue for Begin the installation.
Install database.
Database was successfully setup.
Continue.
The installer has generated a LocalSettings.php file.
Your LocalSettings.php file is located in your browser's downloads folder.
8.7 LocalSettings.php.
Log in with your username.
Create mediawiki_1 folder.
mkdir -p /home/teacher/docker/files/mediawiki_1
Copy LocalSettings.php to /home/teacher/docker/files/mediawiki_1.
From another computer.
scp LocalSettings.php [email protected]:/home/teacher/docker/files/mediawiki_1/
Add at the end of LocalSettings.php file.
vi /home/teacher/docker/files/mediawiki_1/LocalSettings.php
# Add extensions
wfLoadExtensions( [ 'Cite', 'CiteThisPage', 'ParserFunctions', 'ConfirmEdit', 'InputBox', 'Gadgets', 'ImageMap', 'Nuke' , 'ParserFunctions','PdfHandler', 'SpamBlacklist', 'Poem', 'TitleBlacklist'] );
## Editor VisualEditor
wfLoadExtension( 'VisualEditor' );
## WikiEditor
wfLoadExtension( 'WikiEditor' );
$wgHiddenPrefs[] = 'usebetatoolbar';
$wgDefaultUserOptions['showtoolbar'] = true;
$wgDefaultUserOptions['usebetatoolbar'] = 1;
## SyntaxHighlight
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
Change UTC.
Find your Time Zone.
timedatectl list-timezones
Example: "Australia/Sydney"
vi /home/teacher/docker/files/mediawiki_1/LocalSettings.php
# Time zone
#$wgLocaltimezone = "UTC";
$wgLocaltimezone = "Autralia/Sydney";
Enable upload.
Change $wgEnableUploads false to true.
vi /home/teacher/docker/files/mediawiki_1/LocalSettings.php
$wgEnableUploads = true;
8.8 Second install mediawiki.
Uncomment the following line - /home/teacher/docker/files/mediawiki_1/LocalSettings.php:/var/www/html/LocalSettings.php
from instance_mediawiki_1.yaml.
vi /home/teacher/mediawiki/instance_mediawiki_1.yaml
Be careful with identation (6).
#
- /home/teacher/docker/files/mediawiki_2/LocalSettings.php:/var/www/html/LocalSettings.php
From first terminal console.
Stop Mediawiki containers.
Ctrl +C
Do the command line.
docker compose -f /home/teacher/mediawiki/instance_mediawiki_1.yaml up
Stop Mediawiki containers.
Ctrl +C
8.9 Attach volumes with containers.
On portainer, by default the volumes are marked Unused.
Open Portainer.
https://192.168.60.55:9443
Click on Environments Local.
Select Container cnt_mki_wb_1.
Click on cnt_mki_wb_1.
Click Duplicate/Edit.
Advanced container settings.
Click on Volumes.
Volumes mapping.
Choose container /var/www/html/images.
Click on Volume.
Select a Volume.
Choose vol_mki_wb_1 - local.
Click on Deploy the container.
Click on Replace.
Select containers cnt_mki_db_1.
Click on cnt_mki_db_1.
Click Duplicate/Edit.
Advanced container settings.
Click on Volumes.
Volumes mapping.
Choose container /var/lib/mysql.
Click on Volume.
Select a Volume.
Choose vol_mki_db_1 - local.
Click on Deploy the container.
Click on Replace.
8.9 Give permissions to www-dock for its volume.
www-dock permissions on vol_mki_wb_1 have been removed.
chown -R www-dock:www-dock /var/lib/docker/volumes/vol_mki_wb_1
8.10 Second access Mediawiki.
http://192.168.60.55:8081.
Log in adminwiki.
Mediawiki is ready.