<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://links.blauparadiesvogel.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Linkwiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://links.blauparadiesvogel.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/wiki/Special:Contributions/Admin"/>
	<updated>2026-10-13T00:25:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=676</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=676"/>
		<updated>2026-10-12T07:01:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
*[https://www.geeksforgeeks.org/python/user-agent-in-python-request/ User Agent in Python Request] by geeksforgeeks.org&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://linuxvox.com/blog/configuring-the-apache-error-and-access-logs/#piped-logs-for-real-time-processing Configuring the Apache Error and Access Logs: A Comprehensive Guide] by linuxvox.com&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL] by gerd-riesselmann.net&lt;br /&gt;
*[https://www.tecmint.com/install-opcache-in-debian-ubuntu/ How to Install Zend OPcache in Debian and Ubuntu] by tecmint.com&lt;br /&gt;
*[https://oneuptime.com/blog/post/2026-01-15-use-goaccess-web-log-analysis-ubuntu/view How to Use GoAccess for Web Log Analysis on Ubuntu] by oneuptime.com&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=675</id>
		<title>Javascript examples</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=675"/>
		<updated>2026-10-12T05:55:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* add sandbox link to personal links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
It is possible to define [[med:JavaScript|JavaScript]] directly in wiki pages. Depending on what page it is, the JavaScript will then be loaded for some group of users.&lt;br /&gt;
&lt;br /&gt;
If [[med:Extension:Gadgets|Extension:Gadgets]] is installed, these examples can also be made into a gadget, to be loaded only if a user enables it.&lt;br /&gt;
&lt;br /&gt;
[[wde:Hilfe:JavaScript|Hilfe:JavaScript]] lists all the possible pages where JavaScript can be defined in Wiki Aventurica.&lt;br /&gt;
&lt;br /&gt;
Actually in use are the following pages:&lt;br /&gt;
*[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
*[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
*[[wde:MediaWiki:Timeless.js|MediaWiki:Timeless.js]]&lt;br /&gt;
*And the pages linked from [[wde:Spezial:Helferlein|Spezial:Helferlein]]&lt;br /&gt;
&lt;br /&gt;
[[wpen:Wikipedia:User scripts|Wikipedia:User scripts]] links to many examples of user scripts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
When making adjustments with JavaScript, you should remember that users could have deactivated JavaScript in their brower configuration.&lt;br /&gt;
&lt;br /&gt;
If you decide to use JavaScript, knowing [[wpen:jQuery|jQuery]] will probably simplify the code. Tasks typical for MediaWiki can also be done by using MediaWiki functions.&lt;br /&gt;
&lt;br /&gt;
;Manual: [[med:Manual:Interface/JavaScript|Manual:Interface/JavaScript]]&lt;br /&gt;
;Documentation: [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference javascript], [https://api.jquery.com/ jQuery], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw MediaWiki]&lt;br /&gt;
;Selection of elements:&lt;br /&gt;
:by id: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;#element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:by class: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;.element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
;Validator:[https://www.jslint.com/ jslint.com]&lt;br /&gt;
;Debugging: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;console.log( &amp;quot;Test1&amp;quot; );&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code was published on the MediaWiki email list by [[wpen:User:Brion Vibber|User:Brion Vibber]] and [[wpen:User:Krinkle|User:Krinkle]], respectively, as an answer to how JavaScript functions should be implemented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If we haven&#039;t already started loading the module, start loading it:&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;, function() {&lt;br /&gt;
  // Module is loaded, *but* it&#039;s possible the page HTML is not done. Wait&lt;br /&gt;
for it:&lt;br /&gt;
  $( function() {&lt;br /&gt;
    // Now it should be safe to do everything:&lt;br /&gt;
    mw.util.addPortletLink(....);&lt;br /&gt;
  } );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$.when(&lt;br /&gt;
  $.ready,&lt;br /&gt;
  mw.loader.using( [ &#039;mediawiki.util&#039; ] )&lt;br /&gt;
).then(function(){&lt;br /&gt;
  // mw.util.addPortletLink( ... );&lt;br /&gt;
} );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Gadgets==&lt;br /&gt;
Here is a list of gadgets we have been using at Wiki Aventurica:&lt;br /&gt;
&lt;br /&gt;
*[[wpde:Benutzer:TMg/autoFormatter|autoFormatter]]&lt;br /&gt;
*[[wpen:Wikipedia:HotCat|HotCat]]&lt;br /&gt;
*[[commons:MediaWiki:Gadget-rightsfilter.js|LogFilter]]&lt;br /&gt;
*[[wpen:User:DerHexer/revisionjumper|RevisionJumper]]&lt;br /&gt;
*[[wpde:Benutzer:Schnark/js/search++|SearchPlus]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===automatic expansion of all grouped changes in [[Special:RecentChanges]]===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// Auto-Expand all grouped RC/Watchlist entries.&lt;br /&gt;
$(function() {&lt;br /&gt;
  $(&#039;.mw-enhancedchanges-arrow&#039;).click();&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TOC collapsed by default===&lt;br /&gt;
The [[med:TOC|table of contents]] takes up quite some space, better to have it collapsed by default.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/addClass/ addClass]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Search focus on main page===&lt;br /&gt;
When loading the main page of a wiki, people might be looking to search for a page. This function automatically focuses the search bar when loading the main page, saving the users a click.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/focus/ focus]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * when loading the main page, focuses the search bar&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/MediaWiki:Gadget-searchFocus.js&lt;br /&gt;
 * @version 12.11.2013&lt;br /&gt;
 * @author [[wpen:User:Nihiltres]], [[wpen:Krinkle]]&lt;br /&gt;
 */&lt;br /&gt;
if ( mw.config.get( &#039;wgIsMainPage&#039; ) ) {&lt;br /&gt;
  $( function () {&lt;br /&gt;
    $( &#039;#searchInput&#039; ).focus();&lt;br /&gt;
  } );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===moving upload link to personal links===&lt;br /&gt;
In my opinion, the link to [[Special:Upload]] (only available to users who are logged in anyways) should be amoung the personal links.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * move upload link to personal links&lt;br /&gt;
 *&lt;br /&gt;
 * @version 28.09.2015&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$( &amp;quot;#pt-mycontris&amp;quot; ).after( $( &amp;quot;#t-upload&amp;quot; ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===confirmation for rollback===&lt;br /&gt;
This prevents accidental rollbacks by sysops.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * requires confirmation for rollback action&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:MusikAnimal/confirmationRollback.js&lt;br /&gt;
 * @version 30.04.2017&lt;br /&gt;
 * @author [[wpen:User:MusikAnimal]]&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [&#039;mediawiki.util&#039;] ), $.ready).then( function() {&lt;br /&gt;
	$(&amp;quot;.mw-rollback-link&amp;quot;).on(&#039;click&#039;, function(e) {&lt;br /&gt;
		var count = e.target.innerText.match(/\d/) ? e.target.innerText.match(/\d+/)[0] : null,&lt;br /&gt;
			message = &#039;Rollback &#039; + (count ? count + &#039; edits&#039; : &#039;edit&#039;) + &#039; by &#039; + mw.util.getParamValue(&#039;from&#039;,e.target.href) + &#039;?&#039;;&lt;br /&gt;
		if(!confirm(message)) return e.preventDefault();&lt;br /&gt;
	});&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add sandbox link to personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a &amp;quot;sandbox&amp;quot; link to the personal links. This could also be achieved via the [[med:Extension:SandboxLink|Extension:SandboxLink]].&lt;br /&gt;
&lt;br /&gt;
;used methods:[https://doc.wikimedia.org/mediawiki-core/master/js/module-mediawiki.util.html#.addPortletLink mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/module-mediawiki.util.html#.addPortletLink mw.util.addPortletLink]&lt;br /&gt;
&lt;br /&gt;
;parameters:&lt;br /&gt;
*first parameter: To which &amp;quot;portlet&amp;quot; the link will be added, in this case &amp;lt;code&amp;gt;&#039;p-personal&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*second parameter: URL to which the link will point to, in this case the subpage &amp;quot;sandbox&amp;quot; of the current user.&lt;br /&gt;
*third parameter: The text displayed by the link, in this case &amp;quot;My Sandbox&amp;quot;.&lt;br /&gt;
*fourth parameter: ID of the link in the html code, in this case &amp;lt;code&amp;gt;&#039;pt-mysandbox&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
*fifth parameter: Tooltip for the link, in this case &amp;quot;My little Sandbox&amp;quot;&lt;br /&gt;
*sixth parameter: Accesskey, or &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;&lt;br /&gt;
*seventh parameter: ID of the link, after which the new link will be inserted, in this case &amp;lt;code&amp;gt;&#039;#pt-mytalk&#039;&amp;lt;/code&amp;gt;. If none given, the link will be added after the last existing one.&lt;br /&gt;
&lt;br /&gt;
;Used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 12.10.2026, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, params, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	params = {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	title = &#039;Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title, params );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add purge link to page tools===&lt;br /&gt;
&lt;br /&gt;
This function adds a purge link to the page tools, giving users the option to refresh the server cache of the page with one click. This function should not work for bots, see [[med:Manual:Purge|Manual:Purge]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*jQuery: [https://api.jquery.com/length/ length]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===adding links to [[Special:WhatLinksHere]]===&lt;br /&gt;
&lt;br /&gt;
Adds &amp;quot;delete&amp;quot; and &amp;quot;history&amp;quot; links to the pages linked in [[Special:WhatLinksHere]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Adds &amp;quot;hist&amp;quot; and &amp;quot;delete&amp;quot; link to [[Special:WhatLinksHere]]&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Special:WhatLinksHere_action_links&lt;br /&gt;
 * @version 03.04.2018, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( &#039;#mw-whatlinkshere-list li&#039; ).each( function() {&lt;br /&gt;
  var url = mw.config.get( &#039;wgScript&#039; ) + &#039;?title=&#039; + encodeURIComponent( $( &#039;a:first&#039;, this ).text() ) + &#039;&amp;amp;action=&#039;;&lt;br /&gt;
  //if #ca-delete exists, user should be allowed to delete&lt;br /&gt;
  if ($( &amp;quot;#ca-delete&amp;quot; ).length) {&lt;br /&gt;
    $( &#039;.mw-whatlinkshere-tools a:last&#039;, this ).after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;delete&#039; ).text( &#039;delete&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
  }&lt;br /&gt;
  $( &#039;.mw-whatlinkshere-tools a:last&#039;, this )&lt;br /&gt;
    .after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;history&#039; ).text( &#039;history&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Special:AllPages]] and [[Special:PrefixIndex]] in one column===&lt;br /&gt;
&lt;br /&gt;
The lists on [[Special:AllPages]] and [[Special:PrefixIndex]] are displayed in three columns, which can be confusing. This script combines the three columns into one, numbering the items in the process. It also numbers the list on [[Special:Whatlinkshere]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variable &amp;quot;wgCanonicalSpecialPageName&amp;quot;&lt;br /&gt;
*jQuery: [https://api.jquery.com/append/ append], [https://api.jquery.com/children/ children], [https://api.jquery.com/appendTo/ appendTo], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/length/ length], [https://api.jquery.com/before/ before], [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-OneColumn.js|Gadget-OneColumn.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/OneColumn]]&lt;br /&gt;
&lt;br /&gt;
===customization of edit toolbar===&lt;br /&gt;
&lt;br /&gt;
This function customizes the edit toolbar, see the manual at [[med:Extension:WikiEditor/Toolbar_customization|Extension:WikiEditor/Toolbar_customization]].&lt;br /&gt;
&lt;br /&gt;
The signature button could also be controlled by [[med:Manual:$wgExtraSignatureNamespaces|$wgExtraSignatureNamespaces]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/ToolbarCustomization]]&lt;br /&gt;
&lt;br /&gt;
===defaultsummaries===&lt;br /&gt;
&lt;br /&gt;
This function adds selection boxes for default edit summaries.&lt;br /&gt;
&lt;br /&gt;
;code:[[/DefaultSummaries]]&lt;br /&gt;
&lt;br /&gt;
===userlinks and userinfos===&lt;br /&gt;
These two functions create two rows with links and information beneath the user name on user pages:&lt;br /&gt;
#userlinks: Adds a row with links to special pages containing information in regard to the user account; if these links exist by default somewhere else in the UI, they are moved.&lt;br /&gt;
#userinfo: Adds a row with information about the user groups, the number of edits, and the age of the user account.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variablen (&amp;quot;wgNamespaceNumber&amp;quot;, &amp;quot;wgTitle&amp;quot; und &amp;quot;wgPageName&amp;quot;), [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/append/ append], [https://api.jquery.com/contents/ contents], [https://api.jquery.com/replaceWith/ replaceWith], [https://api.jquery.com/length/ length], [https://api.jquery.com/remove/ remove]&lt;br /&gt;
*[[wpen:JavaScript|JavaScript]]: [http://wiki.selfhtml.org/wiki/JavaScript/Variable Variablen], [http://www.w3schools.com/jsref/jsref_regexp_test.asp test()]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Userlinks and Userinfos]]&lt;br /&gt;
&lt;br /&gt;
===hide sidebar while editing===&lt;br /&gt;
This function hides any sidebar while the user is editing a page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ExpandEdit.js|MediaWiki:Gadget-ExpandEdit.js]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Hide sidebar while editing&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Zellfaze/expandEdit.js&lt;br /&gt;
 * @author [[wpen:User:Zellfaze]] on https://en.wikipedia.org/&lt;br /&gt;
 * @version 30.09.2015, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
if (jQuery(&#039;#wpTextbox1&#039;).length) {&lt;br /&gt;
  if ( mw.config.get( &#039;skin&#039; ) === &#039;monobook&#039; ) {&lt;br /&gt;
    jQuery(&#039;#p-search&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  jQuery(&#039;#panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#p-logo&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#content&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-head-base&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#left-navigation&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===better diffs===&lt;br /&gt;
&lt;br /&gt;
This function cleans up [[wpen:diff|diffs]] by removing markings of content which was not changed.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-CleanDiff.js|MediaWiki:Gadget-CleanDiff.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/CleanDiff]]&lt;br /&gt;
&lt;br /&gt;
===weekday on [[Special:RecentChanges]]===&lt;br /&gt;
&lt;br /&gt;
This function adds the day of the week on [[Special:RecentChanges]] and [[Special:Watchlist]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-Wochentag.js|MediaWiki:Gadget-Wochentag.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Weekday]]&lt;br /&gt;
&lt;br /&gt;
===live clock in personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a live clock at the end of the personal links.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-UTCLiveClock.js|MediaWiki:Gadget-UTCLiveClock.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/LiveClock]]&lt;br /&gt;
&lt;br /&gt;
===add debug links===&lt;br /&gt;
&lt;br /&gt;
This function adds some toolbox links useful for debugging.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-DebugLinks.js|MediaWiki:Gadget-DebugLinks.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a toolbox link to display the current page with MediaWiki message names replacing their text&lt;br /&gt;
 * Add a toolbox link to reload the current page with debug mode enabled&lt;br /&gt;
 * &lt;br /&gt;
 * @source [[wpen:MediaWiki:Gadget-ShowMessageNames.js]] and [[wpen:MediaWiki:Gadget-DebugMode.js]]&lt;br /&gt;
 * @version 05.04.2018&lt;br /&gt;
 * @author [[wpen:User:Edokter]] on https://en.wikipedia.org/&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
mw.loader.using( &#039;mediawiki.util&#039; ).then( function () {&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;uselang=qqx&#039;,&lt;br /&gt;
    &#039;Systemmeldungen&#039;,&lt;br /&gt;
    &#039;t-messagenames&#039;,&lt;br /&gt;
    &#039;Shows the names of the system messages used on this page&#039;&lt;br /&gt;
  );&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;debug=true&#039;,&lt;br /&gt;
    &#039;Debug-Modus&#039;,&lt;br /&gt;
    &#039;t-debugmode&#039;,&lt;br /&gt;
    &#039;Loads the current page in debug mode&#039;&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===show page creation stats===&lt;br /&gt;
&lt;br /&gt;
This function reads page creation stats from the html code of the current page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ShowPageStats.js|MediaWiki:Gadget-ShowPageStats.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Simple script to scrape a page&#039;s html comments (looking for &#039;served by&#039;, &#039;newpp&#039; and &#039;Transclusion expansion time report&#039;).&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Splarka/showcomments.js&lt;br /&gt;
 * @version 20.05.2024, adapted for Wiki Aventurica&lt;br /&gt;
 * @author [[wpen:User:Splarka]] on https://en.wikipedia.org&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$(function() {&lt;br /&gt;
  mw.util.addPortletLink(&#039;p-pagemisc&#039;,&#039;#&#039;,&#039;Seitenerstellungs-Statistik&#039;,&#039;t-sps&#039;);&lt;br /&gt;
  $(&amp;quot;#t-sps&amp;quot;).on(&amp;quot;click&amp;quot;, function(){&lt;br /&gt;
      alert(dumpComments(document.getElementsByTagName(&amp;quot;body&amp;quot;)[0]));&lt;br /&gt;
  });&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
function dumpComments(obj) {&lt;br /&gt;
  var childs = 0; var txt = &#039;&#039;;&lt;br /&gt;
  if(obj.nodeType == 8 &amp;amp;&amp;amp; obj.nodeValue.search(/(NewPP|Served by|Transclusion expansion time report)/) != -1) { &lt;br /&gt;
    txt += obj.nodeValue;&lt;br /&gt;
  }&lt;br /&gt;
  while(obj.childNodes[childs]) {&lt;br /&gt;
    txt += dumpComments(obj.childNodes[childs]);&lt;br /&gt;
    childs++;&lt;br /&gt;
  }&lt;br /&gt;
  return txt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===remove elements from pages===&lt;br /&gt;
&lt;br /&gt;
This removes the first element of the infobox (in Wiki Aventurica a line repeating the page title) and the heading &amp;quot;Kurzbeschreibung&amp;quot; (in Wiki Aventurica, different to Wikipedia, containing the first block of text).&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*jQuery: [https://api.jquery.com/find/ find], [https://api.jquery.com/filter/ filter], [https://api.jquery.com/first-selector/ first-selector], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/parent/ parent]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-MinimalDesign.js|MediaWiki:Gadget-MinimalDesign.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$( &amp;quot;table.infobox&amp;quot; ).find( &amp;quot;tr&amp;quot; ).filter( &amp;quot;:first&amp;quot; ).remove(); //Überschrift der Infoboxen entfernen&lt;br /&gt;
$( &amp;quot;#Kurzbeschreibung&amp;quot; ).parent().remove(); //Überschrift &amp;quot;Kurzbeschreibung&amp;quot; entfernen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=674</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=674"/>
		<updated>2026-10-12T05:52:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 12.10.2026, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, params, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	params = {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	title = &#039;Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title, params );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=673</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=673"/>
		<updated>2026-10-12T05:49:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, params, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	params = {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	title = &#039;Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title, params );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=672</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=672"/>
		<updated>2026-10-12T05:45:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = &#039;Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=671</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=671"/>
		<updated>2026-10-12T05:43:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new URL( title.getUrl() );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url.href,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=670</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=670"/>
		<updated>2026-10-12T05:42:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new URL( title.getUrl() );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=669</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=669"/>
		<updated>2026-10-12T05:01:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = &#039;Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=668</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=668"/>
		<updated>2026-10-12T05:01:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=667</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=667"/>
		<updated>2026-10-12T05:00:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; . conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=666</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=666"/>
		<updated>2026-10-12T04:58:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function ( mw, $ ) {&lt;br /&gt;
	$( function () {&lt;br /&gt;
		var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
		// Customize/Translate this to your needs&lt;br /&gt;
		conf = {&lt;br /&gt;
			subpageName: &#039;sandbox&#039;,&lt;br /&gt;
			portletLabel: &#039;Sandbox&#039;,&lt;br /&gt;
			portletTooltip: &#039;Go to your sandbox&#039;,&lt;br /&gt;
			editintroPagename: &#039;Template:User_sandbox&#039;,&lt;br /&gt;
			preloadPagename: &#039;Template:User_sandbox/preload&#039;&lt;br /&gt;
		};&lt;br /&gt;
		// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
		// Use Special:MyPage (as opposed to mw.user.getName()) so that it&lt;br /&gt;
		// works for logged-out users as well.&lt;br /&gt;
		title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
		url = new mw.Uri( title.getUrl() );&lt;br /&gt;
		url.extend( {&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			redlink: 1,&lt;br /&gt;
			editintro: new mw.Title( conf.editintroPagename ),&lt;br /&gt;
			preload: new mw.Title( conf.preloadPagename )&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		mw.util.addPortletLink(&lt;br /&gt;
			&#039;p-personal&#039;,&lt;br /&gt;
			url,&lt;br /&gt;
			conf.portletLabel,&lt;br /&gt;
			&#039;pt-sandbox&#039;,&lt;br /&gt;
			conf.portletTooltip,&lt;br /&gt;
			null,&lt;br /&gt;
			&#039;#pt-preferences&#039;&lt;br /&gt;
		);&lt;br /&gt;
	} );&lt;br /&gt;
}( mediaWiki, jQuery ) );&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=665</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=665"/>
		<updated>2026-10-12T04:56:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new mw.Uri( title.getUrl() );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=664</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=664"/>
		<updated>2026-10-12T04:55:42Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = &#039;//Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = new URL( location.href );&lt;br /&gt;
&lt;br /&gt;
	/*url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );*/&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=663</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=663"/>
		<updated>2026-10-12T04:54:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = &#039;//Special:MyPage/&#039; + conf.subpageName;&lt;br /&gt;
&lt;br /&gt;
	url = new URL( title, location.href );&lt;br /&gt;
&lt;br /&gt;
	/*url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );*/&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=662</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=662"/>
		<updated>2026-10-12T04:50:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	url = new URL( &#039;https://Special:MyPage/&#039; + conf.subpageName, location.href )&lt;br /&gt;
&lt;br /&gt;
	/*url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );*/&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=661</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=661"/>
		<updated>2026-10-12T04:50:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	url = new URL( &#039;//Special:MyPage/&#039; + conf.subpageName, location.href )&lt;br /&gt;
&lt;br /&gt;
	/*url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );*/&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=660</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=660"/>
		<updated>2026-10-12T04:48:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	url = new URL( &#039;Special:MyPage/&#039; + conf.subpageName, location.href )&lt;br /&gt;
&lt;br /&gt;
	/*url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );*/&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=659</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=659"/>
		<updated>2026-10-12T04:48:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	url = new URL( &#039;Special:MyPage/&#039; + conf.subpageName, location.href )&lt;br /&gt;
&lt;br /&gt;
	url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=658</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=658"/>
		<updated>2026-10-12T04:44:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = mw.util.getUrl( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new mw.Uri( title );&lt;br /&gt;
		url.extend( {&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			redlink: 1&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=657</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=657"/>
		<updated>2026-10-12T04:42:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=656</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=656"/>
		<updated>2026-10-12T04:39:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new mw.Uri( title.getUrl() );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-personal&#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		conf.portletLabel,&lt;br /&gt;
		&#039;pt-mysandbox&#039;,&lt;br /&gt;
		conf.portletTooltip,&lt;br /&gt;
		null,&lt;br /&gt;
		&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=655</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=655"/>
		<updated>2026-10-12T04:38:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new mw.Uri( title.getUrl() );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=654</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=654"/>
		<updated>2026-10-12T04:37:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = new mw.Uri( title.getUrl() );&lt;br /&gt;
	url.extend( {&lt;br /&gt;
		action: &#039;edit&#039;,&lt;br /&gt;
		redlink: 1&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=653</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=653"/>
		<updated>2026-10-12T04:34:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; . conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=652</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki:Common.js&amp;diff=652"/>
		<updated>2026-10-12T04:33:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=651</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=651"/>
		<updated>2026-10-06T13:00:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could try using other [[#log analysis]] programs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===log analysis===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/c-amie/analog-ce Analog CE]&lt;br /&gt;
|&lt;br /&gt;
|continuation of [[wpen:Analog (program)|Analog]]&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.patrickfrei.ch/webalizer/ Webalizer Xtended]&lt;br /&gt;
|&lt;br /&gt;
|fork of [[wpen:Webalizer|Webalizer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=650</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=650"/>
		<updated>2026-10-06T12:57:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Personal Computer Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could using [[#log analysis]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===log analysis===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/c-amie/analog-ce Analog CE]&lt;br /&gt;
|&lt;br /&gt;
|continuation of [[wpen:Analog (program)|Analog]]&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.patrickfrei.ch/webalizer/ Webalizer Xtended]&lt;br /&gt;
|&lt;br /&gt;
|fork of [[wpen:Webalizer|Webalizer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=649</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=649"/>
		<updated>2026-10-06T12:52:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://linuxvox.com/blog/configuring-the-apache-error-and-access-logs/#piped-logs-for-real-time-processing Configuring the Apache Error and Access Logs: A Comprehensive Guide] by linuxvox.com&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL] by gerd-riesselmann.net&lt;br /&gt;
*[https://www.tecmint.com/install-opcache-in-debian-ubuntu/ How to Install Zend OPcache in Debian and Ubuntu] by tecmint.com&lt;br /&gt;
*[https://oneuptime.com/blog/post/2026-01-15-use-goaccess-web-log-analysis-ubuntu/view How to Use GoAccess for Web Log Analysis on Ubuntu] by oneuptime.com&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=648</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=648"/>
		<updated>2026-10-06T12:51:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could using [[#log analysis]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===log analysis===&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=647</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=647"/>
		<updated>2026-10-06T12:50:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Weblog analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could using [[#Personal Computer Software#log analysis]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===log analysis===&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=646</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=646"/>
		<updated>2026-10-06T12:50:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Personal Computer Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could using [[#Personal Computer Software#log analysis]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Weblog analysis==&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=645</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=645"/>
		<updated>2026-10-06T12:49:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&amp;lt;br&amp;gt;[https://github.com/sapics/ip-location-db IP-location databases]&amp;lt;br&amp;gt;[https://curiouscoding.nl/posts/goaccess-setup/#geoip-database Setting up GeoIP]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
In Plesk, GoAccess is easy to activate:&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; GoAcess&lt;br /&gt;
Then, for every domain:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; GoAcess&lt;br /&gt;
Then define a cron-job: &amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It does lack a geoIP database though, and thus will not display geo-information. Download a mmdb database and edit the conf file (find it with &amp;lt;code&amp;gt;goaccess --dcf&amp;lt;/code&amp;gt;) with this line: &amp;lt;code&amp;gt;geoip-database /path/to/your/database.mmdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this does not work (did not for me thus far), you could using [[#Personal Computer Software#log analysis]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=644</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=644"/>
		<updated>2026-10-06T09:36:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://linuxvox.com/blog/configuring-the-apache-error-and-access-logs/#piped-logs-for-real-time-processing Configuring the Apache Error and Access Logs: A Comprehensive Guide] by linuxvox.com&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL] by gerd-riesselmann.net&lt;br /&gt;
*[https://www.tecmint.com/install-opcache-in-debian-ubuntu/ How to Install Zend OPcache in Debian and Ubuntu] by tecmint.com&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=643</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=643"/>
		<updated>2026-10-06T08:51:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL] by gerd-riesselmann.net&lt;br /&gt;
*[https://www.tecmint.com/install-opcache-in-debian-ubuntu/ How to Install Zend OPcache in Debian and Ubuntu] by tecmint.com&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=642</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=642"/>
		<updated>2026-10-06T08:38:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL] by gerd-riesselmann.net&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=641</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=641"/>
		<updated>2026-10-06T08:37:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;br /&gt;
*[https://www.gerd-riesselmann.net/softwareentwicklung/php-und-utf-8-eine-anleitung-teil-1-mysql/ PHP und UTF-8 - eine Anleitung, Teil 1: MySQL]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=640</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=640"/>
		<updated>2026-10-06T07:58:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&amp;lt;br&amp;gt;[https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files/10943833#10943833 Restore the mysql database from .frm files]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
TODO still need to find out how to activate GeoIP with GoAccess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Statistische Analyse der Webzugriffe: [[wpde:AWStats|AWStats]]&lt;br /&gt;
|&lt;br /&gt;
|[https://kau-boys.de/914/webserver/awstats-und-webalizer-fuer-plesk-aktivieren AWStats aktivieren] [https://support.plesk.com/hc/en-us/articles/12377594744471-How-to-configure-GeoIP-plugin-for-Plesk-AWStats configure GeoIP]&lt;br /&gt;
|Möchte man Statistiken der Zugriffe erstellen, sollte man auf google analytics verzichten (Datenschutz!) und AWStats in Plesk aktivieren.&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; AWStats&lt;br /&gt;
Dies muss dann noch bei jeder domain einzeln aktiviert werden:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; AWStats&lt;br /&gt;
Die Erstellung der Statistiken läuft damit aber noch nicht automatisch, man muss folgendes Kommando per Kommandozeile durchführen oder als CronJob festlegen:&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Alternative ist [[wpde:Analog (Web_Analytics)|Analog]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=639</id>
		<title>Javascript examples</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=639"/>
		<updated>2026-10-06T07:45:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
It is possible to define [[med:JavaScript|JavaScript]] directly in wiki pages. Depending on what page it is, the JavaScript will then be loaded for some group of users.&lt;br /&gt;
&lt;br /&gt;
If [[med:Extension:Gadgets|Extension:Gadgets]] is installed, these examples can also be made into a gadget, to be loaded only if a user enables it.&lt;br /&gt;
&lt;br /&gt;
[[wde:Hilfe:JavaScript|Hilfe:JavaScript]] lists all the possible pages where JavaScript can be defined in Wiki Aventurica.&lt;br /&gt;
&lt;br /&gt;
Actually in use are the following pages:&lt;br /&gt;
*[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
*[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
*[[wde:MediaWiki:Timeless.js|MediaWiki:Timeless.js]]&lt;br /&gt;
*And the pages linked from [[wde:Spezial:Helferlein|Spezial:Helferlein]]&lt;br /&gt;
&lt;br /&gt;
[[wpen:Wikipedia:User scripts|Wikipedia:User scripts]] links to many examples of user scripts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
When making adjustments with JavaScript, you should remember that users could have deactivated JavaScript in their brower configuration.&lt;br /&gt;
&lt;br /&gt;
If you decide to use JavaScript, knowing [[wpen:jQuery|jQuery]] will probably simplify the code. Tasks typical for MediaWiki can also be done by using MediaWiki functions.&lt;br /&gt;
&lt;br /&gt;
;Manual: [[med:Manual:Interface/JavaScript|Manual:Interface/JavaScript]]&lt;br /&gt;
;Documentation: [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference javascript], [https://api.jquery.com/ jQuery], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw MediaWiki]&lt;br /&gt;
;Selection of elements:&lt;br /&gt;
:by id: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;#element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:by class: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;.element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
;Validator:[https://www.jslint.com/ jslint.com]&lt;br /&gt;
;Debugging: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;console.log( &amp;quot;Test1&amp;quot; );&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code was published on the MediaWiki email list by [[wpen:User:Brion Vibber|User:Brion Vibber]] and [[wpen:User:Krinkle|User:Krinkle]], respectively, as an answer to how JavaScript functions should be implemented:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If we haven&#039;t already started loading the module, start loading it:&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;, function() {&lt;br /&gt;
  // Module is loaded, *but* it&#039;s possible the page HTML is not done. Wait&lt;br /&gt;
for it:&lt;br /&gt;
  $( function() {&lt;br /&gt;
    // Now it should be safe to do everything:&lt;br /&gt;
    mw.util.addPortletLink(....);&lt;br /&gt;
  } );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$.when(&lt;br /&gt;
  $.ready,&lt;br /&gt;
  mw.loader.using( [ &#039;mediawiki.util&#039; ] )&lt;br /&gt;
).then(function(){&lt;br /&gt;
  // mw.util.addPortletLink( ... );&lt;br /&gt;
} );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Gadgets==&lt;br /&gt;
Here is a list of gadgets we have been using at Wiki Aventurica:&lt;br /&gt;
&lt;br /&gt;
*[[wpde:Benutzer:TMg/autoFormatter|autoFormatter]]&lt;br /&gt;
*[[wpen:Wikipedia:HotCat|HotCat]]&lt;br /&gt;
*[[commons:MediaWiki:Gadget-rightsfilter.js|LogFilter]]&lt;br /&gt;
*[[wpen:User:DerHexer/revisionjumper|RevisionJumper]]&lt;br /&gt;
*[[wpde:Benutzer:Schnark/js/search++|SearchPlus]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===automatic expansion of all grouped changes in [[Special:RecentChanges]]===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// Auto-Expand all grouped RC/Watchlist entries.&lt;br /&gt;
$(function() {&lt;br /&gt;
  $(&#039;.mw-enhancedchanges-arrow&#039;).click();&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TOC collapsed by default===&lt;br /&gt;
The [[med:TOC|table of contents]] takes up quite some space, better to have it collapsed by default.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/addClass/ addClass]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Search focus on main page===&lt;br /&gt;
When loading the main page of a wiki, people might be looking to search for a page. This function automatically focuses the search bar when loading the main page, saving the users a click.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/focus/ focus]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * when loading the main page, focuses the search bar&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/MediaWiki:Gadget-searchFocus.js&lt;br /&gt;
 * @version 12.11.2013&lt;br /&gt;
 * @author [[wpen:User:Nihiltres]], [[wpen:Krinkle]]&lt;br /&gt;
 */&lt;br /&gt;
if ( mw.config.get( &#039;wgIsMainPage&#039; ) ) {&lt;br /&gt;
  $( function () {&lt;br /&gt;
    $( &#039;#searchInput&#039; ).focus();&lt;br /&gt;
  } );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===moving upload link to personal links===&lt;br /&gt;
In my opinion, the link to [[Special:Upload]] (only available to users who are logged in anyways) should be amoung the personal links.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * move upload link to personal links&lt;br /&gt;
 *&lt;br /&gt;
 * @version 28.09.2015&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$( &amp;quot;#pt-mycontris&amp;quot; ).after( $( &amp;quot;#t-upload&amp;quot; ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===confirmation for rollback===&lt;br /&gt;
This prevents accidental rollbacks by sysops.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * requires confirmation for rollback action&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:MusikAnimal/confirmationRollback.js&lt;br /&gt;
 * @version 30.04.2017&lt;br /&gt;
 * @author [[wpen:User:MusikAnimal]]&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [&#039;mediawiki.util&#039;] ), $.ready).then( function() {&lt;br /&gt;
	$(&amp;quot;.mw-rollback-link&amp;quot;).on(&#039;click&#039;, function(e) {&lt;br /&gt;
		var count = e.target.innerText.match(/\d/) ? e.target.innerText.match(/\d+/)[0] : null,&lt;br /&gt;
			message = &#039;Rollback &#039; + (count ? count + &#039; edits&#039; : &#039;edit&#039;) + &#039; by &#039; + mw.util.getParamValue(&#039;from&#039;,e.target.href) + &#039;?&#039;;&lt;br /&gt;
		if(!confirm(message)) return e.preventDefault();&lt;br /&gt;
	});&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add sandbox link to personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a &amp;quot;sandbox&amp;quot; link to the personal links. This could also be achieved via the [[med:Extension:SandboxLink|Extension:SandboxLink]].&lt;br /&gt;
&lt;br /&gt;
;used methods:[https://doc.wikimedia.org/mediawiki-core/master/js/module-mediawiki.util.html#.addPortletLink mw.util.addPortletLink]&lt;br /&gt;
&lt;br /&gt;
;parameters:&lt;br /&gt;
*first parameter: To which &amp;quot;portlet&amp;quot; the link will be added, in this case &amp;lt;code&amp;gt;&#039;p-personal&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*second parameter: URL to which the link will point to, in this case the subpage &amp;quot;sandbox&amp;quot; of the current user.&lt;br /&gt;
*third parameter: The text displayed by the link, in this case &amp;quot;My Sandbox&amp;quot;.&lt;br /&gt;
*fourth parameter: ID of the link in the html code, in this case &amp;lt;code&amp;gt;&#039;pt-mysandbox&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
*fifth parameter: Tooltip for the link, in this case &amp;quot;My little Sandbox&amp;quot;&lt;br /&gt;
*sixth parameter: Accesskey, or &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;&lt;br /&gt;
*seventh parameter: ID of the link, after which the new link will be inserted, in this case &amp;lt;code&amp;gt;&#039;#pt-mytalk&#039;&amp;lt;/code&amp;gt;. If none given, the link will be added after the last existing one.&lt;br /&gt;
&lt;br /&gt;
;Used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add purge link to page tools===&lt;br /&gt;
&lt;br /&gt;
This function adds a purge link to the page tools, giving users the option to refresh the server cache of the page with one click. This function should not work for bots, see [[med:Manual:Purge|Manual:Purge]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*jQuery: [https://api.jquery.com/length/ length]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===adding links to [[Special:WhatLinksHere]]===&lt;br /&gt;
&lt;br /&gt;
Adds &amp;quot;delete&amp;quot; and &amp;quot;history&amp;quot; links to the pages linked in [[Special:WhatLinksHere]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Adds &amp;quot;hist&amp;quot; and &amp;quot;delete&amp;quot; link to [[Special:WhatLinksHere]]&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Special:WhatLinksHere_action_links&lt;br /&gt;
 * @version 03.04.2018, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( &#039;#mw-whatlinkshere-list li&#039; ).each( function() {&lt;br /&gt;
  var url = mw.config.get( &#039;wgScript&#039; ) + &#039;?title=&#039; + encodeURIComponent( $( &#039;a:first&#039;, this ).text() ) + &#039;&amp;amp;action=&#039;;&lt;br /&gt;
  //if #ca-delete exists, user should be allowed to delete&lt;br /&gt;
  if ($( &amp;quot;#ca-delete&amp;quot; ).length) {&lt;br /&gt;
    $( &#039;.mw-whatlinkshere-tools a:last&#039;, this ).after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;delete&#039; ).text( &#039;delete&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
  }&lt;br /&gt;
  $( &#039;.mw-whatlinkshere-tools a:last&#039;, this )&lt;br /&gt;
    .after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;history&#039; ).text( &#039;history&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Special:AllPages]] and [[Special:PrefixIndex]] in one column===&lt;br /&gt;
&lt;br /&gt;
The lists on [[Special:AllPages]] and [[Special:PrefixIndex]] are displayed in three columns, which can be confusing. This script combines the three columns into one, numbering the items in the process. It also numbers the list on [[Special:Whatlinkshere]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variable &amp;quot;wgCanonicalSpecialPageName&amp;quot;&lt;br /&gt;
*jQuery: [https://api.jquery.com/append/ append], [https://api.jquery.com/children/ children], [https://api.jquery.com/appendTo/ appendTo], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/length/ length], [https://api.jquery.com/before/ before], [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-OneColumn.js|Gadget-OneColumn.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/OneColumn]]&lt;br /&gt;
&lt;br /&gt;
===customization of edit toolbar===&lt;br /&gt;
&lt;br /&gt;
This function customizes the edit toolbar, see the manual at [[med:Extension:WikiEditor/Toolbar_customization|Extension:WikiEditor/Toolbar_customization]].&lt;br /&gt;
&lt;br /&gt;
The signature button could also be controlled by [[med:Manual:$wgExtraSignatureNamespaces|$wgExtraSignatureNamespaces]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/ToolbarCustomization]]&lt;br /&gt;
&lt;br /&gt;
===defaultsummaries===&lt;br /&gt;
&lt;br /&gt;
This function adds selection boxes for default edit summaries.&lt;br /&gt;
&lt;br /&gt;
;code:[[/DefaultSummaries]]&lt;br /&gt;
&lt;br /&gt;
===userlinks and userinfos===&lt;br /&gt;
These two functions create two rows with links and information beneath the user name on user pages:&lt;br /&gt;
#userlinks: Adds a row with links to special pages containing information in regard to the user account; if these links exist by default somewhere else in the UI, they are moved.&lt;br /&gt;
#userinfo: Adds a row with information about the user groups, the number of edits, and the age of the user account.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variablen (&amp;quot;wgNamespaceNumber&amp;quot;, &amp;quot;wgTitle&amp;quot; und &amp;quot;wgPageName&amp;quot;), [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/append/ append], [https://api.jquery.com/contents/ contents], [https://api.jquery.com/replaceWith/ replaceWith], [https://api.jquery.com/length/ length], [https://api.jquery.com/remove/ remove]&lt;br /&gt;
*[[wpen:JavaScript|JavaScript]]: [http://wiki.selfhtml.org/wiki/JavaScript/Variable Variablen], [http://www.w3schools.com/jsref/jsref_regexp_test.asp test()]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Userlinks and Userinfos]]&lt;br /&gt;
&lt;br /&gt;
===hide sidebar while editing===&lt;br /&gt;
This function hides any sidebar while the user is editing a page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ExpandEdit.js|MediaWiki:Gadget-ExpandEdit.js]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Hide sidebar while editing&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Zellfaze/expandEdit.js&lt;br /&gt;
 * @author [[wpen:User:Zellfaze]] on https://en.wikipedia.org/&lt;br /&gt;
 * @version 30.09.2015, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
if (jQuery(&#039;#wpTextbox1&#039;).length) {&lt;br /&gt;
  if ( mw.config.get( &#039;skin&#039; ) === &#039;monobook&#039; ) {&lt;br /&gt;
    jQuery(&#039;#p-search&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  jQuery(&#039;#panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#p-logo&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#content&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-head-base&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#left-navigation&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===better diffs===&lt;br /&gt;
&lt;br /&gt;
This function cleans up [[wpen:diff|diffs]] by removing markings of content which was not changed.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-CleanDiff.js|MediaWiki:Gadget-CleanDiff.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/CleanDiff]]&lt;br /&gt;
&lt;br /&gt;
===weekday on [[Special:RecentChanges]]===&lt;br /&gt;
&lt;br /&gt;
This function adds the day of the week on [[Special:RecentChanges]] and [[Special:Watchlist]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-Wochentag.js|MediaWiki:Gadget-Wochentag.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Weekday]]&lt;br /&gt;
&lt;br /&gt;
===live clock in personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a live clock at the end of the personal links.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-UTCLiveClock.js|MediaWiki:Gadget-UTCLiveClock.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/LiveClock]]&lt;br /&gt;
&lt;br /&gt;
===add debug links===&lt;br /&gt;
&lt;br /&gt;
This function adds some toolbox links useful for debugging.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-DebugLinks.js|MediaWiki:Gadget-DebugLinks.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a toolbox link to display the current page with MediaWiki message names replacing their text&lt;br /&gt;
 * Add a toolbox link to reload the current page with debug mode enabled&lt;br /&gt;
 * &lt;br /&gt;
 * @source [[wpen:MediaWiki:Gadget-ShowMessageNames.js]] and [[wpen:MediaWiki:Gadget-DebugMode.js]]&lt;br /&gt;
 * @version 05.04.2018&lt;br /&gt;
 * @author [[wpen:User:Edokter]] on https://en.wikipedia.org/&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
mw.loader.using( &#039;mediawiki.util&#039; ).then( function () {&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;uselang=qqx&#039;,&lt;br /&gt;
    &#039;Systemmeldungen&#039;,&lt;br /&gt;
    &#039;t-messagenames&#039;,&lt;br /&gt;
    &#039;Shows the names of the system messages used on this page&#039;&lt;br /&gt;
  );&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;debug=true&#039;,&lt;br /&gt;
    &#039;Debug-Modus&#039;,&lt;br /&gt;
    &#039;t-debugmode&#039;,&lt;br /&gt;
    &#039;Loads the current page in debug mode&#039;&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===show page creation stats===&lt;br /&gt;
&lt;br /&gt;
This function reads page creation stats from the html code of the current page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ShowPageStats.js|MediaWiki:Gadget-ShowPageStats.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Simple script to scrape a page&#039;s html comments (looking for &#039;served by&#039;, &#039;newpp&#039; and &#039;Transclusion expansion time report&#039;).&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Splarka/showcomments.js&lt;br /&gt;
 * @version 20.05.2024, adapted for Wiki Aventurica&lt;br /&gt;
 * @author [[wpen:User:Splarka]] on https://en.wikipedia.org&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$(function() {&lt;br /&gt;
  mw.util.addPortletLink(&#039;p-pagemisc&#039;,&#039;#&#039;,&#039;Seitenerstellungs-Statistik&#039;,&#039;t-sps&#039;);&lt;br /&gt;
  $(&amp;quot;#t-sps&amp;quot;).on(&amp;quot;click&amp;quot;, function(){&lt;br /&gt;
      alert(dumpComments(document.getElementsByTagName(&amp;quot;body&amp;quot;)[0]));&lt;br /&gt;
  });&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
function dumpComments(obj) {&lt;br /&gt;
  var childs = 0; var txt = &#039;&#039;;&lt;br /&gt;
  if(obj.nodeType == 8 &amp;amp;&amp;amp; obj.nodeValue.search(/(NewPP|Served by|Transclusion expansion time report)/) != -1) { &lt;br /&gt;
    txt += obj.nodeValue;&lt;br /&gt;
  }&lt;br /&gt;
  while(obj.childNodes[childs]) {&lt;br /&gt;
    txt += dumpComments(obj.childNodes[childs]);&lt;br /&gt;
    childs++;&lt;br /&gt;
  }&lt;br /&gt;
  return txt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===remove elements from pages===&lt;br /&gt;
&lt;br /&gt;
This removes the first element of the infobox (in Wiki Aventurica a line repeating the page title) and the heading &amp;quot;Kurzbeschreibung&amp;quot; (in Wiki Aventurica, different to Wikipedia, containing the first block of text).&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*jQuery: [https://api.jquery.com/find/ find], [https://api.jquery.com/filter/ filter], [https://api.jquery.com/first-selector/ first-selector], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/parent/ parent]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-MinimalDesign.js|MediaWiki:Gadget-MinimalDesign.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$( &amp;quot;table.infobox&amp;quot; ).find( &amp;quot;tr&amp;quot; ).filter( &amp;quot;:first&amp;quot; ).remove(); //Überschrift der Infoboxen entfernen&lt;br /&gt;
$( &amp;quot;#Kurzbeschreibung&amp;quot; ).parent().remove(); //Überschrift &amp;quot;Kurzbeschreibung&amp;quot; entfernen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=638</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=638"/>
		<updated>2026-10-06T06:17:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/install.fpm.php FastCGI Process Manager (FPM)]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
TODO still need to find out how to activate GeoIP with GoAccess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Statistische Analyse der Webzugriffe: [[wpde:AWStats|AWStats]]&lt;br /&gt;
|&lt;br /&gt;
|[https://kau-boys.de/914/webserver/awstats-und-webalizer-fuer-plesk-aktivieren AWStats aktivieren] [https://support.plesk.com/hc/en-us/articles/12377594744471-How-to-configure-GeoIP-plugin-for-Plesk-AWStats configure GeoIP]&lt;br /&gt;
|Möchte man Statistiken der Zugriffe erstellen, sollte man auf google analytics verzichten (Datenschutz!) und AWStats in Plesk aktivieren.&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; AWStats&lt;br /&gt;
Dies muss dann noch bei jeder domain einzeln aktiviert werden:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; AWStats&lt;br /&gt;
Die Erstellung der Statistiken läuft damit aber noch nicht automatisch, man muss folgendes Kommando per Kommandozeile durchführen oder als CronJob festlegen:&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Alternative ist [[wpde:Analog (Web_Analytics)|Analog]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=637</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=637"/>
		<updated>2026-10-06T06:13:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod_expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
TODO still need to find out how to activate GeoIP with GoAccess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Statistische Analyse der Webzugriffe: [[wpde:AWStats|AWStats]]&lt;br /&gt;
|&lt;br /&gt;
|[https://kau-boys.de/914/webserver/awstats-und-webalizer-fuer-plesk-aktivieren AWStats aktivieren] [https://support.plesk.com/hc/en-us/articles/12377594744471-How-to-configure-GeoIP-plugin-for-Plesk-AWStats configure GeoIP]&lt;br /&gt;
|Möchte man Statistiken der Zugriffe erstellen, sollte man auf google analytics verzichten (Datenschutz!) und AWStats in Plesk aktivieren.&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; AWStats&lt;br /&gt;
Dies muss dann noch bei jeder domain einzeln aktiviert werden:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; AWStats&lt;br /&gt;
Die Erstellung der Statistiken läuft damit aber noch nicht automatisch, man muss folgendes Kommando per Kommandozeile durchführen oder als CronJob festlegen:&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Alternative ist [[wpde:Analog (Web_Analytics)|Analog]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=636</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=636"/>
		<updated>2026-10-06T06:06:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&amp;lt;br&amp;gt;[https://dominia.org/djao/limitipconn.html mod_limitipconn.c]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
TODO still need to find out how to activate GeoIP with GoAccess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Statistische Analyse der Webzugriffe: [[wpde:AWStats|AWStats]]&lt;br /&gt;
|&lt;br /&gt;
|[https://kau-boys.de/914/webserver/awstats-und-webalizer-fuer-plesk-aktivieren AWStats aktivieren] [https://support.plesk.com/hc/en-us/articles/12377594744471-How-to-configure-GeoIP-plugin-for-Plesk-AWStats configure GeoIP]&lt;br /&gt;
|Möchte man Statistiken der Zugriffe erstellen, sollte man auf google analytics verzichten (Datenschutz!) und AWStats in Plesk aktivieren.&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; AWStats&lt;br /&gt;
Dies muss dann noch bei jeder domain einzeln aktiviert werden:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; AWStats&lt;br /&gt;
Die Erstellung der Statistiken läuft damit aber noch nicht automatisch, man muss folgendes Kommando per Kommandozeile durchführen oder als CronJob festlegen:&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Alternative ist [[wpde:Analog (Web_Analytics)|Analog]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=635</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=635"/>
		<updated>2026-10-06T05:50:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/linux-core-dumps.html HowTo: Debug Crashed Linux Application Core Files] by nixCraft&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Anti-spam&amp;diff=634</id>
		<title>Anti-spam</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Anti-spam&amp;diff=634"/>
		<updated>2026-10-06T05:42:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Prevention of Mass Inquiries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page aims at helping administrators of other MediaWikis to combat &#039;&#039;automated&#039;&#039; [[wpen:Spamming|spam]], while minimizing the inconvenience experienced by legitimate users.&lt;br /&gt;
&lt;br /&gt;
It does not cover [[wpen:vandalism|vandalism]], [[wpen:trolling|trolling]] or similar actions by &#039;&#039;human users&#039;&#039;, although some tool mentioned here (especially [[med:Extension:AbuseFilter|Extension:AbuseFilter]]) might help with those too.&lt;br /&gt;
&lt;br /&gt;
[[wde:Hilfe:Anti-Spam|Hilfe:Anti-Spam]] contains an overview of the systems deployed at Wiki Aventurica.&lt;br /&gt;
&lt;br /&gt;
==Type of Wiki==&lt;br /&gt;
Before deciding on anti-spam measures, one needs to consider how open the wiki should be. Should anonymous edits be possible? Who should be able to create new accounts?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
![[med:Localsettings.php|Localsettings.php]]&lt;br /&gt;
|-&lt;br /&gt;
|anonymous users are allowed to edit&lt;br /&gt;
|this is the MediaWiki default; if no anti-spam measures are taken, the wiki will soon be flooded with spam&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|only user accounts are allowed to edit, but account creation can be done anonymously&lt;br /&gt;
|measures against automated account creation are necessary, otherwise spam will be flooded into the wiki via user accounts&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|account creation is restricted to existing users / sysops&lt;br /&gt;
|this configuration prevents spam, but every new user account needs to be created by an existing account&lt;br /&gt;
|account creation restricted to sysops:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
account creation possible for existing users:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;createaccount&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Anti-spam tools==&lt;br /&gt;
&lt;br /&gt;
===Prevention of User Account Creation===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Usage&lt;br /&gt;
!Notes&lt;br /&gt;
!Local pages&lt;br /&gt;
![[med:Localsettings.php|Localsettings.php]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:$wgInvalidUsernameCharacters|Manual:$wgInvalidUsernameCharacters]]&lt;br /&gt;
|prevents creation of accounts with names typical for spammers&lt;br /&gt;
|It is very typical for spambots to include numbers into the username of the accounts they try to create (matching typical behavior of humans faced with choosing an account name), or to write a sentence (using punctuation marks). This variable takes that away; the wiki UI does need to communicate this to the user though, [[MediaWiki:Createacct-helpusername]] is a good place to put a link to a page explaining the rules.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgInvalidUsernameCharacters = &#039;@:&amp;gt;=#€,!?.1234567890&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:$wgMaxNameChars|Manual:$wgMaxNameChars]]&lt;br /&gt;
|prevents creation of accounts with long names&lt;br /&gt;
|In some cases spambots try to create accounts with names that contain their spam message, and thus that name gets very long. This variable restricts the length of the username.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgMaxNameChars = 50;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:$wgAccountCreationThrottle|Manual:$wgAccountCreationThrottle]]&lt;br /&gt;
|prevents creation of too many accounts from one IP&lt;br /&gt;
|If a bot breaks the barriers to account creation, this variable makes sure that it can&#039;t create too many. Against a botnet this only has a very limited effect though.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgAccountCreationThrottle = [ [&lt;br /&gt;
	&#039;count&#039; =&amp;gt; 1,&lt;br /&gt;
	&#039;seconds&#039; =&amp;gt; 86400,&lt;br /&gt;
] ]; #every IP max 1 account per 24 hours&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:ConfirmEdit|Extension:ConfirmEdit]]&lt;br /&gt;
|prevents creation of user accounts by bots&lt;br /&gt;
|This extension can be configured to use a number of modules. Do not bother trying out any but &amp;quot;Turnstile&amp;quot;, because in the age of [[wpen:Large Language Model|LLMs]] the others are broken easily. You will need a user account at [https://www.cloudflare.com/application-services/products/turnstile/ cloudflare] though.&lt;br /&gt;
&lt;br /&gt;
In order to keep the inconvenience for legitimate users to a minimum, it is advisable to only require a captcha during user account creation, and only for users who are not &amp;quot;autoconfirmed&amp;quot;. It is possible to protect other actions too though.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/Turnstile&#039; ]);&lt;br /&gt;
$wgCaptchaClass = MediaWiki\Extension\ConfirmEdit\Turnstile\Turnstile::class;&lt;br /&gt;
$wgTurnstileSiteKey= &#039;&amp;lt;your key here&amp;gt;&#039;;&lt;br /&gt;
$wgTurnstileSecretKey= &#039;&amp;lt;your key here&amp;gt;&#039;;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;edit&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;create&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;sendemail&#039;] = false;&lt;br /&gt;
$wgCaptchaTriggers[&#039;addurl&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;createaccount&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;badlogin&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;badloginperuser&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;contactpage&#039;] = true; #Extension:ContactPage&lt;br /&gt;
$wgCaptchaBadLoginAttempts = 3;&lt;br /&gt;
$wgCaptchaBadLoginExpiration = 3600; // 3600 seconds = 60 minutes&lt;br /&gt;
$wgCaptchaBadLoginPerUserAttempts = 3;&lt;br /&gt;
$wgCaptchaBadLoginPerUserExpiration = 3600; // 3600 seconds = 60 minutes&lt;br /&gt;
$wgRateLimits[&#039;badcaptcha&#039;][&#039;newbie&#039;] = [ 10, 600 ]; // 600 seconds = 10 minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Prevention of Article Editing===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Usage&lt;br /&gt;
!Notes&lt;br /&gt;
!Local pages&lt;br /&gt;
![[med:Localsettings.php|Localsettings.php]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:$wgAutoConfirmCount|Manual:$wgAutoConfirmCount]]&lt;br /&gt;
|prevents new accounts from getting abusable rights instantly&lt;br /&gt;
|This variable configures how many successful edits are needed for the account to be automatically promoted to &amp;quot;autoconfirmed&amp;quot;. Combined with an AbuseFilter which prevents non-&amp;quot;autoconfirmed&amp;quot; accounts adding links, this can reduce spam.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgAutoConfirmCount = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:AbuseFilter|Extension:AbuseFilter]]&lt;br /&gt;
|can be configured to prevent any action&lt;br /&gt;
|This extension is a powerful tool, which will, if configured well, block almost 100% of automated editing spam. It does not contain any default filters though, and thus configuring it falls to the administrator of the wiki.&lt;br /&gt;
|[[Special:AbuseFilter]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;AbuseFilter&#039; );&lt;br /&gt;
$wgAbuseFilterActions[&#039;throttle&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;warn&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;disallow&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;blockautopromote&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;block&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;rangeblock&#039;] = false;&lt;br /&gt;
$wgAbuseFilterActions[&#039;degroup&#039;] = false;&lt;br /&gt;
$wgAbuseFilterActions[&#039;tag&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;showcaptcha&#039;] = true; #Extension:ConfirmEdit&lt;br /&gt;
$wgAbuseFilterEmergencyDisableThreshold[&#039;default&#039;] = 0.50;&lt;br /&gt;
$wgAbuseFilterEmergencyDisableCount[&#039;default&#039;] = 100;&lt;br /&gt;
$wgAbuseFilterLogIPMaxAge = 7 * 24 * 3600;&lt;br /&gt;
$wgAbuseFilterLogPrivateDetailsAccess = true;&lt;br /&gt;
$wgAbuseFilterPrivateDetailsForceReason = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:SpamBlacklist|Extension:SpamBlacklist]]&lt;br /&gt;
|prevents spam links in article content&lt;br /&gt;
|This extension blocks any edit adding links which match a [[wpen:regex|regex]] line in the deny list. Moreover, this extension blocks emails which match [[wpen:regex|regex]] line in the email deny list from being used for the creation of user accounts or the sending of emails.&lt;br /&gt;
|[[MediaWiki:Spam-blacklist]]: deny list&amp;lt;br&amp;gt;[[MediaWiki:Spam-whitelist]]: allow list&amp;lt;br&amp;gt;[[MediaWiki:Email-blacklist]]: deny list for emails&amp;lt;br&amp;gt;[[MediaWiki:Email-whitelist]]: allow list for emails&lt;br /&gt;
|The [https://meta.wikimedia.org/wiki/Spam_blacklist SpamBlacklist] of the MetaWiki is automatically being used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgLogSpamBlacklistHits = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;sboverride&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:SpamRegex|Extension:SpamRegex]]&lt;br /&gt;
|prevents spam in article content&lt;br /&gt;
|This extension blocks any edit adding text which matches a [[wpen:regex|regex]] line in the deny list. Moreover, this extension blocks edit oder move summaries which match a [[wpen:regex|regex]] line in the deny list.&lt;br /&gt;
|[[Special:SpamRegex]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TitleBlacklist|Extension:TitleBlacklist]]&lt;br /&gt;
|prevents spam in article names, file names, user names&lt;br /&gt;
|This extension blocks the creation of pages with names which match a [[wpen:regex|regex]] line in the deny list. Those regex lines can also have attributes specifying when they should deny an action, see [[med:Extension:TitleBlacklist#Usage|Extension:TitleBlacklist#Usage]].&lt;br /&gt;
|[[MediaWiki:Titleblacklist]]: deny list&amp;lt;br&amp;gt;[[MediaWiki:Titlewhitelist]]: allow list&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;TitleBlacklist&#039; );&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;tboverride&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The name of the deny list can be configured:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgTitleBlacklistSources = [&lt;br /&gt;
    [&lt;br /&gt;
         &#039;type&#039; =&amp;gt; &#039;localpage&#039;,&lt;br /&gt;
         &#039;src&#039;  =&amp;gt; &#039;MediaWiki:Title-denylist&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Prevention of Mass Inquiries===&lt;br /&gt;
With the rise of [[wpen:LLM|LLM]]s, texts written by humans became valuable, and thus large botnets now mass request wiki pages, [[med:Help:Special pages|special pages]], revision differences and old revisions of wiki pages, impairing server performance for legitimate users in the process.&lt;br /&gt;
&lt;br /&gt;
There are two ways to combat this:&lt;br /&gt;
#Restrict anonymous viewing of certain special pages, old revisions and revision differences. The requests will still come, but the performance impact will be lowered.&lt;br /&gt;
#Identify and block IP ranges of mass-requesting botnets by using the [[Web_server_administration#Plesk_Extensions|firewall]]. The bot requests originating from blocked IPs will remain unanswered by your server.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Usage&lt;br /&gt;
!Notes&lt;br /&gt;
!Local pages&lt;br /&gt;
![[med:Localsettings.php|Localsettings.php]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Lockdown|Extension:Lockdown]]&lt;br /&gt;
|restricts access to some special pages, actions or namespaces to certain user groups&lt;br /&gt;
|The extension does not block the request, it just prevents the content from being shown. The bot does not get a 403 error, and thus probably will keep requesting pages. Still, it improves the performance of the server.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Lockdown&#039; );&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Mostlinkedtemplates&#039;] = [ &#039;sysop&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Allpages&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Categories&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Recentchangeslinked&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Prefixindex&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Whatlinkshere&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
$wgSpecialPageLockdown[&#039;Wantedpages&#039;] = [ &#039;autoconfirmed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Handling web crawlers#Custom PHP|Handling web crawlers#Custom PHP]]&lt;br /&gt;
|restricts access page diffs&lt;br /&gt;
|This code sends a 403 error to anonymous users requesting a page diff.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgHooks[&#039;MediaWikiPerformAction&#039;][] = function ( $output, $article, $title, $user, $request, $wiki ) {&lt;br /&gt;
	if ( $request-&amp;gt;getVal( &#039;diff&#039; ) &amp;amp;&amp;amp; !$user-&amp;gt;isRegistered() ) {&lt;br /&gt;
		$output-&amp;gt;addWikiTextAsInterface( &amp;quot;&#039;&#039;&#039;You must be logged in to view page diffs.&#039;&#039;&#039;&amp;quot; );&lt;br /&gt;
		$output-&amp;gt;setStatusCode( 403 );&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Cleaning up===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tool&lt;br /&gt;
!Usage&lt;br /&gt;
!Notes&lt;br /&gt;
!Local pages&lt;br /&gt;
![[med:Localsettings.php|Localsettings.php]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:RevisionDelete|Manual:RevisionDelete]]&lt;br /&gt;
|deletion of page revisions&lt;br /&gt;
|The revisions of existing pages which got flooded with spam can be deleted by users who are in a group which has this permission.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;deleterevision&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Nuke|Extension:Nuke]]&lt;br /&gt;
|mass deletion of pages&lt;br /&gt;
|If a wiki got flooded by spam, and appropriate preventive measures have been taken, this extension enables sysops to clean up the mess. It does not help though if already existing pages were edited by the bots.&lt;br /&gt;
|[[Special:Nuke]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:User Merge and Delete|Extension:User Merge and Delete]]&lt;br /&gt;
|deletion of user accounts&lt;br /&gt;
|This extension enables users with the &amp;quot;usermerge&amp;quot; permission to delete user accounts by merging them with another account. Simply create [[User:Spam]] and merge all the accounts created by spambots into it.&amp;lt;br&amp;gt;It is advisable to restrict this permission to bureaucrats.&lt;br /&gt;
|[[Special:UserMerge]]&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;UserMerge&#039; );&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;usermerge&#039;] = true;&lt;br /&gt;
$wgUserMergeProtectedGroups = [ &#039;sysop&#039; ]; #optional - default is &#039;sysop&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
*[[med:Manual:Combating spam|Manual:Combating spam]]&lt;br /&gt;
*[[med:Manual:Combating vandalism|Manual:Combating vandalism]]&lt;br /&gt;
*[[med:Manual:Preventing access|Manual:Preventing access]]&lt;br /&gt;
*[http://thingelstad.com/stopping-mediawiki-spam-with-dynamic-questy-captchas/#more-154561559 Stopping MediaWiki Spam with Dynamic Questy Captchas]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;small style=&amp;quot;color:red;&amp;quot;&amp;gt;&#039;&#039;It is a good day to die.&lt;br /&gt;
&lt;br /&gt;
-- Klingon Warrior, facing overwhelming odds&#039;&#039;&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=633</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=633"/>
		<updated>2026-10-06T05:35:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.webconfs.com/154/301-redirects-how-to-redirect-your-website/ 301 Redirects – How to Redirect Your Website] by webconfs.com&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=632</id>
		<title>Instructions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Instructions&amp;diff=632"/>
		<updated>2026-10-06T05:32:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains links to pages containing instructions.&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
;personal system:&lt;br /&gt;
*[https://danielwebb.us/software/backup/ Robust Linux Backup Scheme] on danielwebb.us&lt;br /&gt;
*[https://danielwebb.us/software/email/ The Ultimate Email Setup] on danielwebb.us&lt;br /&gt;
*[https://www.cyberciti.biz/faq/show-all-running-processes-in-linux/ Show All Running Processes in Linux using ps/htop commands] by nixCraft&lt;br /&gt;
*[https://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/ Linux Limit CPU Usage Per Process] by nixCraft&lt;br /&gt;
*[https://freepascal-meets-sdl.net/how-to-compile-and-install-sdl3-in-linux/ How to Compile and Install SDL3 in Linux?] by Free Pascal meets SDL, [https://gist.github.com/NoxFly/1067c9fc24024d26b51a6825de5cff74 SDL3 installation guide] by NoxFly at github.com&lt;br /&gt;
&lt;br /&gt;
;webserver:&lt;br /&gt;
*[https://www.cyberciti.biz/tips/lighttpd-set-throughput-connections-per-ip.html Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit)] by nixCraft&lt;br /&gt;
*[https://mysqldumper.de/wissen/mysql-zeichensatz-umlaute/ MySQL Zeichensatz und Umlaute — Probleme lösen] by mysqldumper.de&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_Extensions&amp;diff=631</id>
		<title>MediaWiki Extensions</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_Extensions&amp;diff=631"/>
		<updated>2026-10-06T03:53:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains lists of [[med:MediaWiki|MediaWiki]] [[med:Extension|Extensions]], most of which have been or are in use at [[wde:Wiki Aventurica:Extensions|Wiki Aventurica]]. For some of them we have deployed [[Bugfixes]].&lt;br /&gt;
&lt;br /&gt;
In every MediaWiki there is a page called [[Special:Version]]. It contains an automatic list of all installed extensions - which is often a good way to find interesting extensions for your own wiki. Examples: [[wpde:Spezial:Version|German Wikipedia]], [[wpen:Special:Version|English Wikipedia]], [[wiken:Special:Version|English Wiktionary]]&lt;br /&gt;
&lt;br /&gt;
Usually, extensions are activated by adding the following code to [[Localsettings]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;&amp;lt;ExtensionName&amp;gt;&#039; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for [[med:Extension:CodeEditor|Extension:CodeEditor]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;CodeEditor&#039; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Developing Extensions===&lt;br /&gt;
&lt;br /&gt;
[[med:Manual:Developing extensions|Manual:Developing extensions]] is a good way to start if you want to develop your own extension.&lt;br /&gt;
&lt;br /&gt;
[[med:Extension:BoilerPlate|Extension:BoilerPlate]] is the basic framework you should start from, and [[med:Extension:Examples|Extension:Examples]] contains some simple examples.&lt;br /&gt;
&lt;br /&gt;
==Extensions for all MediaWikis==&lt;br /&gt;
These extensions are in my opinion almost always useful, even for private wikis.&lt;br /&gt;
&lt;br /&gt;
===bundled extensions===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CategoryTree|CategoryTree]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|improves categories&lt;br /&gt;
|example: [[wde:Kategorie:!Hauptkategorie|Kategorie:!Hauptkategorie]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CodeEditor|CodeEditor]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|improvements like syntax highlighting for [[Javascript examples|JavaScript]] and [[CSS examples|CSS]]&lt;br /&gt;
|mainly [[MediaWiki:Common.js]] and [[MediaWiki:Common.css]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Echo|Echo]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|notification system&lt;br /&gt;
|cooperative editing&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgDefaultUserOptions[&amp;quot;echo-subscriptions-email-mention&amp;quot;] = false;&lt;br /&gt;
$wgDefaultUserOptions[&amp;quot;echo-subscriptions-email-article-linked&amp;quot;] = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Gadgets|Gadgets]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables [[Special:Gadgets]] ([[wde:Spezial:Helferlein|Spezial:Helferlein]])&lt;br /&gt;
|gives more control over the UI to users&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;interface-admin&#039;][&#039;gadgets-edit&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;interface-admin&#039;][&#039;gadgets-definition-edit&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:InputBox|InputBox]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables creation of input boxes&lt;br /&gt;
|example: [[wde:Chronologica Aventurica|Chronologica Aventurica]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:LoginNotify|LoginNotify]]&lt;br /&gt;
|Security&lt;br /&gt;
|adds notification for failed logins&lt;br /&gt;
|security choice for users&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgLoginNotifyCookieDomain = &#039;wiki-aventurica.de&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:ParserFunctions|ParserFunctions]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|enables logical functions and string handling&lt;br /&gt;
|important for template programming&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgPFEnableStringFunctions = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Thanks|Thanks]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables users to send &amp;quot;thanks&amp;quot; notifications for edits to other users&lt;br /&gt;
|cooperative editing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:VisualEditor|VisualEditor]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|[[wpen:WYSIWYG|WYSIWYG]] editor as alternative to the wikitext editor&lt;br /&gt;
|editor choice for users&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:WikiEditor|WikiEditor]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds toolbar to wikitext editor&lt;br /&gt;
|editor choice for users&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgWikiEditorRealtimePreview = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===other extensions===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CodeMirror|CodeMirror]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|syntax highlighting in wikitext editor&lt;br /&gt;
|editor choice for users&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgDefaultUserOptions[&#039;usecodemirror&#039;] = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:DarkMode|DarkMode]]&lt;br /&gt;
|Skins&lt;br /&gt;
|enables switching to &amp;quot;Dark Mode&amp;quot;&lt;br /&gt;
|skin choice for users&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:EmbedVideo (fork)|EmbedVideo (fork)]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables playing uploaded audio and video files, as well as GDPR compliant embedding of videos from external sources&lt;br /&gt;
|example: [[wde:Vorlage:Youtube-boxed|Vorlage:Youtube-boxed]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgEmbedVideoFetchExternalThumbnails = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MobileFrontend|MobileFrontend]]&lt;br /&gt;
|Skins&lt;br /&gt;
|enables the skin &amp;quot;Minerva Neue&amp;quot;, intended for smartphones&lt;br /&gt;
|skin choice for users&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgMFEnableMobilePreferences = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MultiBoilerplate|MultiBoilerplate]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables [[Special:Boilerplates]] ([[wde:Spezial:Verfügbare Textvorlagen|Spezial:Verfügbare Textvorlagen]])&lt;br /&gt;
|example: [[wde:MediaWiki:Multiboilerplate|MediaWiki:Multiboilerplate]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Paragraph-based Edit Conflict Interface|Paragraph-based Edit Conflict Interface]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|better edit conflict handling&lt;br /&gt;
|cooperative editing&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;TwoColConflict&#039; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Variables|Variables]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|enables defining variables for template programming&lt;br /&gt;
|examples: [[wde:Kategorie:Vorlage mit Variable|Kategorie:Vorlage mit Variable]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Extensions for public MediaWikis==&lt;br /&gt;
These extensions are in my opinion mainly useful for public wikis.&lt;br /&gt;
&lt;br /&gt;
===bundled extensions===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:AbuseFilter|AbuseFilter]]&lt;br /&gt;
|[[Anti-spam]]&lt;br /&gt;
|enables creation of custom filters&lt;br /&gt;
|most flexible anti-spam tool for MediaWiki, see [[wde:Spezial:Missbrauchsfilter|Spezial:Missbrauchsfilter]]; if [[med:Extension:ConfirmEdit|Extension:ConfirmEdit]] blocks bots from creating accounts, it is even possible to exempt logged in users from filters&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgAbuseFilterActions[&#039;throttle&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;warn&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;disallow&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;blockautopromote&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;block&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;rangeblock&#039;] = false;&lt;br /&gt;
$wgAbuseFilterActions[&#039;degroup&#039;] = false;&lt;br /&gt;
$wgAbuseFilterActions[&#039;tag&#039;] = true;&lt;br /&gt;
$wgAbuseFilterActions[&#039;showcaptcha&#039;] = true; #Extension:ConfirmEdit&lt;br /&gt;
$wgAbuseFilterCentralDB = &#039;dewa&#039;;&lt;br /&gt;
$wgAbuseFilterEmergencyDisableThreshold[&#039;default&#039;] = 0.50;&lt;br /&gt;
$wgAbuseFilterEmergencyDisableCount[&#039;default&#039;] = 100;&lt;br /&gt;
$wgAbuseFilterLogIPMaxAge = 7 * 24 * 3600;&lt;br /&gt;
$wgAbuseFilterLogPrivateDetailsAccess = true;&lt;br /&gt;
$wgAbuseFilterPrivateDetailsForceReason = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;$wgAbuseFilterCentralDB&amp;lt;/code&amp;gt; enables creation of &amp;quot;global&amp;quot; filters, which will apply in every wiki of the wiki farm, if the LocalSettings of the central wiki contains the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgAbuseFilterIsCentral = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:ConfirmEdit|ConfirmEdit]]&lt;br /&gt;
|[[Anti-spam]]&lt;br /&gt;
|enables various [[wpen:captcha|captchas]]&lt;br /&gt;
|captcha is only enabled for [[Special:CreateAccount]], everything else is handled by [[med:Extension:AbuseFilter|AbuseFilter]] in order to keep disruption for regular users to a minimum&lt;br /&gt;
|&amp;lt;code&amp;gt;$wgTurnstileSiteKey&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$wgTurnstileSecretKey&amp;lt;/code&amp;gt; can be included directly in LocalSettings.php, but we include it from another file outside the web root.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/Turnstile&#039; ]);&lt;br /&gt;
$wgCaptchaClass = MediaWiki\Extension\ConfirmEdit\Turnstile\Turnstile::class;&lt;br /&gt;
#$wgTurnstileSiteKey= &#039;&#039;; #should be included already together with other confidential data&lt;br /&gt;
#$wgTurnstileSecretKey= &#039;&#039;; #should be included already together with other confidential data&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;edit&#039;] = false;&lt;br /&gt;
$wgCaptchaTriggers[&#039;create&#039;] = false;&lt;br /&gt;
$wgCaptchaTriggers[&#039;sendemail&#039;] = false;&lt;br /&gt;
$wgCaptchaTriggers[&#039;addurl&#039;] = false;&lt;br /&gt;
$wgCaptchaTriggers[&#039;createaccount&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;badlogin&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;badloginperuser&#039;] = true;&lt;br /&gt;
$wgCaptchaTriggers[&#039;contactpage&#039;] = true; #Extension:ContactPage&lt;br /&gt;
$wgCaptchaBadLoginAttempts = 3;&lt;br /&gt;
$wgCaptchaBadLoginExpiration = 3600; // 3600 seconds = 60 minutes&lt;br /&gt;
$wgCaptchaBadLoginPerUserAttempts = 3;&lt;br /&gt;
$wgCaptchaBadLoginPerUserExpiration = 3600; // 3600 seconds = 60 minutes&lt;br /&gt;
$wgRateLimits[&#039;badcaptcha&#039;][&#039;newbie&#039;] = [ 10, 600 ]; // 600 seconds = 10 minutes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
We used to have QuestyCaptcha, but this has been broken by LLMs.&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:SpamBlacklist|SpamBlacklist]]&lt;br /&gt;
|[[Anti-spam]]&lt;br /&gt;
|prevents adding links which fit some custom [[wpen:Regular expression|regular expression]]&lt;br /&gt;
|examples: [[wde:MediaWiki:Spam-blacklist|MediaWiki:Spam-blacklist]], [[wde:MediaWiki:Spam-whitelist|MediaWiki:Spam-whitelist]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgLogSpamBlacklistHits = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;sboverride&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TitleBlacklist|TitleBlacklist]]&lt;br /&gt;
|[[Anti-spam]]&lt;br /&gt;
|prevents creation of pages with names which fit some custom [[wpen:Regular expression|regular expression]]&lt;br /&gt;
|examples: [[wde:MediaWiki:Titleblacklist|MediaWiki:Titleblacklist]], [[wde:MediaWiki:Titlewhitelist|MediaWiki:Titlewhitelist]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;tboverride&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===other extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:ContactPage|ContactPage]]&lt;br /&gt;
|Legal Requirements&lt;br /&gt;
|adds [[Special:Contact]]&lt;br /&gt;
|German law requires [[wde:Wiki Aventurica:Impressum|Wiki Aventurica:Impressum]] to have another method of contact, and a contact form like [[wde:Spezial:Kontakt|Spezial:Kontakt]] fits the requirement&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgContactConfig[&#039;default&#039;] = [&lt;br /&gt;
    &#039;RecipientEmail&#039; =&amp;gt; &#039;admin@wiki-aventurica.de&#039;,&lt;br /&gt;
    &#039;RecipientName&#039; =&amp;gt; &#039;Admin&#039;,&lt;br /&gt;
    &#039;SenderEmail&#039; =&amp;gt; null, // Defaults to $wgPasswordSender, may be changed as required&lt;br /&gt;
    &#039;SenderName&#039; =&amp;gt; null,&lt;br /&gt;
    &#039;RequireDetails&#039; =&amp;gt; true,&lt;br /&gt;
    &#039;IncludeIP&#039; =&amp;gt; true, #benötigt, um Spammer zu blockieren, solange wir kein gutes, einfaches Captcha haben&lt;br /&gt;
    &#039;MustBeLoggedIn&#039; =&amp;gt; false,&lt;br /&gt;
    &#039;MustHaveEmail&#039; =&amp;gt; false, // True means the user submitting the form must have an associated email address&lt;br /&gt;
    &#039;NameReadonly&#039; =&amp;gt; false,&lt;br /&gt;
    &#039;EmailReadonly&#039; =&amp;gt; false,&lt;br /&gt;
    &#039;SubjectReadonly&#039; =&amp;gt; false,&lt;br /&gt;
    &#039;UseCustomBlockMessage&#039; =&amp;gt; false,&lt;br /&gt;
    &#039;Redirect&#039; =&amp;gt; null,&lt;br /&gt;
    &#039;RLModules&#039; =&amp;gt; [], // Resource loader modules to add to the form display page.&lt;br /&gt;
    &#039;RLStyleModules&#039; =&amp;gt; [], // Resource loader CSS modules to add to the form display page.&lt;br /&gt;
    &#039;AdditionalFields&#039; =&amp;gt; [&lt;br /&gt;
		&#039;Text&#039; =&amp;gt; [&lt;br /&gt;
			&#039;label-message&#039; =&amp;gt; &#039;emailmessage&#039;,&lt;br /&gt;
			&#039;type&#039; =&amp;gt; &#039;textarea&#039;,&lt;br /&gt;
			&#039;required&#039; =&amp;gt; true&lt;br /&gt;
		],&lt;br /&gt;
		&#039;Privacy&#039; =&amp;gt; [&lt;br /&gt;
			&#039;label-message&#039; =&amp;gt; &#039;contactpage-privacy&#039;,&lt;br /&gt;
			&#039;type&#039; =&amp;gt; &#039;check&#039;,&lt;br /&gt;
			#&#039;default&#039; =&amp;gt; false,&lt;br /&gt;
			&#039;required&#039; =&amp;gt; true&lt;br /&gt;
		]&lt;br /&gt;
	],&lt;br /&gt;
	&#039;FieldsMergeStrategy&#039; =&amp;gt; null&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
also needs &amp;lt;code&amp;gt;[[med:$wgSMTP|$wgSMTP]]&amp;lt;/code&amp;gt; to be defined; can be included directly in LocalSettings.php, but we include it from another file outside the web root.&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CookieWarning|CookieWarning]]&lt;br /&gt;
|Legal Requirements&lt;br /&gt;
|adds a small banner informing the user about cookies; GDPR compliant only if the wiki only uses necessary cookies&lt;br /&gt;
|[[wde:MediaWiki:Cookiewarning-more-link|MediaWiki:Cookiewarning-more-link]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCookieWarningEnabled = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Favorites|Favorites]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[Special:FavoriteList]] ([[wde:Spezial:FavoritenListe|Spezial:FavoritenListe]])&lt;br /&gt;
|enables users to mark wiki pages as favorites&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgUseIconFavorite = true; #Add a Star icon for selecting favorites&lt;br /&gt;
$wgFavoritesPersonalURL = true; #Add a &amp;quot;My Favorites&amp;quot; link to the personal URLs area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This extension is not maintained well and needs some [[Bugfixes/MediaWiki_1.45#Extension:Favorites_(1.2)|Bugfixes]].&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:NewSignupPage|NewSignupPage]]&lt;br /&gt;
|Legal Requirements&lt;br /&gt;
|adds a checkbox on [[Special:CreateAccount]] for acceptance of the wiki&#039;s rules and privace policy&lt;br /&gt;
|[[wde:MediaWiki:Newsignuppage-loginform-tos|MediaWiki:Newsignuppage-loginform-tos]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgNewSignupPageToSURL = &amp;quot;https://de.wiki-aventurica.de/wiki/Wiki_Aventurica:Richtlinien&amp;quot;;&lt;br /&gt;
$wgNewSignupPagePPURL = &amp;quot;https://de.wiki-aventurica.de/wiki/Wiki_Aventurica:Datenschutz&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Extended MediaWiki installation==&lt;br /&gt;
These extensions could be more or less useful, depending on your wiki.&lt;br /&gt;
&lt;br /&gt;
===bundled extensions===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CiteThisPage|CiteThisPage]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[wde:Special:CiteThisPage|Special:CiteThisPage]] ([[wde:Spezial:Zitierhilfe|Spezial:Zitierhilfe]])&lt;br /&gt;
|helps with citing a wiki page&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Math|Math]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables formatting of mathematical formulas&lt;br /&gt;
|examples: [[wde:Kategorie:DSA aus mathematischer Sicht|Kategorie:DSA aus mathematischer Sicht]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgMathValidModes = [ &#039;source&#039;, &#039;png&#039;, &#039;latexml&#039;, &#039;native&#039;, &#039;mathml&#039; ];&lt;br /&gt;
$wgDefaultUserOptions[&#039;math&#039;] = &#039;native&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MultimediaViewer|MultimediaViewer]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables a larger view of pictures without visiting the file description page&lt;br /&gt;
|we assume that file description pages are not that interesting for most users&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:PageImages|PageImages]]&lt;br /&gt;
|Optimizing&lt;br /&gt;
|chooses one of the pictures in a page and stores it in the page infos&lt;br /&gt;
|example: [[wde:info:Gareth|info:Gareth]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:PdfHandler|PdfHandler]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables viewing PDF files&lt;br /&gt;
|examples: [[wde:Kategorie:Textdatei|Kategorie:Textdatei]]&lt;br /&gt;
|This extension possibly needs the installation of software packages on the system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgPdfInfo = &#039;/usr/bin/pdfinfo&#039;;&lt;br /&gt;
$wgPdftoText = &#039;/usr/bin/pdftotext&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Replace Text|Replace Text]]&lt;br /&gt;
|Administration&lt;br /&gt;
|adds [[wde:Special:ReplaceText|Special:ReplaceText]] ([[wde:Spezial:Text ersetzen|Spezial:Text ersetzen]])&lt;br /&gt;
|enables wiki-wide Search&amp;amp;Replace functionality via the [[med:Manual:Job queue|job queue]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:SecureLinkFixer|SecureLinkFixer]]&lt;br /&gt;
|Optimizing&lt;br /&gt;
|changes certain http links into https links in the html source code&lt;br /&gt;
|probably not needed in WA, but does not hurt either&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:SyntaxHighlight|SyntaxHighlight]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables syntax highlighting for code&lt;br /&gt;
|examples: [[Bugfixes]]&lt;br /&gt;
|The file &amp;lt;code&amp;gt;extensions/SyntaxHighlight_GeSHi/pygments/pygmentize&amp;lt;/code&amp;gt; needs to have execute permissions for the owner (744).&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TemplateData|TemplateData]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables providing structured information about templates, which then can be used by the VisualEditor&lt;br /&gt;
|(still needs to be implemented)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TemplateStyles|TemplateStyles]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables adding CSS styles directly to templates, moving them out of [[wde:MediaWiki:Common.css|MediaWiki:Common.css]]&lt;br /&gt;
|examples: [[wde:Kategorie:TemplateStyle|Kategorie:TemplateStyle]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgTemplateStylesAllowedUrls = [&lt;br /&gt;
    &amp;quot;audio&amp;quot; =&amp;gt; [&lt;br /&gt;
        &amp;quot;&amp;lt;^https://de\\.wiki-aventurica\\.de/de/images/&amp;gt;&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;image&amp;quot; =&amp;gt; [&lt;br /&gt;
        &amp;quot;&amp;lt;^https://de\\.wiki-aventurica\\.de/de/images/&amp;gt;&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;svg&amp;quot; =&amp;gt; [&lt;br /&gt;
        &amp;quot;&amp;lt;^https://de\\.wiki-aventurica\\.de/de/images/[^?#]*\\.svg(?:[?#]|$)&amp;gt;&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;font&amp;quot; =&amp;gt; [],&lt;br /&gt;
    &amp;quot;namespace&amp;quot; =&amp;gt; [&lt;br /&gt;
        &amp;quot;&amp;lt;.&amp;gt;&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TextExtracts|TextExtracts]]&lt;br /&gt;
|Optimizing&lt;br /&gt;
|enables inclusion of wiki page content in other websites, for example via the [[med:Extension:InterwikiExtracts|Extension:InterwikiExtracts]]&lt;br /&gt;
|example: use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;| api = https://de.wiki-aventurica.de/de/api.php&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (API path can be found in [[wde:Spezial:Version|Spezial:Version]])&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===other extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Area of application&lt;br /&gt;
!Function&lt;br /&gt;
!Usage in WA&lt;br /&gt;
!style=&amp;quot;min-width:500px&amp;quot;|Configuration in WA-[[Localsettings]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:AJAXPoll|AJAXPoll]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables polls&lt;br /&gt;
|examples: [[wde:Kategorie:Umfrage|Kategorie:Umfrage]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;ajaxpoll-vote&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;ajaxpoll-view-results&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;ajaxpoll-view-results-before-vote&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;ajaxpoll-vote&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;ajaxpoll-view-results&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;ajaxpoll-view-results-before-vote&#039;] = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:AntiSpoof|AntiSpoof]]&lt;br /&gt;
|[[Anti-spam]]&lt;br /&gt;
|prevents user names which are too close to already existing ones&lt;br /&gt;
|user name trolling has never been a problem at WA, but installing this as a preventative measure does not hurt either&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CentralAuth|CentralAuth]]&lt;br /&gt;
|Administration&lt;br /&gt;
|enables administration of a wiki farm&lt;br /&gt;
|easier administration of sister wikis, simultaneous login&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once( &amp;quot;$wgCustomIncludes/CentralAuthCustom.php&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The included file can be found at [[CentralAuth]].&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CharInsert|CharInsert]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds a toolbar beneath the edit window&lt;br /&gt;
|example: [[wde:MediaWiki:Edittools|MediaWiki:Edittools]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:cldr|cldr]]&lt;br /&gt;
|Multilingualism&lt;br /&gt;
|enables using &amp;lt;code&amp;gt;#language:&amp;lt;/code&amp;gt; in a way to output the name of a language in another language&lt;br /&gt;
|example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#language:ja}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#language:ja}}&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#language:ja|en}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#language:ja|en}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CreatedPagesList|CreatedPagesList]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[wde:Spezial:CreatedPagesList|Spezial:CreatedPagesList]]&lt;br /&gt;
|enables quicker access to information&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CSS|CSS]]&lt;br /&gt;
|Programming - parser function&lt;br /&gt;
|enables adding CSS to single pages&lt;br /&gt;
|example: [[wde:edit:Willkommen im Wiki Aventurica!|edit:Willkommen im Wiki Aventurica!]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Description2|Description2]]&lt;br /&gt;
|Optimizing&lt;br /&gt;
|enables adding the meta tag &amp;quot;description&amp;quot; to the html source code&lt;br /&gt;
|example: [[wde:Vorlage:Description|Vorlage:Description]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgEnableMetaDescriptionFunctions = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Disambiguator|Disambiguator]]&lt;br /&gt;
|Administration&lt;br /&gt;
|enables declaring a page to be a disambiguation page (used to be part of the MediaWiki core)&lt;br /&gt;
|example: [[wde:Vorlage:Begriffsklärung|Vorlage:Begriffsklärung]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:DismissableSiteNotice|DismissableSiteNotice]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables users hiding the [[MediaWiki:Sitenotice]]&lt;br /&gt;
|increase [[wde:MediaWiki:Sitenotice id|MediaWiki:Sitenotice id]], if there is a new Sitenotice to be shown&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:DynamicPageList4|DynamicPageList4]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|enables creation of automatic page lists&lt;br /&gt;
|examples: [[wde:Kategorie:Automatische Liste auf Unterseite|Kategorie:Automatische Liste auf Unterseite]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgDPLFunctionalRichness = 2;&lt;br /&gt;
$wgDPLMaxCategoryCount = 60;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Editcount|Editcount]]&lt;br /&gt;
|Programming&lt;br /&gt;
|adds [[wde:Special:Editcount|Special:Editcount]] ([[wde:Spezial:Beitragszähler|Spezial:Beitragszähler]])&lt;br /&gt;
|examples: [[wde:Wiki Aventurica:Vielschreiber|Wiki Aventurica:Vielschreiber]], [[wde:Wiki Aventurica:Badges|Wiki Aventurica:Badges]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:HeaderFooter|HeaderFooter]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables adding code above or below wiki pages on a per-namespace basis&lt;br /&gt;
|example: [[wde:MediaWiki:Hf-nsheader-Hilfe|MediaWiki:Hf-nsheader-Hilfe]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:HitCounters|HitCounters]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables page access numbers (used to be part of the MediaWiki core) &lt;br /&gt;
|examples: [[wde:Wiki Aventurica:Statistikdaten]], [[wde:Wiki Aventurica:Wikistatistik]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:ImageMap|ImageMap]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables linking parts of pictures&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:InterwikiExtracts|InterwikiExtracts]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|enables including text from other MediaWikis, if they have [[med:Extension:TextExtracts|Extension:TextExtracts]] installed&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Kartographer|Kartographer]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables using [[wpen:OpenStreetMap|OpenStreetMap]], or to install a custom map service&lt;br /&gt;
|(not used in WA at the moment, but potentially useful for [[wde:Spielersuche|Spielersuche]], [[wde:Konvent|Konvent]] or [[wde:DSA-Läden|DSA-Läden]], or to install a map service for the ingame map)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Maintenance|Maintenance]]&lt;br /&gt;
|Verwaltung&lt;br /&gt;
|enables the execution of some maintenance scripts from the wiki UI&lt;br /&gt;
|easier maintenance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MediaFunctions|MediaFunctions]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|enables variables for file metadata like [[wpen:Exif|Exif]] tags&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MediaWikiChat|MediaWikiChat]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[wde:Special:Chat|Special:Chat]]&lt;br /&gt;
|offering users who do not like [[wde:Wiki Aventurica:Discord|Wiki Aventurica:Discord]] an alternative&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgChatLinkUsernames = true;&lt;br /&gt;
$wgChatOnlineTimeout = 1500;&lt;br /&gt;
$wgGroupPermissions[&#039;suppress&#039;][&#039;viewpmlog&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Multi-Category Search|Multi-Category Search]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[wde:Special:MultiCategorySearch|Special:MultiCategorySearch]]&lt;br /&gt;
|enables searching for intersections of categories&lt;br /&gt;
|[[Bugfixes/MediaWiki_1.45#maintained_by_us|maintained by us]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:MyVariables|MyVariables]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|adds a variety of variables&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:NamespaceRelations|NamespaceRelations]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|enables connecting namespaces&lt;br /&gt;
|example: [[wde:Hilfe:Namensraum|Hilfe:Namensraum]] (connected with project namespace)&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgNamespaceRelations = [&lt;br /&gt;
	&#039;hilfelink&#039; =&amp;gt; [&lt;br /&gt;
		&#039;namespace&#039; =&amp;gt; 4,&lt;br /&gt;
		&#039;target&#039; =&amp;gt; 12,&lt;br /&gt;
		&#039;query&#039; =&amp;gt; &#039;preload=Hilfe:Wiki_Aventurica/Preload&amp;amp;editintro=Hilfe:Wiki_Aventurica/Editintro&#039;&lt;br /&gt;
	],&lt;br /&gt;
	&#039;hilfedisk&#039; =&amp;gt; [&lt;br /&gt;
		&#039;namespace&#039; =&amp;gt; 4,&lt;br /&gt;
		&#039;target&#039; =&amp;gt; 13,&lt;br /&gt;
	]&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:PageAuthors|PageAuthors]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|enables magic word &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PAGEAUTHORS}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgPageAuthorsIgnoreMinorEdits = false;&lt;br /&gt;
$wgPageAuthorsLinkUserPages = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Patroller|Patroller]]&lt;br /&gt;
|Administration&lt;br /&gt;
|adds [[wde:Special:Patroller|Special:Patroller]]&lt;br /&gt;
|enables faster patrolling of new edits for sysops&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Progressbar|Progressbar]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables creation of a progressbar&lt;br /&gt;
|examples: formerly on [[wde:Wiki Aventurica:Unterstützung|Wiki Aventurica:Unterstützung]]&lt;br /&gt;
|[[Bugfixes/MediaWiki_1.45#maintained_by_us|maintained by us]]&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Quiz|Quiz]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables creating quiz questions&lt;br /&gt;
|examples: [[wde:RatCon 2010/Quiz Magister der Magister|RatCon 2010/Quiz Magister der Magister]], [[wde:RatCon 2011/Quiz Magister der Magister|RatCon 2011/Quiz Magister der Magister]], [[wde:RatCon 2012/Quiz|RatCon 2012/Quiz]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:RandomSelection|RandomSelection]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|enables a function which will randomly select a given parameter for output&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:RegexFunctions|RegexFunctions]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|adds various functions for regular expressions&lt;br /&gt;
|(not used in WA at the moment, but potentially useful)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:RottenLinks|RottenLinks]]&lt;br /&gt;
|Administration&lt;br /&gt;
|adds [[wde:Special:RottenLinks|Special:RottenLinks]]&lt;br /&gt;
|search for dead links&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgRottenLinksExcludeWebsites = [&lt;br /&gt;
    &amp;quot;de.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    &amp;quot;en.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    &amp;quot;fr.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    &amp;quot;it.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    &amp;quot;nl.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    &amp;quot;ru.wiki-aventurica.de&amp;quot;,&lt;br /&gt;
    ];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:RSS|RSS]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables inclusion of [[wpen:RSS|RSS]] feeds&lt;br /&gt;
|example: [[wde:Hauptseite|Hauptseite]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgRSSUrlWhitelist = [&lt;br /&gt;
    &#039;https://pnpnews.de/feed/&#039;,&lt;br /&gt;
    &#039;https://nuntiovolo.de/feed/&#039;,&lt;br /&gt;
    &#039;https://nandurion.de/feed/&#039;,&lt;br /&gt;
    &#039;https://ulisses-spiele.de/feed/&#039;,&lt;br /&gt;
];&lt;br /&gt;
$wgRSSDateDefaultFormat = &amp;quot;j.n.Y H:i:s&amp;quot;;&lt;br /&gt;
$wgRSSAllowLinkTag = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Subpage Fun|Subpage Fun]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|adds variables for subpages&lt;br /&gt;
|example: [[wde:Vorlage:Ifsub|Vorlage:Ifsub]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:TabberNeue|TabberNeue]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables presentation of information in tabs&lt;br /&gt;
|example: [[wde:Vorlage:Regeltabs|Vorlage:Regeltabs]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:UploadWizard|UploadWizard]]&lt;br /&gt;
|User Interface&lt;br /&gt;
|adds [[wde:Special:UploadWizard|Special:UploadWizard]] ([[wde:Spezial:Hochladeassistent|Spezial:Hochladeassistent]])&lt;br /&gt;
|upgrade to [[wde:Special:Upload|Special:Upload]]&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once( &amp;quot;$wgCustomIncludes/UploadWizardCustom.php&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The included file can be found at [[UploadWizard]].&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:UserFunctions|UserFunctions]]&lt;br /&gt;
|Programming: variables&lt;br /&gt;
|adds user-specific variables&lt;br /&gt;
|(not used in WA at the moment, but potentially useful for the UI)&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgUFAllowedNamespaces[NS_HELP] = true;&lt;br /&gt;
$wgUFEnabledPersonalDataFunctions = [&lt;br /&gt;
	&#039;nickname&#039;,&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:UserMerge|UserMerge]]&lt;br /&gt;
|Administration&lt;br /&gt;
|adds [[wde:Special:UserMerge|Special:UserMerge]] ([[wde:Spezial:Benutzerkonten_vereinigen|Spezial:Benutzerkonten_vereinigen]])&lt;br /&gt;
|deletion of spam accounts (via [[wde:Benutzer:Spam|Benutzer:Spam]]), deletion of user accounts on request (via [[wde:Benutzer:Anonym|Benutzer:Anonym]]), and the merging of user accounts if the user can prove that both belong to them&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;usermerge&#039;] = true;&lt;br /&gt;
$wgUserMergeProtectedGroups = [ &#039;sysop&#039; ]; #optional - default is &#039;sysop&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:VoteNY|VoteNY]]&lt;br /&gt;
|Programming: parser tag&lt;br /&gt;
|enables rating a page&lt;br /&gt;
|(not used in WA at the moment, but potentially could supplant [[wde:Wiki Aventurica:Bewertung|Wiki Aventurica:Bewertung]])&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:Widgets|Widgets]]&lt;br /&gt;
|Programming: parser function&lt;br /&gt;
|enables creation and embedding of widgets&lt;br /&gt;
|(not used in WA at the moment, but potentially useful, see [[wde:Kategorie:Widget|Kategorie:Widget]])&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Extensions not installed at WA==&lt;br /&gt;
The following extensions are popular, but were intentionally not installed at Wiki Aventurica.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Extension&lt;br /&gt;
!Reasoning&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:GoogleCustomWikiSearch|GoogleCustomWikiSearch]]&lt;br /&gt;
|&lt;br /&gt;
#[[wpde:data privacy|data privacy]]: google is known for not respecting their user&#039;s privacy.&lt;br /&gt;
#Users who want to use google, can do so at the google website.&lt;br /&gt;
#Disabling the wiki&#039;s own search function in favor of google search forces users to use google. This is intrusive behavior.&lt;br /&gt;
#The google search including ads is worse and uglier than the MediaWiki search.&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Extension:CrawlerProtection|CrawlerProtection]]&lt;br /&gt;
|&lt;br /&gt;
#The extension prevents anonymous requests to old versions and diffs. This is not configurable, but at Wiki Aventurica, we only want to prevent anonymous requests to diffs, because those are impacting performance if done by large AI bot networks, and our users should be able to look at old versions of pages.&lt;br /&gt;
#Prevention of anonymous requests to diffs can be done by [[Hook_examples#MediaWikiPerformAction|hook]] too: [[med:Handling_web_crawlers#Custom_PHP|Handling web crawlers#Custom PHP]]&lt;br /&gt;
#The other function of the extension are included in [[med:Extension:Lockdown|Extension:Lockdown]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=630</id>
		<title>Web server administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Web_server_administration&amp;diff=630"/>
		<updated>2026-10-06T03:41:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Server Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Server Software==&lt;br /&gt;
This is the software I have experience in using while running a [[wpen:MediaWiki|MediaWiki]].&lt;br /&gt;
&lt;br /&gt;
[[wpen:Software update|Software update]]s should always be configured to be applied automatically for security reasons.&lt;br /&gt;
&lt;br /&gt;
Always use a different, large, [[Web services for server admins#Generators|generated]] password for all your accounts. Even if brute force attacks are prevented by your system, using weak passwords is just inviting trouble.&lt;br /&gt;
&lt;br /&gt;
[[Instructions]] contains some links to some instructions that are potentially useful for a web server admin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Version [[wpen:Upgrade|Upgrades]]&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Operating system|Operating system]]&lt;br /&gt;
|[[wpen:Ubuntu|Ubuntu]]&lt;br /&gt;
|&lt;br /&gt;
|[[wpen:Ubuntu version history#Version timeline|Ubuntu version history]]&lt;br /&gt;
|should be possible by using the web interface supplied by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A [[wpen:web server|web server]] should always be running a [[wpen:Linux|Linux]]-Kernel marked as LTS ([[wpen:Long-term support|Long-term support]]).&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web hosting control panel|Web hosting control panel]]&lt;br /&gt;
|[[wpen:Plesk|Plesk]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-updates.59215/ Plesk Updates]&lt;br /&gt;
|[https://support.plesk.com/hc/en-us/articles/12377672451223-How-to-upgrade-Plesk-to-the-next-release Plesk Upgrade]; but it could be tied to the operating system by the [[wpen:Web hosting service|Web hosting service]]&lt;br /&gt;
|A web hosting control panel simplifies the administration of a web server. Many configurations can be changed by using the web browser interface, and it can be expanded with additional [[#Plesk Components and Extensions]].&lt;br /&gt;
&lt;br /&gt;
Plesk also has the option of configuring automatic database backups; I would not recommend this, because Plesk uses the database management system too - and if the DMS does not start anymore (happened to us in 2019), the Plesk interface and thus the backups will also not be available. We currently use a [[#Backup|backup-Script]].&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web application firewall|Web application firewall]]&lt;br /&gt;
|[[wpen:ModSecurity|ModSecurity]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/owasp-modsecurity/ModSecurity/wiki/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|ModSecurity will deny certain harmful requests based on a ruleset.&amp;lt;br&amp;gt;Not to be confused with the Plesk Firewall extension.&lt;br /&gt;
|-&lt;br /&gt;
|intrusion prevention software framework&lt;br /&gt;
|[[wpen:Fail2ban|Fail2ban]]&lt;br /&gt;
|&lt;br /&gt;
|[https://github.com/fail2ban/fail2ban github-page]&lt;br /&gt;
|automatically&lt;br /&gt;
|Fail2Ban will block IPs from which a certain number of denied requests originate. This stops [[wpen:Brute-force attack|Brute-force attack]]s.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Job scheduler|Job scheduler]]&lt;br /&gt;
|[[wpen:Cron|Cron]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:Cron|Cron]]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:Systemd|Systemd]] could probably be used too.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web server|Web server]]&lt;br /&gt;
|[[wpen:Apache HTTP Server|Apache]]&lt;br /&gt;
|[[med:Apache configuration|Apache configuration]]&lt;br /&gt;
|[https://httpd.apache.org/docs/2.4/en/ documentation]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_deflate.html mod_deflate]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_expires.html mod expires]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod_rewrite]&lt;br /&gt;
|automatically&lt;br /&gt;
|[[wpen:nginx|nginx]] could be used too.&lt;br /&gt;
|-&lt;br /&gt;
|web server scripting language&lt;br /&gt;
|[[wpen:PHP|PHP]]&lt;br /&gt;
|[[med:PHP configuration|PHP configuration]]&amp;lt;br&amp;gt;[[med:Manual:Installation_requirements#PHP|Manual:Installation_requirements#PHP]]&lt;br /&gt;
|[https://www.php.net/manual/en/ documentation]&amp;lt;br&amp;gt;[https://www.php.net/manual/en/function.phpinfo.php phpinfo]&amp;lt;br&amp;gt;[https://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ PHP Increase Upload File Size Limit]&lt;br /&gt;
|should be possible by using the web hosting control panel&lt;br /&gt;
|The extension php-intl (required by MediaWiki) was not pre-installed on the server, so we added it via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install php php-intl php-mbstring php-apcu php-curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Object cache&lt;br /&gt;
|[https://www.php.net/manual/de/book.apcu.php APCu]&lt;br /&gt;
|[[med:Manual:Performance_tuning#Object_caching|Manual:Performance tuning#Object caching]]&lt;br /&gt;
|[https://help.creoline.com/de/doc/apcu-php-extension-fuer-plesk-php-8-SJaspnjfYG help.creoline.com]&amp;lt;br&amp;gt;[https://www.cloudservices.store/cp/index.php/knowledgebase/64/How-to-install-APCu-module-on-Plesk-server-.html cloudservices.store]&lt;br /&gt;
|&lt;br /&gt;
|APCu is a php extension which we need for the MediaWiki cache. It was not pre-installed on the server.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Database management system|Database management system]]&lt;br /&gt;
|[[wpen:MariaDB|MariaDB]]&lt;br /&gt;
|[[med:Manual:MariaDB|Manual:MariaDB]]&lt;br /&gt;
|[https://mariadb.com/kb/en/configuring-mariadb-with-option-files/ Configuring MariaDB with Option Files]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client#mariadb-commands mariadb commands]&amp;lt;br&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump]&lt;br /&gt;
|has to be done manually via [[#Webserver Access|SSH]]:&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213367429-How-to-upgrade-MySQL-from-5-1-to-5-5-on-Linux Upgrade 5.1 to 5.5]&amp;lt;br&amp;gt;[https://support.plesk.com/hc/en-us/articles/213403429 Upgrade 5.5 to 5.6]&lt;br /&gt;
|Before upgrading, it is advisable to create [[#Backup]]s of the databases by using [https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump] and by directly copying the database file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a /var/lib/mysql /var/lib/mysql_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the upgrade does not work, it is possible to recover the databases (after reverting the upgrade):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fr /var/lib/mysql&lt;br /&gt;
cp -a /var/lib/mysql_backup /var/lib/mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, and probably preferable, the mariadb-dump backup could be imported into the new system by using [[wpen:phpMyAdmin|phpMyAdmin]] or by accessing mariadb via [[#Webserver Access|SSH]].&lt;br /&gt;
|-&lt;br /&gt;
|Database administration&lt;br /&gt;
|[[wpen:phpMyAdmin|phpMyAdmin]]&lt;br /&gt;
|&lt;br /&gt;
|[https://docs.phpmyadmin.net/en/latest/ documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Enables the administration of databases through the web browser. It works well for small databases, but operations on large databases should be done via  [[#Webserver Access|SSH]], because of the possibility of timeouts in the web interface.&lt;br /&gt;
|-&lt;br /&gt;
|Thumbnail creation&lt;br /&gt;
|[[wpen:ImageMagick|ImageMagick]]&amp;lt;br&amp;gt;[[wpen:inkscape|inkscape]] (for&amp;amp;nbsp;[[wpen:svg|svg]])&amp;lt;br&amp;gt;poppler-utils (for&amp;amp;nbsp;[[wpen:pdf|pdf]])&lt;br /&gt;
|[[med:Manual:Image administration#ImageMagick|Manual:Image administration]]&lt;br /&gt;
|&lt;br /&gt;
|automatically&lt;br /&gt;
|These programs were not pre-installed on the server, so we added them via [[#Webserver Access|SSH]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt -y install imagemagick inkscape poppler-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Texteditor on the web server&lt;br /&gt;
|[[wpen:vi (text editor)|vi]]&lt;br /&gt;
|&lt;br /&gt;
|[[ubuntu:VIM|VIM]]&amp;lt;br&amp;gt;[https://www.cs.colostate.edu/helpdocs/vi.html Basic vi Commands]&lt;br /&gt;
|automatically&lt;br /&gt;
|Some configuration files can only be accessed via [[#Webserver Access|SSH]], so sometimes it is necessary to use a text editor started from the command line. Luckily, one only has to learn a few commands in order to be able to change a few lines:&amp;lt;br&amp;gt;&lt;br /&gt;
open file with vi: &amp;lt;code&amp;gt;vi filename&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
change to edit mode: &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit edit mode: &amp;lt;code&amp;gt;&amp;lt;Esc&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
save file: &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi: &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
exit vi without saving changes: &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Web analytics|Web analytics]]&lt;br /&gt;
|[[wpen:GoAccess|GoAccess]]&lt;br /&gt;
|&lt;br /&gt;
|[https://goaccess.io/man documentation]&lt;br /&gt;
|automatically&lt;br /&gt;
|Web analytics programs will analyze access log files and generate statistical reports.&amp;lt;br&amp;gt;&lt;br /&gt;
If you (have to) care about data privacy protection, do not use google analytics.&amp;lt;br&amp;gt;&lt;br /&gt;
TODO still need to find out how to activate GeoIP with GoAccess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Statistische Analyse der Webzugriffe: [[wpde:AWStats|AWStats]]&lt;br /&gt;
|&lt;br /&gt;
|[https://kau-boys.de/914/webserver/awstats-und-webalizer-fuer-plesk-aktivieren AWStats aktivieren] [https://support.plesk.com/hc/en-us/articles/12377594744471-How-to-configure-GeoIP-plugin-for-Plesk-AWStats configure GeoIP]&lt;br /&gt;
|Möchte man Statistiken der Zugriffe erstellen, sollte man auf google analytics verzichten (Datenschutz!) und AWStats in Plesk aktivieren.&lt;br /&gt;
*Tools&amp;amp;Settings -&amp;gt; Plesk -&amp;gt; Updates -&amp;gt; Add/Remove Components&lt;br /&gt;
**Web Hosting -&amp;gt; AWStats&lt;br /&gt;
Dies muss dann noch bei jeder domain einzeln aktiviert werden:&lt;br /&gt;
*Websites &amp;amp; Domains -&amp;gt; Hosting &amp;amp; DNS -&amp;gt; Hosting -&amp;gt; Web statistics -&amp;gt; AWStats&lt;br /&gt;
Die Erstellung der Statistiken läuft damit aber noch nicht automatisch, man muss folgendes Kommando per Kommandozeile durchführen oder als CronJob festlegen:&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/psa/admin/sbin/statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Alternative ist [[wpde:Analog (Web_Analytics)|Analog]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Plesk Extensions===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Extension&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Firewall (computing)|Firewall]]&lt;br /&gt;
|Plesk Firewall&lt;br /&gt;
|[https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/plesk-for-linux-the-plesk-firewall.72046/ documentation]&lt;br /&gt;
|The order of the firewall rules can be changed. The first fitting rule encountered in the list for a request will determine the behavior of the firewall: If a deny rule is found first, the request will be denied, and if an allow rule is found first, the request will be allowed, no matter which rules are further down the list.&lt;br /&gt;
|-&lt;br /&gt;
|System monitoring in Plesk UI&lt;br /&gt;
|Monitoring&lt;br /&gt;
|&lt;br /&gt;
|Shows server metrics as graphs, which is useful for finding time slots of unusual activity.&lt;br /&gt;
|-&lt;br /&gt;
|Log viewing in Plesk UI&lt;br /&gt;
|Log Browser&lt;br /&gt;
|&lt;br /&gt;
|Lets the user view the latest log entries of logs relevant to web server activity. Useful for inspecting incoming requests and analyzing errors.&lt;br /&gt;
|-&lt;br /&gt;
|Plesk configuration editing in Plesk UI&lt;br /&gt;
|Panel.ini Editor&lt;br /&gt;
|&lt;br /&gt;
|Enables the editing of the Plesk configuration in the Plesk UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==[[wpen:List_of_HTTP_status_codes#4xx_client_error|404 errors]]==&lt;br /&gt;
Some clients will ask for files which do not exist on your server.&lt;br /&gt;
&lt;br /&gt;
There are three cases:&lt;br /&gt;
#Some automated system is looking for some [[#standardized files]] which you do not provide. You could think about providing it.&lt;br /&gt;
#Bad actors are [[#searching for weaknesses]] in your system. Such requests are good candidates for being redirected to [[Bot-trap]] via htaccess.&lt;br /&gt;
#Someone follows a wrong or old link, or manually types a wrong URL into their web browser. If a wrong link originates somewhere on your own website, you could try to find and fix it.&lt;br /&gt;
&lt;br /&gt;
===searching for weaknesses===&lt;br /&gt;
Any of the following 404 hits can be considered an attack, and the corresponding IP blocked by your system:&lt;br /&gt;
#With the exception of &amp;lt;code&amp;gt;.well-known&amp;lt;/code&amp;gt; ([[wpen:Well-known URI|Well-known URI]]), any 404 hit of a dot file (I saw &amp;lt;code&amp;gt;.azure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aws&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.claude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.vscode&amp;lt;/code&amp;gt; in my logs).&lt;br /&gt;
#With the exception of the files of your system, any &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.asp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; file (I saw a large number of those, some of them files which are used by non-MediaWiki [[wpen:Content management system|CMSs]] for admin access).&lt;br /&gt;
&lt;br /&gt;
Make sure dot files are not in your web-root if they don&#039;t have to be, and make sure the admin access to all your systems is well protected. Using a weak password, for example, is alike to begging for someone to breach your system.&lt;br /&gt;
&lt;br /&gt;
===standardized files===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;favicon.ico&amp;lt;/code&amp;gt;&lt;br /&gt;
|this picture will be displayed in the web browser&lt;br /&gt;
|[[wpen:Favicon|Favicon]]&lt;br /&gt;
|use [https://favicon.io/ favicon.ico] to generate your favicon from an image file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is requested by well-behaved bots to gain information about which URLs they should not request; if you want to enforce these rules, you could use [[Bot-trap]]&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|create the file with whatever rules you wish&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|this file is intended to inform well-behaved bots about the URLs available on the website&lt;br /&gt;
|[[wpen:sitemap.xml|sitemap.xml]]&lt;br /&gt;
|use some script to create the file; in MediaWiki there is [[med:Manual:generateSitemap.php|generateSitemap.php]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;age.xml&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;age-de.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|rating file from the Commission for Youth Media Protection in Germany (KJM)&lt;br /&gt;
|[https://www.jugendschutzprogramm.de/en/label-generator-2/ jugendschutzprogramm.de]&lt;br /&gt;
|use the [https://www.jugendschutzprogramm.de/en/label-generator-iframe/ label generator] or just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ads.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file for internet fraud prevention&lt;br /&gt;
|[[wpen:ads.txt|ads.txt]]&lt;br /&gt;
|create the file with the following content: &amp;lt;code&amp;gt;placeholder.example.com, placeholder, DIRECT, placeholder&amp;lt;/code&amp;gt;, or fill it with your information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;ai.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|file intended to inform AI agents about your website&lt;br /&gt;
|[https://aitxt.ing/ aitxt.ing] [https://arxiv.org/html/2505.07834v1 ai.txt: A Domain-Specific Language for Guiding AI Interactions with the Internet]&lt;br /&gt;
|create an empty file with that name, or fill it with some text describing your website and what AI agents should or should not do with it&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;discontinued or non-standard:&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!File&lt;br /&gt;
!Explanation&lt;br /&gt;
!Link&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;labels.rdf&amp;lt;/code&amp;gt;&lt;br /&gt;
|discontinued rating file from the Internet Content Rating Association (ICRA) &lt;br /&gt;
|[http://www.java-samples.com/showtutorial.php?tutorialid=1584 java-samples.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;apple-touch-icon&amp;lt;/code&amp;gt;&lt;br /&gt;
|apple expects websites to create a special icon, just for them&lt;br /&gt;
|[[med:Manual:$wgAppleTouchIcon|Manual:$wgAppleTouchIcon]]&lt;br /&gt;
|just copy your site logo, or create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;trafficbasedsspsitemap.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|bing bot expecting to find a non-standard sitemap&lt;br /&gt;
|[http://webmasters.stackexchange.com/questions/44257/bingbot-request-for-trafficbasedsspsitemap-xml-which-does-not-exist webmasters.stackexchange.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;browserconfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
|file expected by the Internet explorer&lt;br /&gt;
|[http://msdn.microsoft.com/en-us/library/ie/dn320426%28v=vs.85%29.aspx microsoft.com]&lt;br /&gt;
|just create an empty file with that name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Personal Computer Software==&lt;br /&gt;
Software running on your own system which is helpful in administrating a web server.&lt;br /&gt;
&lt;br /&gt;
===Webserver Access===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:File Transfer Protocol|FTP]] access&lt;br /&gt;
|[[wpen:FileZilla|FileZilla]]&lt;br /&gt;
|[[ubuntu:FileZilla|FileZilla]]&amp;lt;br&amp;gt;[https://blog.phpbb.com/2011/08/23/the-dangers-of-ascii-mode/ The dangers of ASCII mode]&amp;lt;br&amp;gt;[[wde:Benutzer:StipenTreublatt/Usability-Fails#FileZilla|Benutzer:StipenTreublatt/Usability-Fails#FileZilla]]&lt;br /&gt;
|Although file transfer is certainly possible through SSH, I prefer FTP for working on the web folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use ASCII-mode! Make sure FileZilla is configured to use binary mode, otherwise files might be corrupted.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Secure Shell|SSH]] access&lt;br /&gt;
|[[ubuntu:SSH|SSH]] (Linux)&amp;lt;br&amp;gt;[https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] (Windows)&lt;br /&gt;
|[https://ss64.com/bash/ Index of the Linux command line: bash + utilities]&amp;lt;br&amp;gt;[https://superuser.com/questions/44106/is-there-a-way-to-auto-login-in-putty-with-a-password Auto login in PuTTy with password]&lt;br /&gt;
|SSH access to a web server enables a user to run programs on the server through the [[wpen:command line|command line]]. Use with caution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Working with Code===&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!Software&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Data compression|Data compression]]&lt;br /&gt;
|[[wpen:7-Zip|7-Zip]] (Windows)&amp;lt;br&amp;gt;[[wpen:gzip|gzip]] (Linux)&lt;br /&gt;
|[[ubuntu:gzip|gzip]]&lt;br /&gt;
|Software packages presented for download (like the MediaWiki software and it&#039;s extensions) are almost always compressed. You will need software to decompress the package before being able to use it.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Source code|Source code]] editing&lt;br /&gt;
|[[wpen:PSPad|PSPad]] (Windows)&amp;lt;br&amp;gt;[[wpen:Geany|Geany]] (Linux)&amp;lt;br&amp;gt;[[wpen:Kate (text editor)|Kate]] (Linux)&lt;br /&gt;
|&lt;br /&gt;
|In order to be able to edit source code (like the localsettings of MediaWiki) correctly, one has to use a source code editor.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; Never use texteditors like [[wpen:Windows Notepad|Windows Notepad]] or [[wpen:Microsoft Word|Microsoft Word]] for this, it will break your file.&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:Integrated development environment|IDE]]&lt;br /&gt;
|[[wpen:VSCodium|VSCodium]]&lt;br /&gt;
|[https://vscodium.com/ vscodium.com]&lt;br /&gt;
|An IDE makes bugfixing or code rewriting a lot easier. VSCodium is the &amp;quot;telemetry-free&amp;quot; (read: surveillance-free) version of [[wpen:VS Code|VS Code]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_administration&amp;diff=629</id>
		<title>MediaWiki administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_administration&amp;diff=629"/>
		<updated>2026-10-05T20:55:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Administrative Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains some knowledge collected by me in my years of acting as a MediaWiki administrator. I am not a coder (yet), so do not follow any advice on here blindly.&lt;br /&gt;
&lt;br /&gt;
If performance turns out to be an issue, have a look at [[med:Manual:Performance tuning|Manual:Performance tuning]]. Not mentioned there: Replacing &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SITNAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in [[MediaWiki:Aboutsite]] and [[MediaWiki:Pagetitle]] with the name of your wiki will reduce processing time a tiny bit on each hit, because the &amp;quot;magic word&amp;quot; does not have to be processed. (Found on [[med:User:Aaron Schulz/How to make MediaWiki fast|User:Aaron Schulz/How to make MediaWiki fast]])&lt;br /&gt;
&lt;br /&gt;
One thing to note: There is a [[Firefox configuration|Firefox]] AddOn called [https://addons.mozilla.org/en-US/firefox/addon/universal-edit-button/ universal-edit-button], which adds a button to the URL to start editing the page you are viewing, if it is part of a MediaWiki.&lt;br /&gt;
&lt;br /&gt;
MediaWiki uses [[wpen:Wikitext|Wikitext]], which is converted into [[wpen:html|html]] by the parser. Thus knowing a bit about html can be beneficial when editing a MediaWiki. [https://wiki.selfhtml.org/wiki/SELFHTML selfhtml.org] (German website) is a great place to start learning html, while [https://www.sitepoint.com/html-css/ sitepoint.com] has many articles about specific topics.&lt;br /&gt;
&lt;br /&gt;
==File Structure==&lt;br /&gt;
&lt;br /&gt;
===Common Structure===&lt;br /&gt;
These folders and files are useful for any website.&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Folder / File&lt;br /&gt;
!Function&lt;br /&gt;
!Path (example)&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|FTP root&lt;br /&gt;
|basic folder accessible through [[wpen:FTP|FTP]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|everything in this folder can be accessed with a FTP-client by an authorized user&lt;br /&gt;
|-&lt;br /&gt;
|web root&lt;br /&gt;
|basic folder accessible through the web&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|requests to &amp;lt;code&amp;gt;mywebsite.example&amp;lt;/code&amp;gt; will be answered with whatever is configured in this folder&lt;br /&gt;
|-&lt;br /&gt;
|backups&lt;br /&gt;
|folder containing the [[#Backup]]s of the website&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/backups/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|backups should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|logs&lt;br /&gt;
|folder containing the access logs of the website&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/logs/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|access logs should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|confidential&lt;br /&gt;
|folder containing confidential data like access passwords for databases&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/confidential/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Securing database passwords|Manual:Securing database passwords]]&lt;br /&gt;
|this confidential data can be included where needed&amp;lt;br&amp;gt;confidential data should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|sitemap&lt;br /&gt;
|folder containing the [[wpen:Sitemap|Sitemap]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/sitemap/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:generateSitemap.php|Manual:generateSitemap.php]]&lt;br /&gt;
|the sitemap needs to be accessible through the web&amp;lt;br&amp;gt;the location of the sitemap can be announced to web crawlers in robots.txt&lt;br /&gt;
|-&lt;br /&gt;
|bot-trap&lt;br /&gt;
|folder containing the [[Bot-trap]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/bot-trap/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[Bot-trap]]&lt;br /&gt;
|the bot-trap needs to be accessible through the web&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:.htaccess|.htaccess]]&lt;br /&gt;
|file containing access-rules to the folder for web requests&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/.htaccess&amp;lt;/code&amp;gt;&lt;br /&gt;
|[https://www.askapache.com/htaccess/ Ultimate htaccess]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod rewrite]&amp;lt;br&amp;gt;[https://htaccess.madewithlove.be/ rewrite-tester]&amp;lt;br&amp;gt;[[htaccess examples]]&lt;br /&gt;
|a .htaccess file can be defined for every folder in web root &lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|file containing access-rules for bot requests&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:robots.txt|Manual:robots.txt]]&lt;br /&gt;
|these rules are not enforced by the web server; enforcement will have to be done through [[wpen:.htaccess|.htaccess]] and the [[Bot-trap]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MediaWiki-specific Structure===&lt;br /&gt;
These folders and files are specific to MediaWiki.&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Folder / File&lt;br /&gt;
!Function&lt;br /&gt;
!Path (example)&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki&lt;br /&gt;
|folder containing the files of the [[wpen:MediaWiki|MediaWiki]] installation&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Download|Download]]&amp;lt;br&amp;gt;[[med:Manual:Installing MediaWiki|Manual:Installing MediaWiki]]&lt;br /&gt;
|it is possible, but not advisable, to install MediaWiki directly in the web root: [[med:Manual:Wiki in site root directory|Manual:Wiki in site root directory]]&lt;br /&gt;
|-&lt;br /&gt;
|images&lt;br /&gt;
|folder containing all files uploaded to the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/images/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Configuring file uploads|Manual:Configuring file uploads]]&lt;br /&gt;
|this folder needs to be retained during an [[#Upgrade]], otherwise files which were uploaded to the Wiki will be lost&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|folder containing all MediaWiki extensions&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/extensions/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Extensions|Manual:Extensions]]&amp;lt;br&amp;gt;[[wde:Wiki Aventurica:Extensions|Wiki Aventurica:Extensions]]&lt;br /&gt;
|Certain extensions are bundled with every MediaWiki download, these only need to be activated in LocalSettings.php. Many others need to be downloaded into the extensions folder first.&lt;br /&gt;
|-&lt;br /&gt;
|cache&lt;br /&gt;
|folder containing the cache of the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/cache/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Cache|Manual:Cache]]&amp;lt;br&amp;gt;[[Localsettings]]&lt;br /&gt;
|Keeping the cache files outside of the MediaWiki folder will enable smaller and faster [[#Backup]]s, because the cache does not need to be backed up.&lt;br /&gt;
|-&lt;br /&gt;
|custom&lt;br /&gt;
|folder containing all your custom files&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/custom/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[Custom files]]&lt;br /&gt;
|Keeping all your custom files outside of the MediaWiki folder will enable faster [[#Upgrade]]s, because you will not have to worry about losing files when switching folders. Examples for custom files would be php files which you include into LocalSettings.php, and your Wiki&#039;s logo.&lt;br /&gt;
|-&lt;br /&gt;
|LocalSettings.php&lt;br /&gt;
|file containing the configuration of the Wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/LocalSettings.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:LocalSettings.php|Manual:LocalSettings.php]]&amp;lt;br&amp;gt;[[med:Manual:Configuration settings|Manual:Configuration settings]]&amp;lt;br&amp;gt;[[med:Manual:Hooks|Manual:Hooks]]&amp;lt;br&amp;gt;[[Localsettings]]&lt;br /&gt;
|This is the file central to the configuration of your Wiki. Here you can change variables, define and configure the extensions which should be used, use hooks, and include code from other files. Most commonly used: [[med:Manual:Short URL/Apache|Manual:Short URL/Apache]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; #MediaWiki folder&lt;br /&gt;
$wgArticlePath = &amp;quot;/wiki/$1&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Administrative Tasks==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
see [[#Upgrade]], or [[med:Manual:Installing MediaWiki|Manual:Installing MediaWiki]]&lt;br /&gt;
&lt;br /&gt;
Using [[wpen:Xampp|Xampp]], it is possible to set up a wiki on your personal computer, see [[med:Manual:Installing MediaWiki on XAMPP|Manual:Installing MediaWiki on XAMPP]].&lt;br /&gt;
&lt;br /&gt;
===Backup===&lt;br /&gt;
A [[med:Manual:Backing up a wiki|Backup]] of a MediaWiki consists of &lt;br /&gt;
#the database&lt;br /&gt;
#the MediaWiki folder  (more precise: the &amp;lt;code&amp;gt;/images&amp;lt;/code&amp;gt; folder and all customized files, especially &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
In addition, it is possible to dump the contents of the Wiki in [[wpen:XML|XML]] format.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is of course important to know how to recreate the Wiki from a backup.&lt;br /&gt;
&lt;br /&gt;
For compressing / decompressing a backup, see [[Web server administration#Working with Code]].&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|backup database&lt;br /&gt;
|[[med:Manual:Backing up a wiki#Database|Manual:Backing up a wiki]]&lt;br /&gt;
|[https://www.digitalocean.com/community/tutorials/how-to-import-and-export-databases-in-mysql-or-mariadb Import and Export Databases in MySQL or MariaDB]&amp;lt;br /&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump documentation]&amp;lt;br /&amp;gt;[https://dev.mysql.com/doc/refman/8.4/en/innodb-backup.html InnoDB Backup documentation]&lt;br /&gt;
|There are two ways to create a backup of the database:&lt;br /&gt;
*Simply copy the folder in which the database file is saved. This backup can be used to quickly restore the database on the same system.&lt;br /&gt;
*Export the database into a [[wpen:sql|sql]] file which can be used to recreate the database on another system.&lt;br /&gt;
**The best way to do this is to run mariadb-dump from the command line (through [[Web server administration#Webserver access|SSH]]).&lt;br /&gt;
**There is also an option to export the database in phpMyAdmin, but this could fail for a large database.&lt;br /&gt;
&lt;br /&gt;
An example for a script which uses both options can be found at [[Backup script]].&lt;br /&gt;
&lt;br /&gt;
It is advisable to always check if the backup was actually created - in some cases the backup file will be empty if an error occured.&lt;br /&gt;
|-&lt;br /&gt;
|backup file system&lt;br /&gt;
|[[med:Manual:Backing up a wiki#File system|Manual:Backing up a wiki]]&lt;br /&gt;
|[[ubuntu:tar|tar]]&lt;br /&gt;
|[[wpen:tar (computing)|tar]] combines multiple files into one and thus can be used to create a backup of a folder. It is advisable to also compress this tar-file with [[wpen:gzip|gzip]].&lt;br /&gt;
&lt;br /&gt;
This example creates a backup of the web root folder:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tar -zcf /var/www/vhosts/yourwebsite.example/backups/httpdocs.tar.gz /var/www/vhosts/yourwebsite.example/httpdocs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there is no [[Web server administration#Webserver access|SSH]] access, file backup needs to be done through [[Web server administration#Webserver access|FTP]].&lt;br /&gt;
|-&lt;br /&gt;
|backup wiki content&lt;br /&gt;
|[[med:Manual:dumpBackup.php|Manual:dumpBackup.php]]&lt;br /&gt;
|[[med:Manual:Importing XML dumps|Manual:Importing XML dumps]]&lt;br /&gt;
|Runnung dumpBackup.php from the command line requires  [[Web server administration#Webserver access|SSH]] access; it exports wiki pages, but not user accounts, files or deleted page revisions - thus it is impossible to fully recreate a wiki with this dump.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#all page versions&lt;br /&gt;
php dumpBackup.php --full &amp;gt; dump.xml&lt;br /&gt;
#only current page versions&lt;br /&gt;
php dumpBackup.php --current &amp;gt; dumpcurrent.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|restoring a Wiki from backup&lt;br /&gt;
|[[med:Manual:Restoring a wiki from backup|Manual:Restoring a wiki from backup]]&lt;br /&gt;
|[https://www.thomas-krenn.com/de/wiki/Archive_unter_Linux_%28tar,_gz,_bz2,_zip%29 Archive unter Linux (tar, gz, bz2, zip)]&amp;lt;br&amp;gt;[https://sebastianviereck.de/importieren-grosser-mysql-datenbanken-unter-xampp/ Importieren großer Datenbanken unter xampp]&amp;lt;br&amp;gt;[https://github.com/kedarvj/mysqldumpsplitter mysqldumpsplitter]&amp;lt;br&amp;gt;[https://dev.mysql.com/doc/refman/9.7/en/server-system-variables.html#sysvar_key_buffer_size key_buffer_size]&amp;lt;br&amp;gt;[https://dev.mysql.com/doc/refman/9.7/en/server-system-variables.html#sysvar_max_allowed_packet max_allowed_packet]&lt;br /&gt;
|Ideally, you would never need to do this, except if you change servers.&lt;br /&gt;
&lt;br /&gt;
The backup is probably compressed and thus needs to be decompressed first.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u wikidb_user -p wikidb &amp;lt; dump_of_wikidb.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the backup is large, import might take too long if &amp;lt;code&amp;gt;key_buffer_size&amp;lt;/code&amp;gt; is too low (default is 8MB). Solution from [https://serverfault.com/questions/146525/how-can-i-speed-up-a-mysql-restore-from-a-dump-file serverfault.com]: Turn it up temporarily to 30% of your RAM.&lt;br /&gt;
&lt;br /&gt;
Also, &amp;lt;code&amp;gt;max_allowed_packet&amp;lt;/code&amp;gt; might be too low, I had to increase it to 16777216 for the import to succeed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Maintenance scripts===&lt;br /&gt;
[[Web server administration#Webserver_Access|SSH]] access is required for running the [[med:Manual:Maintenance scripts|Manual:Maintenance scripts]] from the command line. Most of the scripts should not necessary, but some scripts should run regularly (using [[wpen:Cron|Cron]] or [[wpen:Systemd|Systemd]]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Script&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Frequency&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:runJobs.php|runJobs.php]]&lt;br /&gt;
|[[med:Manual:Job queue|Manual:Job queue]]&lt;br /&gt;
|&lt;br /&gt;
|10 minutes&lt;br /&gt;
|This script works on the job queue. It is advisable to run it regularly, using [[wpen:Cron|Cron]] or [[wpen:Systemd|Systemd]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php runJobs --maxtime 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:rebuildall.php|rebuildall.php]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|when needed&lt;br /&gt;
|This script updates categories, links, file usage and the search index for all pages in the wiki. These updates happen for a page if a new version of that page is saved, so usually it should not be necessary to run this script.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php rebuildall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|delete html file cache&lt;br /&gt;
|[[med:Manual:File cache|Manual:File cache]]&amp;lt;br&amp;gt;[[med:Manual:purgePage.php|purgePage.php]]&lt;br /&gt;
|&lt;br /&gt;
|1 month&lt;br /&gt;
|The html code of every page is saved and served to anonymous users until the page is edited (so possibly indefinitely), so it is advisable to delete this cache from time to time. Sadly, there is no maintenance script for this, so we use the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
find /var/www/vhosts/mywebsite.example/httpdocs/cache/html -type f -delete&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If there is a page (or a list of pages) which you want refreshed more frequently, you could use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php purgePage &amp;lt; /var/www/vhosts/mywebsite.example/httpdocs/custom/purgedaily.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Upgrade===&lt;br /&gt;
Unfortunately, in MediaWiki there is no [[med:Manual:Upgrading|Upgrade]] script that will automate the whole process for you, so you will basically have to do a reinstall every time you upgrade your Wiki. Items in the following list which are only necessary during an upgrade will be marked with &amp;lt;code&amp;gt;(*)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
#(*) [[#Backup]] the Wiki&lt;br /&gt;
#[[med:Download|Download]] the new version of MediaWiki and the corresponding versions of all [[med:Manual:Extensions|Extensions]] that are not [[med:Bundled extensions and skins|bundled]]&lt;br /&gt;
#Move the files of the new version onto the server&lt;br /&gt;
##(*) Rename the folder with the files of the old MediaWiki version&lt;br /&gt;
##Create a folder with a name of your choosing (&amp;lt;code&amp;gt;/w/&amp;lt;/code&amp;gt; is suggested)&lt;br /&gt;
##Move the files of the new MediaWiki version (along with the new versions of all extensions) into the new folder&lt;br /&gt;
##*either upload them to and decompress them on the server using [[Web server administration#Webserver Access|SSH]] (much faster than the alternative)&lt;br /&gt;
##*or decompress them on your personal computer and upload them using [[Web server administration#Webserver Access|FTP]] (slow, but necessary if there is no SSH access)&lt;br /&gt;
#(*) move the &amp;lt;code&amp;gt;images&amp;lt;/code&amp;gt; folder and all custom files (especially &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;) from the old folder into the new folder&lt;br /&gt;
#do the database update (the database must exist already)&lt;br /&gt;
#*either use the webinstaller: Access the URL &amp;lt;code&amp;gt;yourwebsite.example/mw-config/index.php&amp;lt;/code&amp;gt; with your browser and follow the instructions there. This method may timeout if a large database needs to be updated, but the webinstaller will generate a new [[Localsettings]] for you.&lt;br /&gt;
#*or use [[Web server administration#Webserver Access|SSH]]: Run [[med:Manual:update.php|update.php]] from the command line. Updating [[Localsettings]] will be up to you.&lt;br /&gt;
#If you used the webinstaller, you will have to move the generated &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to the MediaWiki folder. After that, the Wiki should be functional (again).&lt;br /&gt;
&lt;br /&gt;
If errors occur during the database update or when accessing the Wiki after the upgrade, most of the time extensions or outdated [[Localsettings]] are responsible. Analyzing these errors and fixing bugs is usually the most time-consuming task of the upgrade process, which is the reason why it is advisable to test the upgrade on a separate testwiki.&lt;br /&gt;
&lt;br /&gt;
Bugfixes used on Wiki Aventurica can be found at [[Bugfixes]].&lt;br /&gt;
&lt;br /&gt;
Something to note: The webinstaller has an option enabled by default which will lead to the Wiki sending data about it to a MediaWiki-Server, see [[med:Manual:$wgPingback|Manual:$wgPingback]]. If you forgot to opt-out during the upgrade process, it is possible to fix this by adding &amp;lt;code&amp;gt;$wgPingback = false;&amp;lt;/code&amp;gt; to the [[Localsettings]].&lt;br /&gt;
&lt;br /&gt;
==Rules and Regulations==&lt;br /&gt;
No matter where your server is located, there are probably some [[laws]] defining what you should or should not do with your website. In Germany, for example, we need to have an [[Impressum]], and we need to inform our visitors about our [[Privacy policy]].&lt;br /&gt;
&lt;br /&gt;
But if you are running a wiki which can be edited by other people, it also is a good idea to craft some rules for the community of your editors - [[wpen:Terms of service|terms of service]] (TOS), so to speak (in Germany called [[wpde:Allgemeine Geschäftsbedingungen|Allgemeine Geschäftsbedingungen]] (AGB), which is of course a bit misleading for non-profit websites).&lt;br /&gt;
&lt;br /&gt;
Those rules should clarify:&lt;br /&gt;
*which kind of content the wiki is for&lt;br /&gt;
*how the content should be presented&lt;br /&gt;
*and what kind of behavior is expected from the editors&lt;br /&gt;
&lt;br /&gt;
It is possible to make every new editor confirm those rules while [[Special:CreateAccount|creating a new account]], if the [[med:Extension:NewSignupPage|Extension:NewSignupPage]] is installed and properly configured, see [[MediaWiki Extensions]].&lt;br /&gt;
&lt;br /&gt;
It is also possible to ask every user for confirmation every time those rules are changed, by installing and properly configuring [[med:Extension:UserAgreement|Extension:UserAgreement]] (see [[Bugfixes/MediaWiki_1.45#Extension:UserAgreement_(2.0.0)]]).&lt;br /&gt;
&lt;br /&gt;
===examples at Wiki Aventurica===&lt;br /&gt;
*Projektinhalt&lt;br /&gt;
**[[wde:Wiki Aventurica:Verwendung offizieller Produkte|Wiki Aventurica:Verwendung offizieller Produkte]]&lt;br /&gt;
*Format der Artikel&lt;br /&gt;
**[[wde:Wiki Aventurica:Erstellen neuer Artikel|Wiki Aventurica:Erstellen neuer Artikel]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Seitenangabe|Wiki Aventurica:Seitenangabe]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Quellenangaben|Wiki Aventurica:Quellenangaben]]&lt;br /&gt;
*Nutzerverhalten&lt;br /&gt;
**[[wde:Wiki Aventurica:Umgangston|Wiki Aventurica:Umgangston]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Konflikte|Wiki Aventurica:Konflikte]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_administration&amp;diff=628</id>
		<title>MediaWiki administration</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=MediaWiki_administration&amp;diff=628"/>
		<updated>2026-10-05T20:52:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Administrative Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
This page contains some knowledge collected by me in my years of acting as a MediaWiki administrator. I am not a coder (yet), so do not follow any advice on here blindly.&lt;br /&gt;
&lt;br /&gt;
If performance turns out to be an issue, have a look at [[med:Manual:Performance tuning|Manual:Performance tuning]]. Not mentioned there: Replacing &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{SITNAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in [[MediaWiki:Aboutsite]] and [[MediaWiki:Pagetitle]] with the name of your wiki will reduce processing time a tiny bit on each hit, because the &amp;quot;magic word&amp;quot; does not have to be processed. (Found on [[med:User:Aaron Schulz/How to make MediaWiki fast|User:Aaron Schulz/How to make MediaWiki fast]])&lt;br /&gt;
&lt;br /&gt;
One thing to note: There is a [[Firefox configuration|Firefox]] AddOn called [https://addons.mozilla.org/en-US/firefox/addon/universal-edit-button/ universal-edit-button], which adds a button to the URL to start editing the page you are viewing, if it is part of a MediaWiki.&lt;br /&gt;
&lt;br /&gt;
MediaWiki uses [[wpen:Wikitext|Wikitext]], which is converted into [[wpen:html|html]] by the parser. Thus knowing a bit about html can be beneficial when editing a MediaWiki. [https://wiki.selfhtml.org/wiki/SELFHTML selfhtml.org] (German website) is a great place to start learning html, while [https://www.sitepoint.com/html-css/ sitepoint.com] has many articles about specific topics.&lt;br /&gt;
&lt;br /&gt;
==File Structure==&lt;br /&gt;
&lt;br /&gt;
===Common Structure===&lt;br /&gt;
These folders and files are useful for any website.&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Folder / File&lt;br /&gt;
!Function&lt;br /&gt;
!Path (example)&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|FTP root&lt;br /&gt;
|basic folder accessible through [[wpen:FTP|FTP]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|everything in this folder can be accessed with a FTP-client by an authorized user&lt;br /&gt;
|-&lt;br /&gt;
|web root&lt;br /&gt;
|basic folder accessible through the web&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|requests to &amp;lt;code&amp;gt;mywebsite.example&amp;lt;/code&amp;gt; will be answered with whatever is configured in this folder&lt;br /&gt;
|-&lt;br /&gt;
|backups&lt;br /&gt;
|folder containing the [[#Backup]]s of the website&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/backups/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|backups should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|logs&lt;br /&gt;
|folder containing the access logs of the website&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/logs/&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|access logs should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|confidential&lt;br /&gt;
|folder containing confidential data like access passwords for databases&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/confidential/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Securing database passwords|Manual:Securing database passwords]]&lt;br /&gt;
|this confidential data can be included where needed&amp;lt;br&amp;gt;confidential data should never be in the web root&lt;br /&gt;
|-&lt;br /&gt;
|sitemap&lt;br /&gt;
|folder containing the [[wpen:Sitemap|Sitemap]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/sitemap/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:generateSitemap.php|Manual:generateSitemap.php]]&lt;br /&gt;
|the sitemap needs to be accessible through the web&amp;lt;br&amp;gt;the location of the sitemap can be announced to web crawlers in robots.txt&lt;br /&gt;
|-&lt;br /&gt;
|bot-trap&lt;br /&gt;
|folder containing the [[Bot-trap]]&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/bot-trap/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[Bot-trap]]&lt;br /&gt;
|the bot-trap needs to be accessible through the web&lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:.htaccess|.htaccess]]&lt;br /&gt;
|file containing access-rules to the folder for web requests&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/.htaccess&amp;lt;/code&amp;gt;&lt;br /&gt;
|[https://www.askapache.com/htaccess/ Ultimate htaccess]&amp;lt;br&amp;gt;[https://httpd.apache.org/docs/current/mod/mod_rewrite.html mod rewrite]&amp;lt;br&amp;gt;[https://htaccess.madewithlove.be/ rewrite-tester]&amp;lt;br&amp;gt;[[htaccess examples]]&lt;br /&gt;
|a .htaccess file can be defined for every folder in web root &lt;br /&gt;
|-&lt;br /&gt;
|[[wpen:robots.txt|robots.txt]]&lt;br /&gt;
|file containing access-rules for bot requests&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/robots.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:robots.txt|Manual:robots.txt]]&lt;br /&gt;
|these rules are not enforced by the web server; enforcement will have to be done through [[wpen:.htaccess|.htaccess]] and the [[Bot-trap]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MediaWiki-specific Structure===&lt;br /&gt;
These folders and files are specific to MediaWiki.&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Folder / File&lt;br /&gt;
!Function&lt;br /&gt;
!Path (example)&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki&lt;br /&gt;
|folder containing the files of the [[wpen:MediaWiki|MediaWiki]] installation&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Download|Download]]&amp;lt;br&amp;gt;[[med:Manual:Installing MediaWiki|Manual:Installing MediaWiki]]&lt;br /&gt;
|it is possible, but not advisable, to install MediaWiki directly in the web root: [[med:Manual:Wiki in site root directory|Manual:Wiki in site root directory]]&lt;br /&gt;
|-&lt;br /&gt;
|images&lt;br /&gt;
|folder containing all files uploaded to the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/images/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Configuring file uploads|Manual:Configuring file uploads]]&lt;br /&gt;
|this folder needs to be retained during an [[#Upgrade]], otherwise files which were uploaded to the Wiki will be lost&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|folder containing all MediaWiki extensions&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/extensions/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Extensions|Manual:Extensions]]&amp;lt;br&amp;gt;[[wde:Wiki Aventurica:Extensions|Wiki Aventurica:Extensions]]&lt;br /&gt;
|Certain extensions are bundled with every MediaWiki download, these only need to be activated in LocalSettings.php. Many others need to be downloaded into the extensions folder first.&lt;br /&gt;
|-&lt;br /&gt;
|cache&lt;br /&gt;
|folder containing the cache of the wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/cache/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:Cache|Manual:Cache]]&amp;lt;br&amp;gt;[[Localsettings]]&lt;br /&gt;
|Keeping the cache files outside of the MediaWiki folder will enable smaller and faster [[#Backup]]s, because the cache does not need to be backed up.&lt;br /&gt;
|-&lt;br /&gt;
|custom&lt;br /&gt;
|folder containing all your custom files&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/custom/&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[Custom files]]&lt;br /&gt;
|Keeping all your custom files outside of the MediaWiki folder will enable faster [[#Upgrade]]s, because you will not have to worry about losing files when switching folders. Examples for custom files would be php files which you include into LocalSettings.php, and your Wiki&#039;s logo.&lt;br /&gt;
|-&lt;br /&gt;
|LocalSettings.php&lt;br /&gt;
|file containing the configuration of the Wiki&lt;br /&gt;
|&amp;lt;code&amp;gt;/var/www/vhosts/mywebsite.example/httpdocs/w/LocalSettings.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|[[med:Manual:LocalSettings.php|Manual:LocalSettings.php]]&amp;lt;br&amp;gt;[[med:Manual:Configuration settings|Manual:Configuration settings]]&amp;lt;br&amp;gt;[[med:Manual:Hooks|Manual:Hooks]]&amp;lt;br&amp;gt;[[Localsettings]]&lt;br /&gt;
|This is the file central to the configuration of your Wiki. Here you can change variables, define and configure the extensions which should be used, use hooks, and include code from other files. Most commonly used: [[med:Manual:Short URL/Apache|Manual:Short URL/Apache]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgScriptPath = &amp;quot;/w&amp;quot;; #MediaWiki folder&lt;br /&gt;
$wgArticlePath = &amp;quot;/wiki/$1&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Administrative Tasks==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
see [[#Upgrade]], or [[med:Manual:Installing MediaWiki|Manual:Installing MediaWiki]]&lt;br /&gt;
&lt;br /&gt;
Using [[wpen:Xampp|Xampp]], it is possible to set up a wiki on your personal computer, see [[med:Manual:Installing MediaWiki on XAMPP|Manual:Installing MediaWiki on XAMPP]].&lt;br /&gt;
&lt;br /&gt;
===Backup===&lt;br /&gt;
A [[med:Manual:Backing up a wiki|Backup]] of a MediaWiki consists of &lt;br /&gt;
#the database&lt;br /&gt;
#the MediaWiki folder  (more precise: the &amp;lt;code&amp;gt;/images&amp;lt;/code&amp;gt; folder and all customized files, especially &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
In addition, it is possible to dump the contents of the Wiki in [[wpen:XML|XML]] format.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is of course important to know how to recreate the Wiki from a backup.&lt;br /&gt;
&lt;br /&gt;
For compressing / decompressing a backup, see [[Web server administration#Working with Code]].&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Aspect&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|backup database&lt;br /&gt;
|[[med:Manual:Backing up a wiki#Database|Manual:Backing up a wiki]]&lt;br /&gt;
|[https://www.digitalocean.com/community/tutorials/how-to-import-and-export-databases-in-mysql-or-mariadb Import and Export Databases in MySQL or MariaDB]&amp;lt;br /&amp;gt;[https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump mariadb-dump documentation]&amp;lt;br /&amp;gt;[https://dev.mysql.com/doc/refman/8.4/en/innodb-backup.html InnoDB Backup documentation]&lt;br /&gt;
|There are two ways to create a backup of the database:&lt;br /&gt;
*Simply copy the folder in which the database file is saved. This backup can be used to quickly restore the database on the same system.&lt;br /&gt;
*Export the database into a [[wpen:sql|sql]] file which can be used to recreate the database on another system.&lt;br /&gt;
**The best way to do this is to run mariadb-dump from the command line (through [[Web server administration#Webserver access|SSH]]).&lt;br /&gt;
**There is also an option to export the database in phpMyAdmin, but this could fail for a large database.&lt;br /&gt;
&lt;br /&gt;
An example for a script which uses both options can be found at [[Backup script]].&lt;br /&gt;
&lt;br /&gt;
It is advisable to always check if the backup was actually created - in some cases the backup file will be empty if an error occured.&lt;br /&gt;
|-&lt;br /&gt;
|backup file system&lt;br /&gt;
|[[med:Manual:Backing up a wiki#File system|Manual:Backing up a wiki]]&lt;br /&gt;
|[[ubuntu:tar|tar]]&lt;br /&gt;
|[[wpen:tar (computing)|tar]] combines multiple files into one and thus can be used to create a backup of a folder. It is advisable to also compress this tar-file with [[wpen:gzip|gzip]].&lt;br /&gt;
&lt;br /&gt;
This example creates a backup of the web root folder:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tar -zcf /var/www/vhosts/yourwebsite.example/backups/httpdocs.tar.gz /var/www/vhosts/yourwebsite.example/httpdocs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there is no [[Web server administration#Webserver access|SSH]] access, file backup needs to be done through [[Web server administration#Webserver access|FTP]].&lt;br /&gt;
|-&lt;br /&gt;
|backup wiki content&lt;br /&gt;
|[[med:Manual:dumpBackup.php|Manual:dumpBackup.php]]&lt;br /&gt;
|[[med:Manual:Importing XML dumps|Manual:Importing XML dumps]]&lt;br /&gt;
|Runnung dumpBackup.php from the command line requires  [[Web server administration#Webserver access|SSH]] access; it exports wiki pages, but not user accounts, files or deleted page revisions - thus it is impossible to fully recreate a wiki with this dump.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#all page versions&lt;br /&gt;
php dumpBackup.php --full &amp;gt; dump.xml&lt;br /&gt;
#only current page versions&lt;br /&gt;
php dumpBackup.php --current &amp;gt; dumpcurrent.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|restoring a Wiki from backup&lt;br /&gt;
|[[med:Manual:Restoring a wiki from backup|Manual:Restoring a wiki from backup]]&lt;br /&gt;
|[https://www.thomas-krenn.com/de/wiki/Archive_unter_Linux_%28tar,_gz,_bz2,_zip%29 Archive unter Linux (tar, gz, bz2, zip)]&amp;lt;br&amp;gt;[https://sebastianviereck.de/importieren-grosser-mysql-datenbanken-unter-xampp/ Importieren großer Datenbanken unter xampp]&amp;lt;br&amp;gt;[https://github.com/kedarvj/mysqldumpsplitter mysqldumpsplitter]&amp;lt;br&amp;gt;[https://dev.mysql.com/doc/refman/9.7/en/server-system-variables.html#sysvar_key_buffer_size key_buffer_size]&lt;br /&gt;
|Ideally, you would never need to do this, except if you change servers.&lt;br /&gt;
&lt;br /&gt;
The backup is probably compressed and thus needs to be decompressed first.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u wikidb_user -p wikidb &amp;lt; dump_of_wikidb.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the backup is large, import might take too long if &amp;lt;code&amp;gt;key_buffer_size&amp;lt;/code&amp;gt; is too low (default is 8MB). Solution from [https://serverfault.com/questions/146525/how-can-i-speed-up-a-mysql-restore-from-a-dump-file serverfault.com]: Turn it up temporarily to 30% of your RAM.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Maintenance scripts===&lt;br /&gt;
[[Web server administration#Webserver_Access|SSH]] access is required for running the [[med:Manual:Maintenance scripts|Manual:Maintenance scripts]] from the command line. Most of the scripts should not necessary, but some scripts should run regularly (using [[wpen:Cron|Cron]] or [[wpen:Systemd|Systemd]]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable top&amp;quot;&lt;br /&gt;
!Script&lt;br /&gt;
!MediaWiki Link&lt;br /&gt;
!Useful Links&lt;br /&gt;
!Frequency&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:runJobs.php|runJobs.php]]&lt;br /&gt;
|[[med:Manual:Job queue|Manual:Job queue]]&lt;br /&gt;
|&lt;br /&gt;
|10 minutes&lt;br /&gt;
|This script works on the job queue. It is advisable to run it regularly, using [[wpen:Cron|Cron]] or [[wpen:Systemd|Systemd]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php runJobs --maxtime 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[med:Manual:rebuildall.php|rebuildall.php]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|when needed&lt;br /&gt;
|This script updates categories, links, file usage and the search index for all pages in the wiki. These updates happen for a page if a new version of that page is saved, so usually it should not be necessary to run this script.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php rebuildall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|delete html file cache&lt;br /&gt;
|[[med:Manual:File cache|Manual:File cache]]&amp;lt;br&amp;gt;[[med:Manual:purgePage.php|purgePage.php]]&lt;br /&gt;
|&lt;br /&gt;
|1 month&lt;br /&gt;
|The html code of every page is saved and served to anonymous users until the page is edited (so possibly indefinitely), so it is advisable to delete this cache from time to time. Sadly, there is no maintenance script for this, so we use the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
find /var/www/vhosts/mywebsite.example/httpdocs/cache/html -type f -delete&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If there is a page (or a list of pages) which you want refreshed more frequently, you could use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php maintenance/run.php purgePage &amp;lt; /var/www/vhosts/mywebsite.example/httpdocs/custom/purgedaily.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Upgrade===&lt;br /&gt;
Unfortunately, in MediaWiki there is no [[med:Manual:Upgrading|Upgrade]] script that will automate the whole process for you, so you will basically have to do a reinstall every time you upgrade your Wiki. Items in the following list which are only necessary during an upgrade will be marked with &amp;lt;code&amp;gt;(*)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
#(*) [[#Backup]] the Wiki&lt;br /&gt;
#[[med:Download|Download]] the new version of MediaWiki and the corresponding versions of all [[med:Manual:Extensions|Extensions]] that are not [[med:Bundled extensions and skins|bundled]]&lt;br /&gt;
#Move the files of the new version onto the server&lt;br /&gt;
##(*) Rename the folder with the files of the old MediaWiki version&lt;br /&gt;
##Create a folder with a name of your choosing (&amp;lt;code&amp;gt;/w/&amp;lt;/code&amp;gt; is suggested)&lt;br /&gt;
##Move the files of the new MediaWiki version (along with the new versions of all extensions) into the new folder&lt;br /&gt;
##*either upload them to and decompress them on the server using [[Web server administration#Webserver Access|SSH]] (much faster than the alternative)&lt;br /&gt;
##*or decompress them on your personal computer and upload them using [[Web server administration#Webserver Access|FTP]] (slow, but necessary if there is no SSH access)&lt;br /&gt;
#(*) move the &amp;lt;code&amp;gt;images&amp;lt;/code&amp;gt; folder and all custom files (especially &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;) from the old folder into the new folder&lt;br /&gt;
#do the database update (the database must exist already)&lt;br /&gt;
#*either use the webinstaller: Access the URL &amp;lt;code&amp;gt;yourwebsite.example/mw-config/index.php&amp;lt;/code&amp;gt; with your browser and follow the instructions there. This method may timeout if a large database needs to be updated, but the webinstaller will generate a new [[Localsettings]] for you.&lt;br /&gt;
#*or use [[Web server administration#Webserver Access|SSH]]: Run [[med:Manual:update.php|update.php]] from the command line. Updating [[Localsettings]] will be up to you.&lt;br /&gt;
#If you used the webinstaller, you will have to move the generated &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to the MediaWiki folder. After that, the Wiki should be functional (again).&lt;br /&gt;
&lt;br /&gt;
If errors occur during the database update or when accessing the Wiki after the upgrade, most of the time extensions or outdated [[Localsettings]] are responsible. Analyzing these errors and fixing bugs is usually the most time-consuming task of the upgrade process, which is the reason why it is advisable to test the upgrade on a separate testwiki.&lt;br /&gt;
&lt;br /&gt;
Bugfixes used on Wiki Aventurica can be found at [[Bugfixes]].&lt;br /&gt;
&lt;br /&gt;
Something to note: The webinstaller has an option enabled by default which will lead to the Wiki sending data about it to a MediaWiki-Server, see [[med:Manual:$wgPingback|Manual:$wgPingback]]. If you forgot to opt-out during the upgrade process, it is possible to fix this by adding &amp;lt;code&amp;gt;$wgPingback = false;&amp;lt;/code&amp;gt; to the [[Localsettings]].&lt;br /&gt;
&lt;br /&gt;
==Rules and Regulations==&lt;br /&gt;
No matter where your server is located, there are probably some [[laws]] defining what you should or should not do with your website. In Germany, for example, we need to have an [[Impressum]], and we need to inform our visitors about our [[Privacy policy]].&lt;br /&gt;
&lt;br /&gt;
But if you are running a wiki which can be edited by other people, it also is a good idea to craft some rules for the community of your editors - [[wpen:Terms of service|terms of service]] (TOS), so to speak (in Germany called [[wpde:Allgemeine Geschäftsbedingungen|Allgemeine Geschäftsbedingungen]] (AGB), which is of course a bit misleading for non-profit websites).&lt;br /&gt;
&lt;br /&gt;
Those rules should clarify:&lt;br /&gt;
*which kind of content the wiki is for&lt;br /&gt;
*how the content should be presented&lt;br /&gt;
*and what kind of behavior is expected from the editors&lt;br /&gt;
&lt;br /&gt;
It is possible to make every new editor confirm those rules while [[Special:CreateAccount|creating a new account]], if the [[med:Extension:NewSignupPage|Extension:NewSignupPage]] is installed and properly configured, see [[MediaWiki Extensions]].&lt;br /&gt;
&lt;br /&gt;
It is also possible to ask every user for confirmation every time those rules are changed, by installing and properly configuring [[med:Extension:UserAgreement|Extension:UserAgreement]] (see [[Bugfixes/MediaWiki_1.45#Extension:UserAgreement_(2.0.0)]]).&lt;br /&gt;
&lt;br /&gt;
===examples at Wiki Aventurica===&lt;br /&gt;
*Projektinhalt&lt;br /&gt;
**[[wde:Wiki Aventurica:Verwendung offizieller Produkte|Wiki Aventurica:Verwendung offizieller Produkte]]&lt;br /&gt;
*Format der Artikel&lt;br /&gt;
**[[wde:Wiki Aventurica:Erstellen neuer Artikel|Wiki Aventurica:Erstellen neuer Artikel]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Seitenangabe|Wiki Aventurica:Seitenangabe]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Quellenangaben|Wiki Aventurica:Quellenangaben]]&lt;br /&gt;
*Nutzerverhalten&lt;br /&gt;
**[[wde:Wiki Aventurica:Umgangston|Wiki Aventurica:Umgangston]]&lt;br /&gt;
**[[wde:Wiki Aventurica:Konflikte|Wiki Aventurica:Konflikte]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=627</id>
		<title>Javascript examples</title>
		<link rel="alternate" type="text/html" href="https://links.blauparadiesvogel.de/w/index.php?title=Javascript_examples&amp;diff=627"/>
		<updated>2026-10-05T17:40:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* TOC collapsed by default */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
It is possible to define [[med:JavaScript|JavaScript]] directly in wiki pages. Depending on what page it is, the JavaScript will then be loaded for some group of users.&lt;br /&gt;
&lt;br /&gt;
If [[med:Extension:Gadgets|Extension:Gadgets]] is installed, these examples can also be made into a gadget, to be loaded only if a user enables it.&lt;br /&gt;
&lt;br /&gt;
[[wde:Hilfe:JavaScript|Hilfe:JavaScript]] lists all the possible pages where JavaScript can be defined in Wiki Aventurica.&lt;br /&gt;
&lt;br /&gt;
Actually in use are the following pages:&lt;br /&gt;
*[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
*[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
*[[wde:MediaWiki:Timeless.js|MediaWiki:Timeless.js]]&lt;br /&gt;
*And the pages linked from [[wde:Spezial:Helferlein|Spezial:Helferlein]]&lt;br /&gt;
&lt;br /&gt;
[[wpen:Wikipedia:User scripts|Wikipedia:User scripts]] links to many examples of user scripts.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
When making adjustments with JavaScript, you should remember that users could have deactivated JavaScript in their brower configuration.&lt;br /&gt;
&lt;br /&gt;
If you decide to use JavaScript, knowing [[wpen:jQuery|jQuery]] will probably simplify the code. Tasks typical for MediaWiki can also be done by using MediaWiki functions.&lt;br /&gt;
&lt;br /&gt;
;Manual: [[med:Manual:Interface/JavaScript|Manual:Interface/JavaScript]]&lt;br /&gt;
;Documentation: [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference javascript], [https://api.jquery.com/ jQuery], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw MediaWiki]&lt;br /&gt;
;Selection of elements:&lt;br /&gt;
:by id: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;#element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:by class: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;.element&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
;Validator:[https://www.jslint.com/ jslint.com]&lt;br /&gt;
;Debugging: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;console.log( &amp;quot;Test1&amp;quot; );&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Gadgets==&lt;br /&gt;
Here is a list of gadgets we have been using at Wiki Aventurica:&lt;br /&gt;
&lt;br /&gt;
*[[wpde:Benutzer:TMg/autoFormatter|autoFormatter]]&lt;br /&gt;
*[[wpen:Wikipedia:HotCat|HotCat]]&lt;br /&gt;
*[[commons:MediaWiki:Gadget-rightsfilter.js|LogFilter]]&lt;br /&gt;
*[[wpen:User:DerHexer/revisionjumper|RevisionJumper]]&lt;br /&gt;
*[[wpde:Benutzer:Schnark/js/search++|SearchPlus]]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===automatic expansion of all grouped changes in [[Special:RecentChanges]]===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// Auto-Expand all grouped RC/Watchlist entries.&lt;br /&gt;
$(function() {&lt;br /&gt;
  $(&#039;.mw-enhancedchanges-arrow&#039;).click();&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TOC collapsed by default===&lt;br /&gt;
The [[med:TOC|table of contents]] takes up quite some space, better to have it collapsed by default.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/addClass/ addClass]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * collapses TOC by default&lt;br /&gt;
 *&lt;br /&gt;
 * @version 31.03.2020&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$(window).ready(function() { $(&#039;.toctogglecheckbox&#039;).click(); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Search focus on main page===&lt;br /&gt;
When loading the main page of a wiki, people might be looking to search for a page. This function automatically focuses the search bar when loading the main page, saving the users a click.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/focus/ focus]&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * when loading the main page, focuses the search bar&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/MediaWiki:Gadget-searchFocus.js&lt;br /&gt;
 * @version 12.11.2013&lt;br /&gt;
 * @author [[wpen:User:Nihiltres]], [[wpen:Krinkle]]&lt;br /&gt;
 */&lt;br /&gt;
if ( mw.config.get( &#039;wgIsMainPage&#039; ) ) {&lt;br /&gt;
  $( function () {&lt;br /&gt;
    $( &#039;#searchInput&#039; ).focus();&lt;br /&gt;
  } );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===moving upload link to personal links===&lt;br /&gt;
In my opinion, the link to [[Special:Upload]] (only available to users who are logged in anyways) should be amoung the personal links.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * move upload link to personal links&lt;br /&gt;
 *&lt;br /&gt;
 * @version 28.09.2015&lt;br /&gt;
 * @author [[wde:StipenTreublatt]]&lt;br /&gt;
 */&lt;br /&gt;
$( &amp;quot;#pt-mycontris&amp;quot; ).after( $( &amp;quot;#t-upload&amp;quot; ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===confirmation for rollback===&lt;br /&gt;
This prevents accidental rollbacks by sysops.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * requires confirmation for rollback action&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:MusikAnimal/confirmationRollback.js&lt;br /&gt;
 * @version 30.04.2017&lt;br /&gt;
 * @author [[wpen:User:MusikAnimal]]&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [&#039;mediawiki.util&#039;] ), $.ready).then( function() {&lt;br /&gt;
	$(&amp;quot;.mw-rollback-link&amp;quot;).on(&#039;click&#039;, function(e) {&lt;br /&gt;
		var count = e.target.innerText.match(/\d/) ? e.target.innerText.match(/\d+/)[0] : null,&lt;br /&gt;
			message = &#039;Rollback &#039; + (count ? count + &#039; edits&#039; : &#039;edit&#039;) + &#039; by &#039; + mw.util.getParamValue(&#039;from&#039;,e.target.href) + &#039;?&#039;;&lt;br /&gt;
		if(!confirm(message)) return e.preventDefault();&lt;br /&gt;
	});&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add sandbox link to personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a &amp;quot;sandbox&amp;quot; link to the personal links. This could also be achieved via the [[med:Extension:SandboxLink|Extension:SandboxLink]].&lt;br /&gt;
&lt;br /&gt;
;used methods:[https://doc.wikimedia.org/mediawiki-core/master/js/module-mediawiki.util.html#.addPortletLink mw.util.addPortletLink]&lt;br /&gt;
&lt;br /&gt;
;parameters:&lt;br /&gt;
*first parameter: To which &amp;quot;portlet&amp;quot; the link will be added, in this case &amp;lt;code&amp;gt;&#039;p-personal&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*second parameter: URL to which the link will point to, in this case the subpage &amp;quot;sandbox&amp;quot; of the current user.&lt;br /&gt;
*third parameter: The text displayed by the link, in this case &amp;quot;My Sandbox&amp;quot;.&lt;br /&gt;
*fourth parameter: ID of the link in the html code, in this case &amp;lt;code&amp;gt;&#039;pt-mysandbox&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
*fifth parameter: Tooltip for the link, in this case &amp;quot;My little Sandbox&amp;quot;&lt;br /&gt;
*sixth parameter: Accesskey, or &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;&lt;br /&gt;
*seventh parameter: ID of the link, after which the new link will be inserted, in this case &amp;lt;code&amp;gt;&#039;#pt-mytalk&#039;&amp;lt;/code&amp;gt;. If none given, the link will be added after the last existing one.&lt;br /&gt;
&lt;br /&gt;
;Used in:[[wde:MediaWiki:Group-user.js|MediaWiki:Group-user.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a &amp;quot;My sandbox&amp;quot; link to the personal portlet menu.&lt;br /&gt;
 *&lt;br /&gt;
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox&lt;br /&gt;
 * @version 16.07.2014, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( function () {&lt;br /&gt;
	var conf, title, url;&lt;br /&gt;
&lt;br /&gt;
	// Customize/Translate this to your needs&lt;br /&gt;
	conf = {&lt;br /&gt;
		subpageName: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletLabel: &#039;Sandkasten&#039;,&lt;br /&gt;
		portletTooltip: &#039;Persönliche Seite zum Experimentieren&#039;&lt;br /&gt;
	};&lt;br /&gt;
	// Don&#039;t alter the code below&lt;br /&gt;
&lt;br /&gt;
	title = new mw.Title( &#039;Special:MyPage/&#039; + conf.subpageName );&lt;br /&gt;
&lt;br /&gt;
	url = mw.util.getUrl( title ),&lt;br /&gt;
&lt;br /&gt;
	mw.util.addPortletLink(&lt;br /&gt;
    	&#039;p-personal&#039;,&lt;br /&gt;
    	url,&lt;br /&gt;
    	conf.portletLabel,&lt;br /&gt;
    	&#039;pt-mysandbox&#039;,&lt;br /&gt;
    	conf.portletTooltip,&lt;br /&gt;
    	null,&lt;br /&gt;
    	&#039;#pt-preferences&#039;&lt;br /&gt;
	);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===add purge link to page tools===&lt;br /&gt;
&lt;br /&gt;
This function adds a purge link to the page tools, giving users the option to refresh the server cache of the page with one click. This function should not work for bots, see [[med:Manual:Purge|Manual:Purge]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*jQuery: [https://api.jquery.com/length/ length]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * adds purge link to page tools&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
 * @version 04.04.2020&lt;br /&gt;
 */&lt;br /&gt;
$.when( mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ), $.ready ).then( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || mw.config.get( &#039;wgNamespaceNumber&#039; ) &amp;lt; 0 ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		&#039;Purge&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$( node ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then( function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		} );&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===adding links to [[Special:WhatLinksHere]]===&lt;br /&gt;
&lt;br /&gt;
Adds &amp;quot;delete&amp;quot; and &amp;quot;history&amp;quot; links to the pages linked in [[Special:WhatLinksHere]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Adds &amp;quot;hist&amp;quot; and &amp;quot;delete&amp;quot; link to [[Special:WhatLinksHere]]&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Special:WhatLinksHere_action_links&lt;br /&gt;
 * @version 03.04.2018, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
$( &#039;#mw-whatlinkshere-list li&#039; ).each( function() {&lt;br /&gt;
  var url = mw.config.get( &#039;wgScript&#039; ) + &#039;?title=&#039; + encodeURIComponent( $( &#039;a:first&#039;, this ).text() ) + &#039;&amp;amp;action=&#039;;&lt;br /&gt;
  //if #ca-delete exists, user should be allowed to delete&lt;br /&gt;
  if ($( &amp;quot;#ca-delete&amp;quot; ).length) {&lt;br /&gt;
    $( &#039;.mw-whatlinkshere-tools a:last&#039;, this ).after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;delete&#039; ).text( &#039;delete&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
  }&lt;br /&gt;
  $( &#039;.mw-whatlinkshere-tools a:last&#039;, this )&lt;br /&gt;
    .after( $( &#039;&amp;lt;a&amp;gt;&#039; ).attr( &#039;href&#039;, url + &#039;history&#039; ).text( &#039;history&#039; ) ).after( &#039; | &#039; );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Special:AllPages]] and [[Special:PrefixIndex]] in one column===&lt;br /&gt;
&lt;br /&gt;
The lists on [[Special:AllPages]] and [[Special:PrefixIndex]] are displayed in three columns, which can be confusing. This script combines the three columns into one, numbering the items in the process. It also numbers the list on [[Special:Whatlinkshere]].&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variable &amp;quot;wgCanonicalSpecialPageName&amp;quot;&lt;br /&gt;
*jQuery: [https://api.jquery.com/append/ append], [https://api.jquery.com/children/ children], [https://api.jquery.com/appendTo/ appendTo], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/length/ length], [https://api.jquery.com/before/ before], [https://api.jquery.com/after/ after]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-OneColumn.js|Gadget-OneColumn.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/OneColumn]]&lt;br /&gt;
&lt;br /&gt;
===customization of edit toolbar===&lt;br /&gt;
&lt;br /&gt;
This function customizes the edit toolbar, see the manual at [[med:Extension:WikiEditor/Toolbar_customization|Extension:WikiEditor/Toolbar_customization]].&lt;br /&gt;
&lt;br /&gt;
The signature button could also be controlled by [[med:Manual:$wgExtraSignatureNamespaces|$wgExtraSignatureNamespaces]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/ToolbarCustomization]]&lt;br /&gt;
&lt;br /&gt;
===defaultsummaries===&lt;br /&gt;
&lt;br /&gt;
This function adds selection boxes for default edit summaries.&lt;br /&gt;
&lt;br /&gt;
;code:[[/DefaultSummaries]]&lt;br /&gt;
&lt;br /&gt;
===userlinks and userinfos===&lt;br /&gt;
These two functions create two rows with links and information beneath the user name on user pages:&lt;br /&gt;
#userlinks: Adds a row with links to special pages containing information in regard to the user account; if these links exist by default somewhere else in the UI, they are moved.&lt;br /&gt;
#userinfo: Adds a row with information about the user groups, the number of edits, and the age of the user account.&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*MediaWiki: [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config mw.config]-Variablen (&amp;quot;wgNamespaceNumber&amp;quot;, &amp;quot;wgTitle&amp;quot; und &amp;quot;wgPageName&amp;quot;), [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-addPortletLink mw.util.addPortletLink], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.util-method-getUrl mw.util.getUrl], [https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw-method-config.get mw.config.get]&lt;br /&gt;
*[[wpen:jQuery|jQuery]]: [https://api.jquery.com/append/ append], [https://api.jquery.com/contents/ contents], [https://api.jquery.com/replaceWith/ replaceWith], [https://api.jquery.com/length/ length], [https://api.jquery.com/remove/ remove]&lt;br /&gt;
*[[wpen:JavaScript|JavaScript]]: [http://wiki.selfhtml.org/wiki/JavaScript/Variable Variablen], [http://www.w3schools.com/jsref/jsref_regexp_test.asp test()]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Common.js|MediaWiki:Common.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Userlinks and Userinfos]]&lt;br /&gt;
&lt;br /&gt;
===hide sidebar while editing===&lt;br /&gt;
This function hides any sidebar while the user is editing a page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ExpandEdit.js|MediaWiki:Gadget-ExpandEdit.js]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Hide sidebar while editing&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Zellfaze/expandEdit.js&lt;br /&gt;
 * @author [[wpen:User:Zellfaze]] on https://en.wikipedia.org/&lt;br /&gt;
 * @version 30.09.2015, adapted for Wiki Aventurica&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
if (jQuery(&#039;#wpTextbox1&#039;).length) {&lt;br /&gt;
  if ( mw.config.get( &#039;skin&#039; ) === &#039;monobook&#039; ) {&lt;br /&gt;
    jQuery(&#039;#p-search&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  }&lt;br /&gt;
  jQuery(&#039;#panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-panel&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#p-logo&#039;).css(&#039;display&#039;, &#039;none&#039;);&lt;br /&gt;
  jQuery(&#039;#content&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#mw-head-base&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
  jQuery(&#039;#left-navigation&#039;).css(&#039;margin-left&#039;, &#039;0px&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===better diffs===&lt;br /&gt;
&lt;br /&gt;
This function cleans up [[wpen:diff|diffs]] by removing markings of content which was not changed.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-CleanDiff.js|MediaWiki:Gadget-CleanDiff.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/CleanDiff]]&lt;br /&gt;
&lt;br /&gt;
===weekday on [[Special:RecentChanges]]===&lt;br /&gt;
&lt;br /&gt;
This function adds the day of the week on [[Special:RecentChanges]] and [[Special:Watchlist]].&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-Wochentag.js|MediaWiki:Gadget-Wochentag.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/Weekday]]&lt;br /&gt;
&lt;br /&gt;
===live clock in personal links===&lt;br /&gt;
&lt;br /&gt;
This function adds a live clock at the end of the personal links.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-UTCLiveClock.js|MediaWiki:Gadget-UTCLiveClock.js]]&lt;br /&gt;
&lt;br /&gt;
;code:[[/LiveClock]]&lt;br /&gt;
&lt;br /&gt;
===add debug links===&lt;br /&gt;
&lt;br /&gt;
This function adds some toolbox links useful for debugging.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-DebugLinks.js|MediaWiki:Gadget-DebugLinks.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add a toolbox link to display the current page with MediaWiki message names replacing their text&lt;br /&gt;
 * Add a toolbox link to reload the current page with debug mode enabled&lt;br /&gt;
 * &lt;br /&gt;
 * @source [[wpen:MediaWiki:Gadget-ShowMessageNames.js]] and [[wpen:MediaWiki:Gadget-DebugMode.js]]&lt;br /&gt;
 * @version 05.04.2018&lt;br /&gt;
 * @author [[wpen:User:Edokter]] on https://en.wikipedia.org/&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
mw.loader.using( &#039;mediawiki.util&#039; ).then( function () {&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;uselang=qqx&#039;,&lt;br /&gt;
    &#039;Systemmeldungen&#039;,&lt;br /&gt;
    &#039;t-messagenames&#039;,&lt;br /&gt;
    &#039;Shows the names of the system messages used on this page&#039;&lt;br /&gt;
  );&lt;br /&gt;
  mw.util.addPortletLink(&lt;br /&gt;
    &#039;p-pagemisc&#039;,&lt;br /&gt;
    location.href.replace( location.hash, &#039;&#039; ) + ( location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;debug=true&#039;,&lt;br /&gt;
    &#039;Debug-Modus&#039;,&lt;br /&gt;
    &#039;t-debugmode&#039;,&lt;br /&gt;
    &#039;Loads the current page in debug mode&#039;&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===show page creation stats===&lt;br /&gt;
&lt;br /&gt;
This function reads page creation stats from the html code of the current page.&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-ShowPageStats.js|MediaWiki:Gadget-ShowPageStats.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Simple script to scrape a page&#039;s html comments (looking for &#039;served by&#039;, &#039;newpp&#039; and &#039;Transclusion expansion time report&#039;).&lt;br /&gt;
 * &lt;br /&gt;
 * @source https://en.wikipedia.org/wiki/User:Splarka/showcomments.js&lt;br /&gt;
 * @version 20.05.2024, adapted for Wiki Aventurica&lt;br /&gt;
 * @author [[wpen:User:Splarka]] on https://en.wikipedia.org&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$(function() {&lt;br /&gt;
  mw.util.addPortletLink(&#039;p-pagemisc&#039;,&#039;#&#039;,&#039;Seitenerstellungs-Statistik&#039;,&#039;t-sps&#039;);&lt;br /&gt;
  $(&amp;quot;#t-sps&amp;quot;).on(&amp;quot;click&amp;quot;, function(){&lt;br /&gt;
      alert(dumpComments(document.getElementsByTagName(&amp;quot;body&amp;quot;)[0]));&lt;br /&gt;
  });&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
function dumpComments(obj) {&lt;br /&gt;
  var childs = 0; var txt = &#039;&#039;;&lt;br /&gt;
  if(obj.nodeType == 8 &amp;amp;&amp;amp; obj.nodeValue.search(/(NewPP|Served by|Transclusion expansion time report)/) != -1) { &lt;br /&gt;
    txt += obj.nodeValue;&lt;br /&gt;
  }&lt;br /&gt;
  while(obj.childNodes[childs]) {&lt;br /&gt;
    txt += dumpComments(obj.childNodes[childs]);&lt;br /&gt;
    childs++;&lt;br /&gt;
  }&lt;br /&gt;
  return txt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===remove elements from pages===&lt;br /&gt;
&lt;br /&gt;
This removes the first element of the infobox (in Wiki Aventurica a line repeating the page title) and the heading &amp;quot;Kurzbeschreibung&amp;quot; (in Wiki Aventurica, different to Wikipedia, containing the first block of text).&lt;br /&gt;
&lt;br /&gt;
;used methods:&lt;br /&gt;
*jQuery: [https://api.jquery.com/find/ find], [https://api.jquery.com/filter/ filter], [https://api.jquery.com/first-selector/ first-selector], [https://api.jquery.com/remove/ remove], [https://api.jquery.com/parent/ parent]&lt;br /&gt;
&lt;br /&gt;
;used in:[[wde:MediaWiki:Gadget-MinimalDesign.js|MediaWiki:Gadget-MinimalDesign.js]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$( &amp;quot;table.infobox&amp;quot; ).find( &amp;quot;tr&amp;quot; ).filter( &amp;quot;:first&amp;quot; ).remove(); //Überschrift der Infoboxen entfernen&lt;br /&gt;
$( &amp;quot;#Kurzbeschreibung&amp;quot; ).parent().remove(); //Überschrift &amp;quot;Kurzbeschreibung&amp;quot; entfernen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>