Ubuntu Local Wiki Import: Difference between revisions

From CompleteNoobs
Jump to navigation Jump to search
 
Line 155: Line 155:


===Youtube extension===
===Youtube extension===
* needed to view embedded videos
https://www.mediawiki.org/wiki/Extension:YouTube
https://www.mediawiki.org/wiki/Extension:YouTube



Latest revision as of 17:05, 4 May 2023

Tested on Ubuntu-Mate 20.04
Download CompleteNoobs wiki and Keep Private Copy you can edit as you wish on your own computer.

Download CompleteNoobs's XML dump

CompleteNoobs xml dump

Create a container

lxc launch ubuntu:20.04 localwiki
Push file conataining xml dump to container
lxc file push wiki-dump.xml localwiki/root/
Log/Chroot into container
lxc exec localwiki bash

update container and set to auto update

update container
apt update && apt upgrade -y
Auto updates
$EDITOR /etc/apt/apt.conf.d/50unattended-upgrades
Uncomment the line:

// "${distro_id}:${distro_codename}-updates";

to

"${distro_id}:${distro_codename}-updates";

Install mediawiki

apt install apache2 mysql-server php php-mysql libapache2-mod-php php-xml php-mbstring php-intl -y

wget https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.2.tar.gz

tar -zxvf mediawiki-1.39.2.tar.gz

mv mediawiki-1.39.2 /var/www/html/mediawiki

Create database

As this is just for your own computer on your own network, you can keep it super simple:
mysql -u root
CREATE USER 'u'@'localhost' IDENTIFIED BY 'passwd';
CREATE DATABASE db;
use db;
GRANT ALL ON db.* TO 'u'@'localhost';
quit;

Syntax Database setup:

Login to Mysql as user root: mysql -u $USER

CREATE USER '$USERNAME'@'localhost' IDENTIFIED BY '$PASSWORD';
CREATE DATABASE $DATABASE_NAME;
use $DATABASE_NAME;
GRANT ALL ON $DATABASE_NAME.* TO '$USER'@'localhost';

Config Apache2

$EDITOR /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
        DocumentRoot /var/www/html/mediawiki
</VirtualHost>


Reload Apache2

systemctl restart apache2

Visit webpage and carry on with normal basic wiki setup

Use lxc list on host to get IP address for your container: mine is 10.3.45.40
With a web browser visit enter the ip in the address bar.
You will now find yourself on the mediawiki setup landing page.

MediaWiki 1.36.1 LocalSettings.php not found. Please complete the installation and download LocalSettings.php.

Click complete the installation

Language Page

Just pick a language mate

Welcome to MediaWiki!

read and click Continue

Connect to database - going to need the details from when you created the database.

Database host:localhost
Database name:db
Database table prefix (no hyphens): LEAVE BLANK
Database username:u
Database password:passwd

Database Settings

Database account for web access
[x]Use the same account as for installation
Leave ticked

Name

Name of wiki:LocalWiki
Project namespace:
[x]Same as the wiki name:
[ ]Project
[ ]Other (specify)
Administrator account Will be the admin account on the wiki.
CLICK I'm bored already, just install the wiki.

At the end you would of downloaded a file called LocalSettings.php
Now lets send it to the container from host.

Send LocalSettings to Container

From host:
lxc file push Downloads/LocalSettings.php localwiki/var/www/html/mediawiki/

restore xml dump

In container
php /var/www/html/mediawiki/maintenance/importDump.php --conf /var/www/html/mediawiki/LocalSettings.php /root/wiki-dump.xml

php /var/www/html/mediawiki/maintenance/rebuildrecentchanges.php
php /var/www/html/mediawiki/maintenance/initSiteStats.php
php /var/www/html/mediawiki/maintenance/rebuildall.php

  • can be done in one line using '&&: php /var/www/html/mediawiki/maintenance/rebuildrecentchanges.php && php /var/www/html/mediawiki/maintenance/initSiteStats.php && php /var/www/html/mediawiki/maintenance/rebuildall.php
    • The && operator is known as the "AND" operator. It is used to execute a command only if the previous command completes successfully.

Youtube extension

  • needed to view embedded videos

https://www.mediawiki.org/wiki/Extension:YouTube

wget https://extdist.wmflabs.org/dist/extensions/YouTube-REL1_39-f272bb3.tar.gz

tar -xzf YouTube-REL1_39-f272bb3.tar.gz -C /var/www/html/mediawiki/extensions/

  • Append to LocalSettings.php

