* Good recommendations. Official docs mostly avoid recommendations among a myriad of possibilities
* Closely references & supplements official documentation
+* Automatic security updates
* Explicit automation support wherever practical
-* Used to setup this site (style optional)
-* Contributions welcome and will be updated/tested on this very site!
+* Used to setup this site (style is optional)
* Support for multiple gnu/linux distros
-* Holistic scope (backups, server setup), but sections stand on their own
-* Explicit support for production & local testing instance. Additions for production like https and web analytics.
-* Edits to this page are closely monitored by the original author.
+* Holistic scope (backups, server setup), but sections are independent
+* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent]
+* Edits to this page are tested on this site and reviewed by the main author.
'''Assumptions'''
-* Self hosting, single GNU/Linux system with Bash shell
-* Root shell is assumed throughout
-* Code blocks are [https://en.wikipedia.org/wiki/Idempotent idempotent]
+* Self hosting, single GNU/Linux system with root Bash shell
+
'''Version Support'''
Very minor adjustments needed for other distros. Help expand this list.
-* Mediawiki 1.27 & 1.28
+* Mediawiki 1.28, updated as new versions are released
* Debian 8 + backports
* Debian 8
* Debian testing (last tested Aug 7, 2016)
# The rest of this section will work fine with no changes.
-# git branch for mediawiki + extensions.
-# This guide has only been tested with 1_28.
+# git branch for mediawiki + extensions. See intro for supported versions.
# branch names: https://git.wikimedia.org/branches/mediawiki%2Fcore.git
export mw_branch=REL1_28
# main reference:
# https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick
+ DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick curl
if apt-get install -s mediawiki &>/dev/null; then
# mediawiki is packaged in jessie backports.
DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki
# git branch -r
git checkout -f origin/$mw_branch
git clean -ffxd
+# add some librejs support:
+curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
# Get the php libraries wmf uses. Based on:
# https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
if [[ ! -e vendor/.git ]]; then
\$wgRightsIcon = "$mw_RightsIcon";
EOF
</source>
-Settings I recommend which are different than the defaults.
+Settings asked by the gui setup which are different than the install script defaults. They different because the defaults are the most compatible and unobtrusive.
<source lang="bash">
teeu $mwc<<EOF
\$wgPasswordSender = "$mw_email";
\$wgMainCacheType = CACHE_ACCEL;
\$wgEnableUploads = true;
\$wgUseInstantCommons = true;
+\$wgPingback = true;
EOF
</source>
$wgNoFollowLinks = false;
# Allow user customization.
$wgAllowUserCss = true;
-
# use imagemagick over GD
$wgUseImageMagick = true;
+# manual says this is not production ready, I think that is mostly
+# because they are using MobileFrontend extension instead, which gives
+# an even cleaner more minimal view, I plan to try setting it up
+# sometime but this seems like a very nice improvement for now.
+$wgVectorResponsive = true;
EOF
''' Extensions with no configuration needed '''
-{| class="wikitable"
+{| class="writable"
! Name
! Description
|-
| [[mediawikiwiki:Extension:Cite|Extension:Cite]]
- | Have references in footnotes.
+ | Have references in footnotes*
|-
| [[mediawikiwiki:Extension:CiteThisPage|Extension:CiteThisPage]]
- | Ability to generate citations to pages in a variety of styles.
+ | Ability to generate citations to pages in a variety of styles*
+ |-
+ | [[mediawikiwiki:CheckUser|Extension:CheckUser]]
+ | Get ip addresses from inside mediawiki so you can ban users''
|-
| [[mediawikiwiki:Extension:CSS|Extension:CSS]]
| Allows CSS stylesheets to be included in specific articles
| Notification subsystem for usage by other extensions
|-
| [[mediawikiwiki:Extension:Gadgets|Extension:Gadgets]]
- | UI extension system for users
+ | UI extension system for users*
|-
| [[mediawikiwiki:Extension:ImageMap|Extension:ImageMap]]
- | Links for a region of an image
+ | Links for a region of an image*
|-
| [[mediawikiwiki:Extension:Interwiki|Extension:Interwiki]]
- | Tool for nice links to other wikis
+ | Tool for nice links to other wikis*
|-
| [[mediawikiwiki:Extension:News|Extension:News]]
| Embed or rss recent changes
|-
| [[mediawikiwiki:Extension:Nuke|Extension:Nuke]]
- | Mass delete of pages, in the case of spam
+ | Mass delete of pages, in the case of spam*
|-
| [[mediawikiwiki:Extension:ParserFunctions|Extension:ParserFunctions]]
- | Useful for templates
+ | Useful for templates*
|-
| [[mediawikiwiki:Extension:Poem|Extension:Poem]]
- | Useful for formatting things various ways
+ | Useful for formatting things various ways*
+ |-
+ | [[mediawikiwiki:Extension:Renameuser|Extension:Renameuser]]
+ | Allows bureaucrats to rename user accounts*
|-
| [[mediawikiwiki:Extension:SyntaxHighlight_GeSHi|Extension:SyntaxHighlight_GeSHi]]
- | Source code highlighting
+ | Source code highlighting*
|-
| [[mediawikiwiki:Extension:Variables|Extension:Variables]]
| Define per-page variables
|}
+<nowiki>*</nowiki> = Comes with the MediaWiki default download.
+
<source lang="bash">
-mw-ext Cite CiteThisPage CSS Echo Gadgets ImageMap Interwiki News \
- Nuke ParserFunctions Poem SyntaxHighlight_GeSHi Variables
+mw-ext Cite CiteThisPage CheckUser CSS Echo Gadgets ImageMap Interwiki News \
+ Nuke ParserFunctions Poem Renameuser SyntaxHighlight_GeSHi Variables
</source>
</source>
-''' [[mediawikiwiki:CheckUser|Extension:CheckUser]]: Get ip addresses from inside mediawiki so you can ban users'''
-
-On <= 1.27, requires special install steps or we can get into a bad state. Add a sleep like the default of update.php to avoid errors.
-<source lang="bash">
-mw-ext CheckUser
-if [[ -e $mw/extensions/CheckUser/install.php ]]; then
- sudo -u $apache_user php $mw/extensions/CheckUser/install.php; sleep 1
-fi
-</source>
-
-
'''[[mediawikiwiki:Extension:Wikidiff2|Extension:Wikidiff2]]: Faster and international character supported page diffs'''
I used packaged version since this is a c++ and probably not very tied to the Mediawiki version. This isn't packaged in fedora, haven't gotten around to testing and adding the code to compile it for fedora.
''' [[mediawikiwiki:Extension:SpamBlacklist|Extension:SpamBlacklist]]: Import/create IP blacklists, mainly for spam'''
+Comes with MediaWiki.
+
<source lang="bash">
mw-ext SpamBlacklist
if ! grep -F '$wgSpamBlacklistFiles = array(' $mwc &>/dev/null; then
''' [[mediawikiwiki:Extension:TitleBlacklist|Extension:TitleBlacklist]]: Anti-spam '''
+Comes with Mediawiki.
+
<source lang="bash">
mw-ext TitleBlacklist
if ! grep -F '$wgTitleBlacklistSources = array(' $mwc &>/dev/null; then
''' [[mediawikiwiki:Extension:WikiEditor|Extension:WikiEditor]]: Editing box extras and a fast preview tab '''
+Comes with MediaWiki.
+
<source lang="bash">
mw-ext WikiEditor
teeu $mwc <<'EOF'
EOF
</source>
-'''[[mediawikiwiki:Extension:ConfirmEdit|Extension:ConfirmEdit]]: Custom Captcha'''
+'''[[mediawikiwiki:Extension:ConfirmEdit|Extension:ConfirmEdit]]: Custom Captcha.'''
-Uses captchaArray defined in mw_vars.
+Uses captchaArray defined in mw_vars. Comes with MediaWiki.
<source lang="bash">
mw-ext ConfirmEdit
dd of=$s<<'EOF'
#!/bin/bash
source ~/mw_vars
-cd $mw
-for dir in extensions/* skins/* $mw; do
- [[ -d $dir ]] || continue
+update() {
+ dir=$1
+ cd $mw
+ [[ -d $dir ]] || return 1
cd $dir
branch=$(git describe --all)
branch=${branch#remotes/}
git fetch --all -q
new_head=$(git rev-parse $branch)
log=$(git log HEAD..$new_head)
- if [[ $log ]]; then
- pwd
- echo "$log"
+ if [[ ! $log ]]; then
+ return 1
fi
- git checkout -q $new_head
+ pwd
+ echo "$log"
+ git checkout -qf $new_head
cd $mw
+ return 0
+}
+for dir in extensions/* skins/* vendor; do
+ update "$dir" ||:
done
+if update .; then
+ curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
+fi
php $mw/maintenance/update.php -q --quick
EOF
Here are brief descriptions of extensions that are part of distributions and why they were rejected for this wiki.
{| class="wikitable"
+ |+
+ | '''Footnote''' || deprecated in newer versions
|+
| '''InputBox''' || Add html forms to pages. Can't imagine using it. Would install if I did.
|+
- | '''Pdfhandler''' || Gallery of pages from a pdf file. Can't imagine using it. Would install if I did.
+ | '''LocalisationUpdate'''|| update localization only. I'm fine updating all of mediawiki, there aren't many updates.
|+
- | '''Footnote''' || deprecated in newer versions
+ | '''NewestPages''' || A page creation history that doesn't expire like recent-changes. Meh
|+
| '''NewUserNotif''' || Send me a notification when a user registers. Seems like an excessive notification.
|+
- | '''NewestPages''' || A page creation history that doesn't expire like recent-changes. Meh
+ | '''Openid''' || Poor UI. 2 pages & 2 links <login> <login with openid> which is confusing & ugly.
+ |+
+ | '''Pdfhandler''' || Gallery of pages from a pdf file. Can't imagine using it. Would install if I did.
|+
| '''RSSReader''' || Embed an rss feed. Can't imagine using it. Would install if I did.
|+
- | '''Openid''' || Poor UI. 2 pages & 2 links <login> <login with openid> which is confusing & ugly.
+ | '''Semantic''' || Seems like a lot of trouble around analyzing kinds of data which my wiki will not have.
|+
| '''Validator''' || dependency of of semantic
|+
- | '''Semantic''' || Seems like a lot of trouble around analyzing kinds of data which my wiki will not have.
- |+
- | '''wikicalendar''' || Make a calendar of events etc. Can't imagine using it. Would install if I did.
|}
== Misc Notes ==
== todo list for this page ==
-* Check if there are any new default extensions 1.28 which I haven't evaluated.
-* Test for any new config values set by the 1.28 gui install method.
* Get Visual editor extension.
* Don't require registration for edits
# main reference:
# https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Ubuntu
apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick
+ DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick curl
if apt-get install -s mediawiki &>/dev/null; then
# mediawiki is packaged in jessie backports.
DEBIAN_FRONTEND=noninteractive apt-get -y install php5-apcu mediawiki
# git branch -r
git checkout -f origin/$mw_branch
git clean -ffxd
+# add some librejs support:
+curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
# Get the php libraries wmf uses. Based on:
# https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries
if [[ ! -e vendor/.git ]]; then
\$wgMainCacheType = CACHE_ACCEL;
\$wgEnableUploads = true;
\$wgUseInstantCommons = true;
+\$wgPingback = true;
EOF
# </source>
# <source lang="bash">
$wgNoFollowLinks = false;
# Allow user customization.
$wgAllowUserCss = true;
-
# use imagemagick over GD
$wgUseImageMagick = true;
+# manual says this is not production ready, I think that is mostly
+# because they are using MobileFrontend extension instead, which gives
+# an even cleaner more minimal view, I plan to try setting it up
+# sometime but this seems like a very nice improvement for now.
+$wgVectorResponsive = true;
EOF
git checkout ian-kelling/${mw_branch}-toolbox-in-dropdown
# </source>
# <source lang="bash">
-mw-ext Cite CiteThisPage CSS Echo Gadgets ImageMap Interwiki News \
- Nuke ParserFunctions Poem SyntaxHighlight_GeSHi Variables
+mw-ext Cite CiteThisPage CheckUser CSS Echo Gadgets ImageMap Interwiki News \
+ Nuke ParserFunctions Poem Renameuser SyntaxHighlight_GeSHi Variables
# </source>
# <source lang="bash">
mw-ext AntiSpoof
sudo -u $apache_user php $mw/extensions/AntiSpoof/maintenance/batchAntiSpoof.php
# </source>
# <source lang="bash">
-mw-ext CheckUser
-if [[ -e $mw/extensions/CheckUser/install.php ]]; then
- sudo -u $apache_user php $mw/extensions/CheckUser/install.php; sleep 1
-fi
-# </source>
-# <source lang="bash">
if isdeb; then
apt-get -y install php-wikidiff2
teeu $mwc <<'EOF'
dd of=$s<<'EOF'
#!/bin/bash
source ~/mw_vars
-cd $mw
-for dir in extensions/* skins/* $mw; do
- [[ -d $dir ]] || continue
+update() {
+ dir=$1
+ cd $mw
+ [[ -d $dir ]] || return 1
cd $dir
branch=$(git describe --all)
branch=${branch#remotes/}
git fetch --all -q
new_head=$(git rev-parse $branch)
log=$(git log HEAD..$new_head)
- if [[ $log ]]; then
- pwd
- echo "$log"
+ if [[ ! $log ]]; then
+ return 1
fi
- git checkout -q $new_head
+ pwd
+ echo "$log"
+ git checkout -qf $new_head
cd $mw
+ return 0
+}
+for dir in extensions/* skins/* vendor; do
+ update "$dir" ||:
done
+if update .; then
+ curl "https://iankelling.org/git/?p=mediawiki-librejs-patch;a=blob_plain;f=mediawiki-librejs-patch;hb=HEAD" | bash
+fi
php $mw/maintenance/update.php -q --quick
EOF