Ubuntu Local Wiki Import

From CompleteNoobs
Jump to navigation Jump to search
Please Select a Licence from the LICENCE_HEADERS page
And place at top of your page
If no Licence is Selected/Appended, Default will be CC0

Default Licence IF there is no Licence placed below this notice! When you edit this page, you agree to release your contribution under the CC0 Licence

LICENCE: More information about the cc0 licence can be found here:
https://creativecommons.org/share-your-work/public-domain/cc0

The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

Licence:

Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").

Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.

For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.

1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:

   the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
   moral rights retained by the original author(s) and/or performer(s);
   publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
   rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
   rights protecting the extraction, dissemination, use and reuse of data in a Work;
   database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
   other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.

2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.

3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.

4. Limitations and Disclaimers.

   No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
   Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
   Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
   Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.

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/*