wfLoadExtension( 'YouTube' );

  • On wiki page can now embed youtube videos
  • Defaults width=640 pixels height=385 pixels
  • Change defaults <youtube width="800" height="400">wB4gvSgYmfY</youtube>

Visit your local copy of CompleteNoobs

In Browser go to http://$YOUR_CONTAINERS_IP

Everything apart from index.php/Main_Page restored.
Edit main page to have link to main_index
[[Main_Index | wiki index]]
And thats why we have a Main_Index page.

Syntax highlighting not working

Install pygments
apt install python3-pygments

Add to LocalSettings:
wfLoadExtension( 'SyntaxHighlight_GeSHi' );

script to auto install wiki in container - Draft0

#!/bin/bash

# check root
if [ "$EUID" -ne 0 ]
  then echo "you need to run as root!"
  exit
fi
#check running ubuntu 22.04
CHECK_UBUNTU=$(lsb_release -i | awk '{print $3}')
CHECK_UBUNTU2004=$(lsb_release -r | awk '{print $2}')
if [ $CHECK_UBUNTU == "Ubuntu" ]
    then
        if [ $CHECK_UBUNTU2004 == "22.04" ]
            then
                printf "You are running $CHECK_UBUNTU $CHECK_UBUNTU2004\n\n"
            else
                echo "are you sure your running ubuntu 22.04?"
                echo $CHECK_UBUNTU $CHECK_UBUNTU2004
                printf "This script is intended for Ubuntu 22.04\nExiting script\n"
                exit 1
        fi
     else
         printf "This script is intended for ubuntu 22.04!\nScript exiting\n"
         exit 1
fi


#####################################################

printf "\nThis is a script in development!\n"
printf "For quickly installing the basic's of mediawiki on a ubuntu 22.04 container\n"
printf "Enter \"yes\" to continue with script or press anykey to exit!\n"

printf "\n
What this script will do:\n
\n\t3. Install software packages:
\t\t apache2
\t\t mysql-server
\t\t php
\t\t php-mysql
\t\t libapache2-mod-php
\t\t php-xml
\t\t php-mbstring
\t\t php-intl
\t\t mediawiki-1.39.2
\n\t4. Take name for your localwiki
\n\t 5a. Download, checksum, extract to path: \'MediaWiki-1.34.2\'
\t 5b. Download, checksum and move to path file \'apache.conf.backup\' - template for configuring apache
\n\t7. Create Database for mediawiki
\n\t8. Configure Apache
\n\t10. Will echo/display details required for finishing media setup on web browser
\n\n\tPlease type \"yes\" case sensitive to continue!\n
\tJust Press Enter to Exit Script!\n
\tEnter anwser here :"

read anypress

if [ -z "$anypress" ]
    then
        printf "Exiting Script!"
        sleep 1
        exit 1
    else
        if [ $anypress == "yes" ]
        then
            printf "starting script ....."
            sleep 1
        else
            printf "Exiting Script!"
            sleep 1
            exit 1
        fi
fi

####################################################
########### check system up to date
apt update && apt upgrade -y && apt autoremove -y


###########################################
########### Install packages
# checksum of mediawiki download.
# add patch and check sig
# when downloading from github add(?raw=true) at the end or you will download a html page.

# Install main packages from ubuntu repos
apt install apache2 mysql-server php php-mysql libapache2-mod-php php-xml php-mbstring php-intl -y

######
# download and checksums of media wiki
MediaWiki_Sum="ddb51d228a19ca68cd8871d850175f6bef46874476ed1466f015cf9846d9c7a5"
wget https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.2.tar.gz

# Check md5sum of download and extract to directory
MediaWiki_Sum_CHECK="$(sha256sum mediawiki-1.39.2.tar.gz | awk '{print $1}')"

if [ $MediaWiki_Sum == $MediaWiki_Sum_CHECK ] ;
    then
        echo "checksum checks out:"
        tar -zxvf mediawiki-1.39.2.tar.gz -C /var/www/html/
        mv /var/www/html/mediawiki-1.39.2 /var/www/html/mediawiki
        rm mediawiki-1.39.2.tar.gz
    else
        echo "Checksum not checking out"
        printf "looking for $MediaWiki_Sum but found $MediaWiki_Sum_CHECK"
        read -r -p $" Press Enter to Exit Script"
        exit 1
fi

#########################

# apache quick config
function apacheconfigfunc {
printf "<VirtualHost *:80>\n\tDocumentRoot /var/www/html/mediawiki\n</VirtualHost>\n"
}

apacheconfigfunc >  /etc/apache2/sites-available/000-default.conf
# restart apache2
systemctl restart apache2

#end apache quick config
##########################################

#Container ip function
####Print IP for container
function conIPfun {
hostname -I | awk '{print $1}'
}

ConIPVar=$(hostname -I | awk '{print $1}')

echo $ConIPVar

###################
########################
##EmbedVideo extension
EmbedSum="b8b4ccf516e5ba8f47f11e415fe0ac325e9d05eb1cc750c808191e7e8a15360f"
apt install unzip -y
wget https://gitlab.com/hydrawiki/extensions/EmbedVideo/-/archive/v2.9.0/EmbedVideo-v2.9.0.zip
CheckEmbed="$(sha256sum EmbedVideo-v2.9.0.zip | awk '{print $1}')"

if [ $CheckEmbed == $EmbedSum ] ;
    then
        echo "checksum checks out:"
        unzip EmbedVideo-v2.9.0.zip -d /var/www/html/mediawiki/extensions/
        mv /var/www/html/mediawiki/extensions/EmbedVideo-v2.9.0 /var/www/html/mediawiki/extensions/EmbedVideo
    else
        echo "Checksum not checking out"
        printf "looking for $EmbedSum but found $CheckEmbed"
        read -r -p $" Press Enter to Exit Script"
        exit 1
fi

#####
# Create Database
mysql -u root <<MYSQL_SCRIPT
CREATE USER 'wiki'@'localhost'; # not needed for root
CREATE DATABASE my_wiki;
use my_wiki;
GRANT ALL ON my_wiki.* TO 'wiki'@'localhost';
MYSQL_SCRIPT
# Remember to change name from 'root' to 'wiki' and push file to container:
CON_NAME=$(uname -a | awk '{print $2}')

echo "Now visit the IP $ConIPVar from a browser"
echo "and change the database username from 'root' to 'wiki' on the DateBase Page"
echo "When finished you will download a 'LocalSettings.php' file"
echo "You need to push this file into the container $CON_NAME from your download directory"
echo "you can use 'lxc file push' to copy the file into the container"
echo "lxc file push /home/USERNAME/Downloads/LocalSettings.php $CON_NAME/var/www/html/mediawiki/"
echo "the setup script will continue as few seconds after."

###################################
# Wait for LocalSettings.php to be imported to Container #
while [ ! -f /var/www/html/mediawiki/LocalSettings.php ]
do
  sleep 2 # will check every 2 seconds to see if file is there
done

#####################################

#Noobs
curl -L xml.completenoobs.com/xmlDumps | grep Noobs | awk -F '"' '{print $2}' > /tmp/wi-dump.txt

#grep will find newest dated dump and assign to $newest
newest=$(grep -oE '^[0-9]{2}_[0-9]{2}_[0-9]{2}' /tmp/wi-dump.txt | sort -r | head -n 1)

temppath="/tmp/wi-dir/"
md5=$newest.md5sum.txt
xml=$newest.Noobs.xml
sha256=$newest.sha256sum.txt

#mkdir for dumps
mkdir /tmp/wi-dir

wget https://xml.completenoobs.com/xmlDumps/$newest.Noobs/$md5 -P /tmp/wi-dir/
wget https://xml.completenoobs.com/xmlDumps/$newest.Noobs/$sha256 -P /tmp/wi-dir/
wget https://xml.completenoobs.com/xmlDumps/$newest.Noobs/$xml -P /tmp/wi-dir/

# CheckSums before import
md5_dl=$(md5sum $temppath$xml | awk '{print $1}')
md5_file=$(cat /tmp/wi-dir/$md5 | awk '{print $1}')
sha256_dl=$(sha256sum $temppath$xml | awk '{print $1}')
sha256_file=$(cat $temppath$sha256 | awk '{print $1}')

if [ $md5file == $md5dl ];
then
	echo 'md5 checks out'
else
	echo 'does not check out'
fi

if [ $sha256_dl == $sha256_file ];
then 
	echo "sha256 checks out"
	#import to wiki
	echo "importing mediawiki database"
	php /var/www/html/mediawiki/maintenance/importDump.php --conf /var/www/html/mediawiki/LocalSettings.php $temppath$xml
	php /var/www/html/mediawiki/maintenance/rebuildrecentchanges.php
	php /var/www/html/mediawiki/maintenance/initSiteStats.php
	php /var/www/html/mediawiki/maintenance/rebuildall.php
else
	echo "checksum not checking out"
	exit 1
fi

# dont forget clean up
rm -rf /tmp/wi-dir/*