<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.rabbibob.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rabbi+Bob</id>
	<title>Rabbi Blog - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.rabbibob.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rabbi+Bob"/>
	<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php/Special:Contributions/Rabbi_Bob"/>
	<updated>2026-10-29T04:12:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2078</id>
		<title>KitchenAid kbfs25ewms10</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2078"/>
		<updated>2026-10-25T15:53:46Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Bottom Drawer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Home]]&lt;br /&gt;
[[Category:Weblog-2026-10]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Item:&#039;&#039;&#039; Kitchenaid Refrigerator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Model:&#039;&#039;&#039;  KBFS25EWMS10&lt;br /&gt;
&lt;br /&gt;
==Bottom Drawer==&lt;br /&gt;
===Removal===&lt;br /&gt;
# Extend the entire drawer&lt;br /&gt;
# Remove inner tray cages&lt;br /&gt;
# Unscrew the 2 (one each side) 1/4&amp;quot; screws holding the top inner drawer rail.&lt;br /&gt;
#* The top drawer can be extending it to the end of the track and gently pulling it past the rail.  Getting it back in will require releasing the two tabs so the gear wheel free floats.&lt;br /&gt;
# The front panel sits atop 4 screws: slightly unscrew these (not all the way) and lift the front panel off. (Heavy)&lt;br /&gt;
# Center vent cover has a small clip (flat head screwdriver) to assist removal.&lt;br /&gt;
# Right side sensor panel has a small clip.&lt;br /&gt;
# Ice tray&lt;br /&gt;
## Disconnect the power cable (two small clips)&lt;br /&gt;
## Slight unscrew the two top screws&lt;br /&gt;
## Remove the bottom screw and remove the ice tray&lt;br /&gt;
# Back panel has four screws: remove them&lt;br /&gt;
# Remove the power connector&lt;br /&gt;
# Remove the back panel&lt;br /&gt;
===Installing===&lt;br /&gt;
# Make sure the sensor is pulled into place when placing the back panel&lt;br /&gt;
# Place back panel in place&lt;br /&gt;
## Attach the power connector to panel&lt;br /&gt;
## Use a screw driver to assist aligning the hose&lt;br /&gt;
# Screw in the four screws&lt;br /&gt;
# Ice tray&lt;br /&gt;
## Hang the tray on the two screw&lt;br /&gt;
## Secure the bottom screw&lt;br /&gt;
## Secure the top screws&lt;br /&gt;
## Align the water hose&lt;br /&gt;
## Connect the power&lt;br /&gt;
# Thread sensor in sensor guard and attach to back (upper right)&lt;br /&gt;
# Attach fan guard&lt;br /&gt;
# Place bottom cage back in lower drawer&lt;br /&gt;
# Upper rail&lt;br /&gt;
## On the upper rail assembly, release the two tabs on each of the gear house&lt;br /&gt;
## Insert the upper rail assembly&lt;br /&gt;
## Click gear housing into place&lt;br /&gt;
# Insert upper cage and ice tray&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2077</id>
		<title>KitchenAid kbfs25ewms10</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2077"/>
		<updated>2026-10-25T13:42:09Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* =Removal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Home]]&lt;br /&gt;
[[Category:Weblog-2026-10]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Item:&#039;&#039;&#039; Kitchenaid Refrigerator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Model:&#039;&#039;&#039;  KBFS25EWMS10&lt;br /&gt;
&lt;br /&gt;
==Bottom Drawer==&lt;br /&gt;
===Removal===&lt;br /&gt;
* To remove the bottom drawer on the KBFS25EWMS10, first fully extend the drawer. Locate the release tabs or levers on each side of the drawer slides. Press or lift these tabs simultaneously while gently pulling the drawer out. If it resists, check for any obstructions or debris in the tracks. Clean the tracks if needed and ensure the drawer is level before reinserting. Regular cleaning prevents sticking and prolongs smooth operation.&lt;br /&gt;
* Video: https://youtu.be/OuqSkMnI-UY?t=25&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2076</id>
		<title>KitchenAid kbfs25ewms10</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2076"/>
		<updated>2026-10-25T13:42:01Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Home]]&lt;br /&gt;
[[Category:Weblog-2026-10]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Item:&#039;&#039;&#039; Kitchenaid Refrigerator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Model:&#039;&#039;&#039;  KBFS25EWMS10&lt;br /&gt;
&lt;br /&gt;
==Bottom Drawer==&lt;br /&gt;
===Removal==&lt;br /&gt;
* To remove the bottom drawer on the KBFS25EWMS10, first fully extend the drawer. Locate the release tabs or levers on each side of the drawer slides. Press or lift these tabs simultaneously while gently pulling the drawer out. If it resists, check for any obstructions or debris in the tracks. Clean the tracks if needed and ensure the drawer is level before reinserting. Regular cleaning prevents sticking and prolongs smooth operation.&lt;br /&gt;
* Video: https://youtu.be/OuqSkMnI-UY?t=25&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2075</id>
		<title>KitchenAid kbfs25ewms10</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=KitchenAid_kbfs25ewms10&amp;diff=2075"/>
		<updated>2026-10-25T13:38:31Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: Created page with &amp;quot;Category:Home Category:Weblog-2026-10  &amp;#039;&amp;#039;&amp;#039;Item:&amp;#039;&amp;#039;&amp;#039; Kitchenaid Refrigerator &amp;#039;&amp;#039;&amp;#039;Model:&amp;#039;&amp;#039;&amp;#039;  KBFS25EWMS10&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Home]]&lt;br /&gt;
[[Category:Weblog-2026-10]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Item:&#039;&#039;&#039; Kitchenaid Refrigerator&lt;br /&gt;
&#039;&#039;&#039;Model:&#039;&#039;&#039;  KBFS25EWMS10&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2074</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2074"/>
		<updated>2026-10-17T14:01:42Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Active || [https://geysermc.org/wiki/geyser/ Info]  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Active ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active (Check for 26.3) ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2073</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2073"/>
		<updated>2026-10-10T23:39:39Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Active (Dev) || [https://geysermc.org/wiki/geyser/ Info]  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Active ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active (Check for 26.3) ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2072</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2072"/>
		<updated>2026-09-27T14:21:52Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Inactive Needs Update || [https://geysermc.org/wiki/geyser/ Info]  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Inactive Needs Update ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active (Check for 26.3) ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2071</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2071"/>
		<updated>2026-09-27T14:20:20Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Inactive Needs Update ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Inactive Needs Update ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active (Check for 26.3) ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2070</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2070"/>
		<updated>2026-09-27T14:19:08Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Inactive Needs Update ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Inactive Needs Update ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2069</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2069"/>
		<updated>2026-09-27T14:18:51Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;class=&amp;quot;wikitable sortable&amp;quot;&amp;quot; &lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Inactive Needs Update ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Inactive Needs Update ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2068</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2068"/>
		<updated>2026-09-27T14:18:20Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Inactive Needs Update ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Inactive Needs Update ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2067</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2067"/>
		<updated>2026-09-27T14:12:48Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/?project=floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2066</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2066"/>
		<updated>2026-09-27T14:12:22Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://geysermc.org/download/ GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2065</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2065"/>
		<updated>2026-09-27T14:10:59Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Inactive Needs Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2064</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2064"/>
		<updated>2026-09-27T14:10:31Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending Update ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2063</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2063"/>
		<updated>2026-09-27T14:08:17Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 (for 26.2) || Active||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending ||  || May be outdated after the 26.3 update&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2062</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2062"/>
		<updated>2026-09-27T14:06:55Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] || 3.0.1 || Pending ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending ||  || May be outdated after the 26.3 update&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2061</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2061"/>
		<updated>2026-09-27T14:06:01Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Active||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] ||  || Pending ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending ||  || May be outdated after the 26.3 update&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2060</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2060"/>
		<updated>2026-09-27T14:05:25Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky Chunky] || [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 1.5.3] || Pending ||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] ||  || Pending ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending ||  || May be outdated after the 26.3 update&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2059</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2059"/>
		<updated>2026-09-27T14:03:17Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Item !! Version !! Status !! Documentation !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://papermc.io/downloads/paper PaperMC] || 26.3 || Active || [https://docs.papermc.io/paper/admin/ Documentation] || [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] ||  || Pending ||  || For Bedrock connections&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate] ||  || Pending ||  || Required by GeyserMC&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] ||  || Pending ||  || For Chunk loading&lt;br /&gt;
|-&lt;br /&gt;
| [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest] ||  || Pending ||  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap] ||  || Pending ||  || May be outdated after the 26.3 update&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2058</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2058"/>
		<updated>2026-09-27T13:26:13Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
** [https://docs.papermc.io/paper/admin/ Documentation]&lt;br /&gt;
*** [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest/versions?platform=PAPER Deathchest]&lt;br /&gt;
* [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2057</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2057"/>
		<updated>2026-09-27T13:25:03Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
** [https://docs.papermc.io/paper/admin/ Documentation]&lt;br /&gt;
*** [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest Deathchest]&lt;br /&gt;
* [https://modrinth.com/plugin/pl3xmap/versions Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2056</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2056"/>
		<updated>2026-09-27T13:24:18Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
** [https://docs.papermc.io/paper/admin/ Documentation]&lt;br /&gt;
*** [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest Deathchest]&lt;br /&gt;
* [https://modrinth.com/plugin/pl3xmap Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2055</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2055"/>
		<updated>2026-09-18T10:38:58Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* HU Minecraft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
** [https://docs.papermc.io/paper/admin/ Documentation]&lt;br /&gt;
*** [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest Deathchest]&lt;br /&gt;
* [https://hangar.papermc.io/granny/Pl3xMap Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2054</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2054"/>
		<updated>2026-09-18T10:38:43Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Versions and Plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
** [https://docs.papermc.io/paper/admin/ Documentation]&lt;br /&gt;
*** [https://docs.papermc.io/paper/updating/ Upgrading] &lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest Deathchest]&lt;br /&gt;
* [https://hangar.papermc.io/granny/Pl3xMap Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2053</id>
		<title>Minecraft</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Minecraft&amp;diff=2053"/>
		<updated>2026-09-18T10:30:26Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HU Minecraft=&lt;br /&gt;
* See [[Minecraft Village]&lt;br /&gt;
==Restoration==&lt;br /&gt;
&lt;br /&gt;
==Versions and Plugins==&lt;br /&gt;
* [https://papermc.io/downloads/paper PaperMC]&lt;br /&gt;
* [https://hangar.papermc.io/GeyserMC/Geyser/versions/Geyser GeyserMC] for Bedrock connections&lt;br /&gt;
** Requires [https://hangar.papermc.io/GeyserMC/Floodgate Floodgate]&lt;br /&gt;
* [https://hangar.papermc.io/pop4959/Chunky/versions/1.5.3 Chunky] for Chunk loading&lt;br /&gt;
* [https://hangar.papermc.io/CyntrixAlgorithm/DeathChest Deathchest]&lt;br /&gt;
* [https://hangar.papermc.io/granny/Pl3xMap Pl3xMap]&lt;br /&gt;
** May be outdated after the 26.3 update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=Old Server=&lt;br /&gt;
I may still have the backup of this.&lt;br /&gt;
==Server Rules==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I reserve the right to ban\remove anyone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Respect the other players and their structures\work&lt;br /&gt;
* No griefing&lt;br /&gt;
* PG language&lt;br /&gt;
&lt;br /&gt;
==Server==&lt;br /&gt;
* &#039;&#039;&#039;Modpack&#039;&#039;&#039;: Tekkit (see details below)&lt;br /&gt;
* &#039;&#039;&#039;Address&#039;&#039;&#039;: Invite only&lt;br /&gt;
* &#039;&#039;&#039;Whitelist&#039;&#039;&#039;: Currently open&lt;br /&gt;
* &#039;&#039;&#039;Max Players&#039;&#039;&#039;: 10&lt;br /&gt;
&lt;br /&gt;
==Client==&lt;br /&gt;
* Grab the [http://www.technicpack.net/tekkit/ Technic Launcher]&lt;br /&gt;
** All the mods are included in the Launcher&lt;br /&gt;
** Be aware of the Java issue ([http://www.technicpack.net/article/view/concurrentmodificationexception-in-java-18020.89 notes here]) and get Java 1.7.0_67 or Java 1.8.0_11.  &lt;br /&gt;
*** If you are running a 64bit OS, get the 64bit version&lt;br /&gt;
*** Uninstall all other versions of Java before installing these&lt;br /&gt;
* Launch the launcher&lt;br /&gt;
** Sign in on your first time in to attach your Minecraft account to the Launcher&lt;br /&gt;
* Scroll down until you see Tekkit (not Hexxit, not Tekkit Classic, etc)&lt;br /&gt;
* Click Play&lt;br /&gt;
===Connecting===&lt;br /&gt;
* Get the server IP and port, add the server to the Server List and connect&lt;br /&gt;
==ModPack Details==&lt;br /&gt;
* Any questions about the Modpack or how to use the modpack (recipes, etc) can start [http://www.technicpack.net/tekkit/#mod-list here]&lt;br /&gt;
&lt;br /&gt;
==Starting Place==&lt;br /&gt;
&lt;br /&gt;
New players can utilize the starting home for temporary respite while getting situated in the new world.&lt;br /&gt;
&lt;br /&gt;
[[Image:MinecraftHomeSanctuary.png]]&lt;br /&gt;
&lt;br /&gt;
==Coordinates==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-128 73 135&lt;br /&gt;
-263 68 -71&lt;br /&gt;
1597 94 4106&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Minecraft]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=PhpBB&amp;diff=2052</id>
		<title>PhpBB</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=PhpBB&amp;diff=2052"/>
		<updated>2026-08-29T10:29:01Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: Created page with &amp;quot;Category:Weblog-2026-08 Category:Linux  phpBB, proof that I am a masochist.  =Updating versions= * Ref: https://www.phpbb.com/support/docs/en/3.3/ug/upgradeguide/update_full/ ==Prepping== * Download the full package and read the update directions ** tl\dr: unzip the zip and clear out folder\files to NOT overwrite in the destination later &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; del config.php rmdir /s /q &amp;quot;files/&amp;quot; rmdir /s /q &amp;quot;images/&amp;quot; rmdir /s /q &amp;quot;store/&amp;quot; &amp;lt;/syntaxhighlight&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Weblog-2026-08]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
phpBB, proof that I am a masochist.&lt;br /&gt;
&lt;br /&gt;
=Updating versions=&lt;br /&gt;
* Ref: https://www.phpbb.com/support/docs/en/3.3/ug/upgradeguide/update_full/&lt;br /&gt;
==Prepping==&lt;br /&gt;
* Download the full package and read the update directions&lt;br /&gt;
** tl\dr: unzip the zip and clear out folder\files to NOT overwrite in the destination later&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
del config.php&lt;br /&gt;
rmdir /s /q &amp;quot;files/&amp;quot;&lt;br /&gt;
rmdir /s /q &amp;quot;images/&amp;quot;&lt;br /&gt;
rmdir /s /q &amp;quot;store/&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Double check the listing below and create cleanup.sh executable in the phpbb dir on the webserver&lt;br /&gt;
* Run the script from that dir (else it fails) using &amp;quot;Usage: ./cleanup.sh &#039;&#039;&#039;/var/www/html/target_directory&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Check if target directory is provided as an argument&lt;br /&gt;
if [ -z &amp;quot;$1&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: Target directory not provided.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Usage: ./cleanup.sh /path/to/target_directory&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Resolve absolute paths for reliable comparison&lt;br /&gt;
TARGET_DIR=$(realpath &amp;quot;$1&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
CURRENT_DIR=$(pwd)&lt;br /&gt;
&lt;br /&gt;
# Verify the target directory actually exists before comparing&lt;br /&gt;
if [ -z &amp;quot;$TARGET_DIR&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: The specified target directory does not exist.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# SAFETY CHECK 1: Ensure script is run from inside the target directory&lt;br /&gt;
if [ &amp;quot;$CURRENT_DIR&amp;quot; != &amp;quot;$TARGET_DIR&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Safety Check Failed: You must run this script from inside the target directory.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Please &#039;cd&#039; into $TARGET_DIR and run the script from there.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# SAFETY CHECK 2: Confirm config.php exists&lt;br /&gt;
if [ ! -f &amp;quot;config.php&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Safety Check Failed: &#039;config.php&#039; was not found in $CURRENT_DIR.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# SAFETY CHECK 3: Confirm config.php contains the word &#039;phpBB&#039;&lt;br /&gt;
if ! grep -q &#039;phpBB&#039; config.php; then&lt;br /&gt;
    echo &amp;quot;Safety Check Failed: &#039;config.php&#039; does not contain the word &#039;phpBB&#039;.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Aborting to prevent accidental deletion in a non-phpBB directory.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Safety checks passed. Starting cleanup in $TARGET_DIR...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Execute cleanup&lt;br /&gt;
# -mindepth 1 and -maxdepth 1 ensure we only look at the immediate contents of the directory&lt;br /&gt;
find . -mindepth 1 -maxdepth 1 \&lt;br /&gt;
    -not -name &#039;cleanup.sh&#039; \&lt;br /&gt;
    -not -name &#039;config.php&#039; \&lt;br /&gt;
    -not -name &#039;ext&#039; \&lt;br /&gt;
    -not -name &#039;files&#039; \&lt;br /&gt;
    -not -name &#039;images&#039; \&lt;br /&gt;
    -not -name &#039;store&#039; \&lt;br /&gt;
    -not -name &#039;styles&#039; \&lt;br /&gt;
    -exec rm -rf {} +&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Cleanup complete! Unnecessary files and directories have been removed.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* You should have a clean area now. &lt;br /&gt;
* Follow the rest of the directions&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Fail2Ban&amp;diff=2051</id>
		<title>Fail2Ban</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Fail2Ban&amp;diff=2051"/>
		<updated>2026-08-29T10:05:45Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: Created page with &amp;quot;==Notes== * /var/log/fail2ban  =Timing= We&amp;#039;ve been set to 1 month. I really don&amp;#039;t care to see those IP addresses here.  ==Manual Banning== Ex: sudo fail2ban-client set &amp;lt;jail&amp;gt; banip &amp;lt;IP_ADDRESS&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; sudo fail2ban-client set sshd banip 192.168.1.100 sudo fail2ban-client status sshd sudo fail2ban-client set sshd unbanip 192.168.1.100 &amp;lt;/syntaxhighlight&amp;gt;    Category:Wiki Category:Weblog-2026-08&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Notes==&lt;br /&gt;
* /var/log/fail2ban&lt;br /&gt;
&lt;br /&gt;
=Timing=&lt;br /&gt;
We&#039;ve been set to 1 month. I really don&#039;t care to see those IP addresses here.&lt;br /&gt;
&lt;br /&gt;
==Manual Banning==&lt;br /&gt;
Ex: sudo fail2ban-client set &amp;lt;jail&amp;gt; banip &amp;lt;IP_ADDRESS&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo fail2ban-client set sshd banip 192.168.1.100&lt;br /&gt;
sudo fail2ban-client status sshd&lt;br /&gt;
sudo fail2ban-client set sshd unbanip 192.168.1.100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Main_Page&amp;diff=2050</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Main_Page&amp;diff=2050"/>
		<updated>2026-08-29T09:39:22Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This site is mainly a collection of my own meanderings and interests (of course it would be, it&#039;s my site).  If you&#039;re lost, I suggest checking out either the [[Special:Categories|Categories]] or [[Special:Contributions/Rabbi_Bob|My Contributions]] page to see if there really is anything of interest for you at all here.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If you were looking for MikeBeane.com, you&#039;ve found that as well.  I can&#039;t be bothered to update two sites, so both domains point to the same place on the web.  It&#039;s just another spot....&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;left&amp;quot; class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;background:#000000; color:white&amp;quot;| Last Entries&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;DynamicPageList&amp;gt;&lt;br /&gt;
namespace = mainspace&lt;br /&gt;
  ordermethod = lastedit&lt;br /&gt;
  count=20&lt;br /&gt;
&amp;lt;/DynamicPageList&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|+&lt;br /&gt;
! style=&amp;quot;background:#000000; color:white&amp;quot;| External Links&lt;br /&gt;
|-&lt;br /&gt;
|{{ExternalLinks}}|}&lt;br /&gt;
{{HideTitle}}&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Category:Weblog-2026-07&amp;diff=2049</id>
		<title>Category:Weblog-2026-07</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Category:Weblog-2026-07&amp;diff=2049"/>
		<updated>2026-08-28T00:21:43Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: Created page with &amp;quot;Category:Blog&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Blog]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Half_Life_Log_Parsing&amp;diff=2048</id>
		<title>Half Life Log Parsing</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Half_Life_Log_Parsing&amp;diff=2048"/>
		<updated>2026-08-28T00:19:54Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Purpose=&lt;br /&gt;
Awhile ago I started a project called &amp;quot;[[Atlashl|AtlasHL]]&amp;quot; and today while I was sick I decided to go back and look at some of the scripting I had done two years ago.  Without too much detail, I did today in two hours what I did in about two months back then.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not a Regex Guru by any stretch of the imagination and while there are better ways to do what I&#039;m doing, I do actually have some reasons for breaking some specific log lines the way I do.  Someday I&#039;ll learn efficiency, but for right now, I&#039;m going through this in the worst way possible: stepped if/elsif statements until the end.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
# Generally just bashing lines through the regex.  After I get through all of the logs I have, I&#039;ll look at categorizing a little better (and condensing some lines).&lt;br /&gt;
# Current ratio:&lt;br /&gt;
## 10,972 logs&lt;br /&gt;
## 114 unmatched lines (mostly repetitive)&lt;br /&gt;
## 2,619,859 matched lines&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#http://developer.valvesoftware.com/wiki/HL_Log_Standard#054._Team_Selection&lt;br /&gt;
&lt;br /&gt;
The HL Log Standard appears to be a little long in the tooth and hasn&#039;t been really updated and the adhering to it is loose at best depending on what game you&#039;re looking at.  Tthis is my opinion, but I have nearly 100 thousand logs from various games &amp;amp; mods to back this up with.&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
# Created by Rabbi-Bob&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my ($VERSION)=&amp;quot;0.6B&amp;quot;;&lt;br /&gt;
my ($LASTEDIT)=&amp;quot;11/03/2007&amp;quot;;&lt;br /&gt;
my ($EDIT)=&amp;quot;Rabbi Bob&amp;quot;;&lt;br /&gt;
my ($COPYRIGHT)=&amp;quot;2007&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
#my($LOGDIR)=&amp;quot;U:/Programs/atlashl/pb/oldlogs&amp;quot;;&lt;br /&gt;
#my($LOGDIR)=&amp;quot;V:/Programs/Perl/logscanner/source/logs&amp;quot;;&lt;br /&gt;
my($LOGDIR)=&amp;quot;input&amp;quot;;&lt;br /&gt;
my($LOGFILE_IN)=();         #logfile input vars&lt;br /&gt;
my($FILE)=();&lt;br /&gt;
my(@FILES)=();&lt;br /&gt;
my($OUTPUT)=();                #output vars&lt;br /&gt;
my($missing)=();&lt;br /&gt;
&lt;br /&gt;
my ($TODO_OUT)=&amp;quot;todo.txt&amp;quot;;&lt;br /&gt;
my ($DONE_OUT)=&amp;quot;done.csv&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my @LINES=();&lt;br /&gt;
my $LINES=();&lt;br /&gt;
&lt;br /&gt;
my $LOGLINE=();&lt;br /&gt;
my $lineno = 0; # The line number in the log file    &lt;br /&gt;
&lt;br /&gt;
##################################&lt;br /&gt;
opendir(DIR, &amp;quot;$LOGDIR&amp;quot;) or die &amp;quot;Cannot open $LOGDIR to read: $!&amp;quot;;&lt;br /&gt;
@FILES = grep(/\.log$/,readdir(DIR));&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
&lt;br /&gt;
open (TODO_OUT, &amp;quot;&amp;gt;$TODO_OUT&amp;quot;) or die &amp;quot;Cannot open $TODO_OUT to output: $!&amp;quot;;&lt;br /&gt;
open (DONE_OUT, &amp;quot;&amp;gt;$DONE_OUT&amp;quot;) or die &amp;quot;Cannot open $DONE_OUT to output: $!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print DONE_OUT &amp;quot;EventID,LogLine\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
@FILES = sort (@FILES); # reverse the array&lt;br /&gt;
&lt;br /&gt;
$lineno = 0; # The line number in the log file&lt;br /&gt;
&lt;br /&gt;
foreach $FILE (@FILES) &lt;br /&gt;
    {&lt;br /&gt;
	$LOGFILE_IN=&amp;quot;$LOGDIR/$FILE&amp;quot;;&lt;br /&gt;
    $lineno=0;&lt;br /&gt;
    &lt;br /&gt;
    ########### Open Logfile for reading ############################################&lt;br /&gt;
	#open the input file&lt;br /&gt;
	open LOGFILE_IN, $LOGFILE_IN or die &amp;quot;Cannot open $LOGFILE_IN for read :$!&amp;quot;;&lt;br /&gt;
	print &amp;quot;scanning $LOGFILE_IN\n&amp;quot;;&lt;br /&gt;
    ######################################################################&lt;br /&gt;
        while (&amp;lt;LOGFILE_IN&amp;gt;)&lt;br /&gt;
	    {&lt;br /&gt;
        $LINES[$lineno]=$_;            &lt;br /&gt;
        print $LINES[$lineno];&lt;br /&gt;
        $lineno++;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        $lineno=0;&lt;br /&gt;
        &lt;br /&gt;
        foreach $LINES (@LINES)&lt;br /&gt;
        {&lt;br /&gt;
        $LOGLINE=$LINES[$lineno];&lt;br /&gt;
        &amp;amp;CHECKLINE($LOGLINE);&lt;br /&gt;
        $lineno++;        &lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
            &lt;br /&gt;
        #$lineno++; # increment the line number primarily for debugging&lt;br /&gt;
	    #$LOGLINE=$_;&lt;br /&gt;
	    ##### Log File Comment #####&lt;br /&gt;
&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvars start&lt;br /&gt;
     &lt;br /&gt;
            &lt;br /&gt;
    }    &lt;br /&gt;
        close (LOGFILE_IN);&lt;br /&gt;
    #    close ($FILE);        &lt;br /&gt;
     #Close of log file&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
     #End of log files&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
##################################################&lt;br /&gt;
################### Main Loop End ################&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub printmissing&lt;br /&gt;
    {&lt;br /&gt;
    #Alternate the comment if you really want to see the area that sent the &lt;br /&gt;
    #line, otherwise just output the $_&lt;br /&gt;
    &lt;br /&gt;
    #print MISSING &amp;quot;$printout\n$_\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;Missing $_\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub CHECKLINE&lt;br /&gt;
    {&lt;br /&gt;
       if ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvars start/i)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvars end&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvars end/i)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvar &amp;quot;_tutor_bomb_viewable_check_interval&amp;quot; = &amp;quot;0.5&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvar \&amp;quot;(.*)\&amp;quot; = \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 18:12:22: server_cvar: &amp;quot;sv_accelerate&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): server_cvar: \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }          &lt;br /&gt;
        #L 11/03/2007 - 20:46:17: &amp;quot;r_AirboatViewDampenFreq&amp;quot; = &amp;quot;7.0&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; = \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }          &lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Log file started (file &amp;quot;logs\L0511019.log&amp;quot;) (game &amp;quot;cstrike&amp;quot;) (version &amp;quot;47/1.1.2.5/3647&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Log file started \(file \&amp;quot;(.*)\&amp;quot;\) \(game \&amp;quot;(.*)\&amp;quot;\) \(version \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 07:11:12: Log file closed&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Log file closed/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/30/2007 - 10:11:25: server_message: &amp;quot;quit&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): server_message: \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        #L 07/08/2007 - 03:29:10: Server shutdown    &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server shutdown/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                &lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Loading map &amp;quot;de_dust&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Loading map \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;003A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:30: Started map &amp;quot;de_dust&amp;quot; (CRC &amp;quot;-1641307065&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Started map \&amp;quot;(.*)\&amp;quot; \(CRC \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;003B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 04/25/2007 - 08:30:44: Bad Rcon: &amp;quot;rcon 578394037 &amp;quot;password&amp;quot; changelevel de_dust &amp;quot; from &amp;quot;65.175.222.9:61147&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Bad Rcon: \&amp;quot;(.*) \&amp;quot;(.*)\&amp;quot; (.*)\&amp;quot; from \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        &lt;br /&gt;
        #L 10/29/2007 - 23:23:24: rcon from &amp;quot;70.91.92.66:1941&amp;quot;: command &amp;quot;log on&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): rcon from \&amp;quot;(.*)\&amp;quot;: command \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/06/2005 - 21:27:47: Rcon: &amp;quot;rcon 4018452088 &amp;quot;toyota&amp;quot; log&amp;quot; from &amp;quot;24.253.156.83:7130&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Rcon: \&amp;quot;(.*) \&amp;quot;(.*)\&amp;quot; (.*)\&amp;quot; from \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 20:25:34: rcon from &amp;quot;66.30.92.200:2058&amp;quot;: Bad Password&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): rcon from \&amp;quot;(.*)\&amp;quot;: Bad Password/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004E,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        #L 10/28/2007 - 20:39:28: [META] dll: Updating plugins...&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[META|CSTRIKE|CSX|FUN\] (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;007A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:44:28: &amp;quot;FoCA|LocoYokel&amp;lt;158&amp;gt;&amp;lt;STEAM_ID_PENDING&amp;gt;&amp;lt;&amp;gt;&amp;quot; connected, address &amp;quot;72.177.119.42:12381&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; connected, address \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;050A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 02:00:04: &amp;quot;-Ãinosaur&amp;lt;161&amp;gt;&amp;lt;STEAM_0:1:3908269&amp;gt;&amp;lt;&amp;gt;&amp;quot; STEAM USERID validated&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; STEAM USERID validated/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;050B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:50:41: &amp;quot;FoCA|rochvegas j&amp;lt;9&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; entered the game&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; entered the game$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;051A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:44:12: &amp;quot;violeNt| Conen.&amp;lt;157&amp;gt;&amp;lt;STEAM_0:0:5752133&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; disconnected (reason &amp;quot;Disconnect by user.&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected \(reason \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:46:43: &amp;quot;(* ) ( *)&amp;lt;1&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;&amp;gt;&amp;quot; disconnected&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/28/2007 - 21:28:34: Kick: &amp;quot;Ciggarette  / Gago&amp;lt;202&amp;gt;&amp;lt;STEAM_0:1:15378592&amp;gt;&amp;lt;&amp;gt;&amp;quot; was kicked by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Kick: &amp;quot;(.*)&amp;quot; was kicked by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:30: Ban: &amp;quot;&amp;lt;&amp;gt;&amp;lt;STEAM_0:0:1004474&amp;gt;&amp;lt;&amp;gt;&amp;quot; was banned &amp;quot;permanently&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Ban: &amp;quot;(.*)&amp;quot; was banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/20/2007 - 21:54:31: Ban: &amp;quot;VZLA.milk&amp;lt;192&amp;gt;&amp;lt;STEAM_0:1:14553521&amp;gt;&amp;lt;&amp;gt;&amp;quot; was kicked and banned &amp;quot;for 5.00 minutes&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Ban: &amp;quot;(.*)&amp;quot; was kicked and banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        &lt;br /&gt;
        #L 11/03/2007 - 23:41:06: &amp;quot;FoCA| TADMG&amp;lt;113&amp;gt;&amp;lt;STEAM_0:0:85065&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; disconnected (reason &amp;quot;No Steam logon&lt;br /&gt;
        ###HL2DM &amp;amp; CS:S output appears to include a line carriage when announcing STEAM account issues###&lt;br /&gt;
        # Confirmed with Alfred Reynolds 11-6-07&lt;br /&gt;
        #&lt;br /&gt;
        # Hey, you need to parse all the text between the quotes for this one, the reason string on disconnect &lt;br /&gt;
        # is shown in the users UI and we are moving more lines to have breaks for readability. - Alfred&lt;br /&gt;
        &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected \(reason \&amp;quot;(.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052Z,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        ##L 11/03/2007 - 01:44:44: Banid: &amp;quot;&amp;lt;&amp;gt;&amp;lt;STEAM_0:1:9283492&amp;gt;&amp;lt;&amp;gt;&amp;quot; was banned &amp;quot;permanently&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Banid: &amp;quot;(.*)&amp;quot; was banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:03:32: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; committed suicide with &amp;quot;hegrenade&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; committed suicide with \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;053A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:50:46: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;Unassigned&amp;gt;&amp;quot; joined team &amp;quot;CT&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; joined team \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;054A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:45:01: &amp;quot;FoCA|Rolyak&amp;lt;986&amp;gt;&amp;lt;STEAM_0:1:72275&amp;gt;&amp;lt;Axis&amp;gt;&amp;quot; changed role to &amp;quot;#class_axis_k43&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; changed role to \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;055A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 01:59:19: &amp;quot;Anarico&amp;lt;42&amp;gt;&amp;lt;STEAM_0:1:412737&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; changed name to &amp;quot;FoCA|Anarico&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; changed name to \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;056A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:54:24: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; killed &amp;quot;Alice&amp;lt;8&amp;gt;&amp;lt;STEAM_0:0:2357615&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; with &amp;quot;m4a1&amp;quot;    &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; killed \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;057A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:54:24: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; killed &amp;quot;Alice&amp;lt;8&amp;gt;&amp;lt;STEAM_0:0:2357615&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; with &amp;quot;m4a1&amp;quot; (headshot)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; killed \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; \((.*)\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;057B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:52:36: &amp;quot;FoCA|Rabbi Bob&amp;lt;17&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; triggered &amp;quot;Got_The_Bomb&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:06: &amp;quot;FoCA|Rolyak&amp;lt;986&amp;gt;&amp;lt;STEAM_0:1:72275&amp;gt;&amp;lt;Allies&amp;gt;&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot; - &amp;quot;POINT_AVALANCHE_AXISGUNPOSITION&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot; - \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060BA,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 20:57:29: &amp;quot;FoCA|moondance&amp;lt;970&amp;gt;&amp;lt;STEAM_0:0:1852522&amp;gt;&amp;lt;Axis&amp;gt;&amp;quot; triggered a &amp;quot;dod_object&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060BA,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:51:39: Team &amp;quot;TERRORIST&amp;quot; triggered &amp;quot;Target_Bombed&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
        #L 05/11/2007 - 06:50:22: Team &amp;quot;CT&amp;quot; triggered &amp;quot;Target_Saved&amp;quot; (CT &amp;quot;1&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:06:35: Team &amp;quot;CT&amp;quot; triggered &amp;quot;CTs_Win&amp;quot; (CT &amp;quot;12&amp;quot;) (T &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:06: Team &amp;quot;Allies&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot; - &amp;quot;POINT_AVALANCHE_AXISGUNPOSITION&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot; - \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/30/2005 - 20:51:57: Team &amp;quot;Allies&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        #L 05/11/2007 - 06:46:52: World triggered &amp;quot;Round_Start&amp;quot;&lt;br /&gt;
        #L 05/11/2007 - 06:46:43: World triggered &amp;quot;Round_End&amp;quot;&lt;br /&gt;
        #L 11/02/2007 - 23:50:47: World triggered &amp;quot;Game_Commencing&amp;quot;            &lt;br /&gt;
        #L 11/04/2007 - 02:06:26: World triggered &amp;quot;Intermission_Time_Limit&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): World triggered \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;062A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
       #L 05/11/2007 - 06:46:43: World triggered &amp;quot;Round_Draw&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
       #L 04/21/2007 - 07:43:18: World triggered &amp;quot;Game_Commencing&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): World triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;062B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 11/04/2007 - 01:48:19: &amp;quot;FoCA|LocoYokel&amp;lt;158&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; say &amp;quot;test&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; say \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;063A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:52:25: &amp;quot;[CoFR]FoxyFire&amp;lt;156&amp;gt;&amp;lt;STEAM_0:0:1362382&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; say_team &amp;quot;go back door&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; say_team \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;063B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 07:11:12: Team &amp;quot;CT&amp;quot; scored &amp;quot;6&amp;quot; with &amp;quot;0&amp;quot; players&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; scored \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; players/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;065A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:37: &amp;quot;Allies&amp;quot; scored &amp;quot;55&amp;quot; with &amp;quot;2&amp;quot; players&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; scored \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; players/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;065A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
############### AMXMODX ####################&lt;br /&gt;
        #L 10/28/2007 - 21:23:17: [admincmd.amxx] Cmd: &amp;quot;[FoCA|CoFR]Barnes&amp;lt;189&amp;gt;&amp;lt;STEAM_0:1:343958&amp;gt;&amp;lt;&amp;gt;&amp;quot; changelevel &amp;quot;de_dust2&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; changelevel \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A03A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        #L 06/03/2007 - 23:48:29: [admincmd.amxx] Cmd: &amp;quot;Simple Daddy&amp;lt;305&amp;gt;&amp;lt;STEAM_0:1:215772&amp;gt;&amp;lt;&amp;gt;&amp;quot; set cvar (name &amp;quot;sv_gravity&amp;quot;) (value &amp;quot;200&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; set cvar \(name \&amp;quot;(.*)\&amp;quot;\) \(value \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A03A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
&lt;br /&gt;
        #L 10/28/2007 - 20:41:06: [admincmd.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; ask for players list&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; ask for players list/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A07A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        &lt;br /&gt;
        #L 05/11/2007 - 06:46:18: [admin.amxx] Login: &amp;quot;(* ) ( *)&amp;lt;1&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;&amp;gt;&amp;quot; became an admin (account &amp;quot;STEAM_0:1:273255&amp;quot;) (access &amp;quot;bcdefghijklmnopqrstu&amp;quot;) (address &amp;quot;76.179.90.224&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admin.amxx\] Login: \&amp;quot;(.*)\&amp;quot; became an admin \(account \&amp;quot;(.*)\&amp;quot;\) \(access \&amp;quot;(.*)\&amp;quot;\) \(address \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A50A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/28/2007 - 21:28:34: [plmenu.amxx] Kick: &amp;quot;FoCA|rochvegas j + astigmatism&amp;lt;192&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; kick &amp;quot;Ciggarette  / Gago&amp;lt;202&amp;gt;&amp;lt;STEAM_0:1:15378592&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Kick: \&amp;quot;(.*)\&amp;quot; kick \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/17/2007 - 22:23:51: [admincmd.amxx] Kick: &amp;quot;FoCA|DRB&amp;lt;114&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; kick &amp;quot;|8|r90|Prim3[martyr]&amp;lt;143&amp;gt;&amp;lt;STEAM_0:1:2487360&amp;gt;&amp;lt;&amp;gt;&amp;quot; (reason &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Kick: \&amp;quot;(.*)\&amp;quot; kick \&amp;quot;(.*)\&amp;quot; \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/19/2007 - 21:58:00: [admincmd.amxx] Ban: &amp;quot;FoCA|DRB&amp;lt;417&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban and kick &amp;quot;cl_utch&amp;lt;433&amp;gt;&amp;lt;STEAM_0:1:9428559&amp;gt;&amp;lt;&amp;gt;&amp;quot; (minutes &amp;quot;0&amp;quot;) (reason &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Ban: \&amp;quot;(.*)\&amp;quot; ban and kick \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\) \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/29/2007 - 01:12:55: [plmenu.amxx] Ban: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;241&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban and kick &amp;quot;Ctb  SSay&amp;lt;266&amp;gt;&amp;lt;STEAM_0:1:13406436&amp;gt;&amp;lt;&amp;gt;&amp;quot; (minutes &amp;quot;5&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Ban: \&amp;quot;(.*)\&amp;quot; ban and kick \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            } &lt;br /&gt;
        #L 05/06/2005 - 20:21:21: [admincmd.amxx] Cmd: &amp;quot;FoCA|Sturm[RR]&amp;lt;15&amp;gt;&amp;lt;STEAM_0:1:548458&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban &amp;quot;STEAM_0&amp;quot; (minutes &amp;quot;:&amp;quot;) (reason &amp;quot;1&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; ban \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\) \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
        #L 05/20/2007 - 17:32:19: [plmenu.amxx] Cmd: &amp;quot;FoCA|OGWG Persecutor&amp;lt;51&amp;gt;&amp;lt;STEAM_0:0:266906&amp;gt;&amp;lt;&amp;gt;&amp;quot; transfer &amp;quot;xDf&amp;lt;69&amp;gt;&amp;lt;STEAM_0:1:14332828&amp;gt;&amp;lt;&amp;gt;&amp;quot; (team &amp;quot;TERRORIST&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; transfer \&amp;quot;(.*)\&amp;quot; \(team \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A54A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 10/28/2007 - 22:10:11: [admincmd.amxx] Cmd: &amp;quot;FoCA|rochvegas j + astigmatism&amp;lt;192&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; change nick to &amp;quot;roch&#039;s slave&amp;quot; &amp;quot;Player&amp;lt;213&amp;gt;&amp;lt;STEAM_0:1:15118437&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; change nick to \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A56A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/28/2007 - 21:12:41: [plmenu.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; slay &amp;quot;[.icC.]Duke Nukem&amp;lt;183&amp;gt;&amp;lt;STEAM_0:1:13910450&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/20/2007 - 21:28:12: [admincmd.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;121&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; slay &amp;quot;LCC Tank&amp;lt;125&amp;gt;&amp;lt;STEAM_0:1:13068210&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/28/2007 - 21:36:12: [admincmd.amxx] Cmd: &amp;quot;[FoCA|CoFR]Barnes&amp;lt;189&amp;gt;&amp;lt;STEAM_0:1:343958&amp;gt;&amp;lt;&amp;gt;&amp;quot; slap with 0 damage &amp;quot;FoCA|Senser&amp;lt;203&amp;gt;&amp;lt;STEAM_0:0:261108&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slap with (.*) damage \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                     &lt;br /&gt;
        #L 10/28/2007 - 20:42:41: [plmenu.amxx] Cmd: &amp;quot;FoCA|Rizzo&amp;lt;180&amp;gt;&amp;lt;STEAM_0:0:8245642&amp;gt;&amp;lt;&amp;gt;&amp;quot; slap with 0 damage &amp;quot;FoCA|Fullthrottle&amp;lt;160&amp;gt;&amp;lt;STEAM_0:1:386955&amp;gt;&amp;lt;&amp;gt;&amp;quot;            &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slap with (.*) damage \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                             &lt;br /&gt;
        #L 08/26/2007 - 18:12:02: [admincmd.amxx] Cmd: &amp;quot;FoCA|Chronik[BB]&amp;lt;151&amp;gt;&amp;lt;STEAM_0:1:2643832&amp;gt;&amp;lt;&amp;gt;&amp;quot; server console (cmdline &amp;quot;sv_alltalk 3&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; server console \(cmdline \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        &lt;br /&gt;
        #L 10/28/2007 - 20:39:49: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; chat &amp;quot; who changed it?&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; chat \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        #L 10/28/2007 - 20:43:30: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; tsay &amp;quot;hey RB&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; tsay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
        #L 05/14/2007 - 23:36:46: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;21&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; csay &amp;quot;Friendly fire is on, verify your targets and do not shoot teammates.  Offenders WILL be kicked.&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; csay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:13:37: [adminchat.amxx] Chat: &amp;quot;FoCA|mother_goose&amp;lt;342&amp;gt;&amp;lt;STEAM_0:1:265230&amp;gt;&amp;lt;&amp;gt;&amp;quot; psay &amp;quot;FoCA|MudBone[GH]&amp;lt;337&amp;gt;&amp;lt;STEAM_0:1:717421&amp;gt;&amp;lt;&amp;gt;&amp;quot; &amp;quot;hey&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; psay \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/04/2005 - 21:28:28: [adminchat.amxx] Chat: &amp;quot;[CoFR]STEELEAGLE|FoCA&amp;lt;1214&amp;gt;&amp;lt;STEAM_0:0:546319&amp;gt;&amp;lt;&amp;gt;&amp;quot; say &amp;quot;I thought he was a lost lamb&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; say \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:24:30: [adminvote.amxx] Vote: &amp;quot;FoCA|mother_goose&amp;lt;342&amp;gt;&amp;lt;STEAM_0:1:265230&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote custom (question &amp;quot;should loco learn how to do an actual vote?&amp;quot;) (option#1 &amp;quot;yes&amp;quot;) (option#2 &amp;quot;no&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote custom \(question \&amp;quot;(.*)\&amp;quot;\) \(option#1 \&amp;quot;(.*)\&amp;quot;\) \(option#2 \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 06/04/2007 - 18:33:37: [adminvote.amxx] Vote: &amp;quot;FoCA|DRB&amp;lt;366&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote map (map &amp;quot;mindmaze&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote map \(map \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:24:42: [adminvote.amxx] Vote: Voting successful (got &amp;quot;10&amp;quot;) (needed &amp;quot;1&amp;quot;) (result &amp;quot;should loco learn how to do an actual vote? - yes&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting successful \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\) \(result \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        #L 05/20/2005 - 21:54:29: [adminvote.amxx] Vote: Voting failed (got &amp;quot;3&amp;quot;) (needed &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting successful \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        #L 07/18/2007 - 17:04:18: [mapsmenu.amxx] Cmd: &amp;quot;FoCA|Scorp&amp;lt;2&amp;gt;&amp;lt;STEAM_0:0:7817668&amp;gt;&amp;lt;&amp;gt;&amp;quot; changelevel &amp;quot;as_crazytank&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; changelevel \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }       &lt;br /&gt;
        #L 05/12/2007 - 22:44:10: [mapchooser.amxx] Vote: Voting for the nextmap started&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Voting for the nextmap (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 06/04/2007 - 18:33:50: [adminvote.amxx] Vote: Result accepted            &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Result accepted/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 06/09/2007 - 01:27:43: [mapsmenu.amxx] Vote: Voting successful. Map will be changed to awp_city&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Voting successful. Map will be changed to (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }           &lt;br /&gt;
        #L 05/05/2005 - 23:34:32: [mapsmenu.amxx] Vote: &amp;quot;FoCA|LocoYokel&amp;lt;1402&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote maps (map#1 &amp;quot;dod_charlie&amp;quot;) (map#2 &amp;quot;&amp;quot;) (map#3 &amp;quot;&amp;quot;) (map#4 &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote maps \(map#1 \&amp;quot;(.*)\&amp;quot;\) \(map#2 \&amp;quot;(.*)\&amp;quot;\) \(map#3 \&amp;quot;(.*)\&amp;quot;\) \(map#4 \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }           &lt;br /&gt;
        &lt;br /&gt;
        #L 10/28/2007 - 20:07:20: [mapsmenu.amxx] Vote: Result accepted&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Result accepted/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
               &lt;br /&gt;
        #L 05/19/2005 - 23:06:42: [mapsmenu.amxx] Vote: Result refused&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Result refused/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/20/2005 - 21:54:29: [adminvote.amxx] Vote: Voting failed (got &amp;quot;3&amp;quot;) (needed &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting failed \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 05/07/2005 - 21:49:37: [mapsmenu.amxx] Vote: Voting failed&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Voting failed/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 10/28/2007 - 20:07:18: [mapsmenu.amxx] Vote: Voting successful. Map will be changed to as_tundra&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Voting successful. Map will be changed to (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
        #L 05/11/2005 - 21:44:40: [adminreservation.amxx] [AdminReservation] =[21st]=Maj.Vash was kicked to free a slot for [CoFR]Big Shirtless Ron!&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminreservation.amxx\] \[AdminReservation\] (.*) was kicked to free a slot for (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
&lt;br /&gt;
################### STATS #################################&lt;br /&gt;
&lt;br /&gt;
        #L 09/07/2007 - 04:25:12: &amp;quot;Koopa Koop&amp;lt;44&amp;gt;&amp;lt;STEAM_0:0:63055&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; attacked &amp;quot;MM | lil [IRA]&amp;lt;49&amp;gt;&amp;lt;STEAM_0:1:406035&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; with &amp;quot;grenade&amp;quot; (damage &amp;quot;77&amp;quot;) (damage_armor &amp;quot;0&amp;quot;) (health &amp;quot;23&amp;quot;) (armor &amp;quot;0&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; attacked \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; \(damage \&amp;quot;(.*)\&amp;quot;\) \(damage_armor \&amp;quot;(.*)\&amp;quot;\) \(health \&amp;quot;(.*)\&amp;quot;\) \(armor \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;B01A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 05/02/2005 - 23:04:49: Final Scores: Allies: 94   Axis: 476&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Final Scores: (.*): (.*) (.*): (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;B01B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
################ MISC ADDONS #################&lt;br /&gt;
&lt;br /&gt;
#L 05/14/2005 - 23:27:54: [ADMIN] IRONHAND has forgiven FoCA|Whatfer&#039;s TK.&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) has forgiven (.*)\&#039;s TK.$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/14/2005 - 23:28:24: [ADMIN] [CoFR]Keeve TK warning 1 of 3&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) TK warning (.*) of (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/02/2005 - 22:08:50: [ADMIN] FoCA|moondance Slayed for teammate attack after respawn&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for teammate attack after respawn$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/05/2005 - 23:40:18: [ADMIN] Nix Slayed for violating 3 TK warning&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for violating (.*) TK warning$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/06/2005 - 21:13:04: [ADMIN] deiter Exceeded 3 TK limit and is BANNED for 1 minutes&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Exceeded (.*) TK limit and is BANNED for (.*) minutes$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/12/2005 - 23:43:10: [ADMIN] FoCA|Ogre Slayed for melee attack&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for melee attack$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
#L 10/27/2007 - 08:07:31: Loaded 128 Maps into the maps that will be picked for the vote&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Loaded (.*) Maps into the maps that will be picked for the vote$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Nominations for the map vote: 0 out of 5 possible nominations&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Nominations for the map vote: (.*) out of (.*) possible nominations$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Randomly Filling slots for the vote with 5 out of 128&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Randomly Filling slots for the vote with (.*) out of (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Filled 5 vote slots with random maps, 5 are custom&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Filled (.*) vote slots with random maps, (.*) are custom$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: Banned 1 Maps in your mapstoban.ini file&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Banned (.*) Maps in your mapstoban.ini file$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: 1 Maps were not loaded because they were the last maps played, or defined twice, or banned&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): (.*) Maps were not loaded because they were the last maps played, or defined twice, or banned$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: Found 12 Maps in your mapcycle.txt/allmaps.txt file, 7 are available for filling slots&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Found (.*) Maps in your mapcycle.txt\/allmaps.txt file, (.*) are available for filling slots$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/26/2007 - 06:09:27: Vote: Voting for the nextmap started&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Vote: Voting for the nextmap started$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02E,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
#L 10/26/2007 - 06:09:47: Vote: Voting for the nextmap finished. The nextmap will be de_dust&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Vote: Voting for the nextmap finished. The nextmap will be (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02F,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/15/2007 - 05:13:04: -------- Mapchange to awp_war --------&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): -------- Mapchange to (.*) --------$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 05/01/2005 - 16:16:58: -------- Mapchange --------&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): -------- Mapchange --------$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 06/19/2007 - 21:26:40: Server say &amp;quot;DRB I need your steam id to fix the ban&amp;quot;&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server say \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/15/2007 - 04:48:35: FoCA|quibeep has left; de_dust is no longer nominated&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): (.*) has left; (.*) is no longer nominated$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 05/31/2005 - 17:19:23: [DODX] dev: called: GiveFnptrsToDll&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[DODX\] (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/14/2005 - 13:13:22: FATAL ERROR (shutting down): models/mapmodels/hedgehog.mdl has been modified since starting the engine.  Consider running system diagnostics to check for faulty hardware.&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): FATAL ERROR \(shutting down\): (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C04H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
################&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
            {&lt;br /&gt;
            print TODO_OUT &amp;quot;$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            #print &amp;quot;$LINES[$lineno];&amp;quot;;                        &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Perl]]&lt;br /&gt;
[[Category:Gaming]]&lt;br /&gt;
[[Category:Weblog-2007-11]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Half_Life_Log_Parsing&amp;diff=2047</id>
		<title>Half Life Log Parsing</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Half_Life_Log_Parsing&amp;diff=2047"/>
		<updated>2026-08-28T00:19:38Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Purpose=&lt;br /&gt;
Awhile ago I started a project called &amp;quot;[[Atlashl|AtlasHL]]&amp;quot; and today while I was sick I decided to go back and look at some of the scripting I had done two years ago.  Without too much detail, I did today in two hours what I did in about two months back then.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not a Regex Guru by any stretch of the imagination and while there are better ways to do what I&#039;m doing, I do actually have some reasons for breaking some specific log lines the way I do.  Someday I&#039;ll learn efficiency, but for right now, I&#039;m going through this in the worst way possible: stepped if/elsif statements until the end.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
# Generally just bashing lines through the regex.  After I get through all of the logs I have, I&#039;ll look at categorizing a little better (and condensing some lines).&lt;br /&gt;
# Current ratio:&lt;br /&gt;
## 10,972 logs&lt;br /&gt;
## 114 unmatched lines (mostly repetitive)&lt;br /&gt;
## 2,619,859 matched lines&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#http://developer.valvesoftware.com/wiki/HL_Log_Standard#054._Team_Selection&lt;br /&gt;
&lt;br /&gt;
The HL Log Standard appears to be a little long in the tooth and hasn&#039;t been really updated and the adhering to it is loose at best depending on what game you&#039;re looking at.  Tthis is my opinion, but I have nearly 100 thousand logs from various games &amp;amp; mods to back this up with.&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
# Created by Rabbi-Bob&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my ($VERSION)=&amp;quot;0.6B&amp;quot;;&lt;br /&gt;
my ($LASTEDIT)=&amp;quot;11/03/2007&amp;quot;;&lt;br /&gt;
my ($EDIT)=&amp;quot;Rabbi Bob&amp;quot;;&lt;br /&gt;
my ($COPYRIGHT)=&amp;quot;2007&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
#my($LOGDIR)=&amp;quot;U:/Programs/atlashl/pb/oldlogs&amp;quot;;&lt;br /&gt;
#my($LOGDIR)=&amp;quot;V:/Programs/Perl/logscanner/source/logs&amp;quot;;&lt;br /&gt;
my($LOGDIR)=&amp;quot;input&amp;quot;;&lt;br /&gt;
my($LOGFILE_IN)=();         #logfile input vars&lt;br /&gt;
my($FILE)=();&lt;br /&gt;
my(@FILES)=();&lt;br /&gt;
my($OUTPUT)=();                #output vars&lt;br /&gt;
my($missing)=();&lt;br /&gt;
&lt;br /&gt;
my ($TODO_OUT)=&amp;quot;todo.txt&amp;quot;;&lt;br /&gt;
my ($DONE_OUT)=&amp;quot;done.csv&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my @LINES=();&lt;br /&gt;
my $LINES=();&lt;br /&gt;
&lt;br /&gt;
my $LOGLINE=();&lt;br /&gt;
my $lineno = 0; # The line number in the log file    &lt;br /&gt;
&lt;br /&gt;
##################################&lt;br /&gt;
opendir(DIR, &amp;quot;$LOGDIR&amp;quot;) or die &amp;quot;Cannot open $LOGDIR to read: $!&amp;quot;;&lt;br /&gt;
@FILES = grep(/\.log$/,readdir(DIR));&lt;br /&gt;
closedir(DIR);&lt;br /&gt;
&lt;br /&gt;
open (TODO_OUT, &amp;quot;&amp;gt;$TODO_OUT&amp;quot;) or die &amp;quot;Cannot open $TODO_OUT to output: $!&amp;quot;;&lt;br /&gt;
open (DONE_OUT, &amp;quot;&amp;gt;$DONE_OUT&amp;quot;) or die &amp;quot;Cannot open $DONE_OUT to output: $!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print DONE_OUT &amp;quot;EventID,LogLine\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
@FILES = sort (@FILES); # reverse the array&lt;br /&gt;
&lt;br /&gt;
$lineno = 0; # The line number in the log file&lt;br /&gt;
&lt;br /&gt;
foreach $FILE (@FILES) &lt;br /&gt;
    {&lt;br /&gt;
	$LOGFILE_IN=&amp;quot;$LOGDIR/$FILE&amp;quot;;&lt;br /&gt;
    $lineno=0;&lt;br /&gt;
    &lt;br /&gt;
    ########### Open Logfile for reading ############################################&lt;br /&gt;
	#open the input file&lt;br /&gt;
	open LOGFILE_IN, $LOGFILE_IN or die &amp;quot;Cannot open $LOGFILE_IN for read :$!&amp;quot;;&lt;br /&gt;
	print &amp;quot;scanning $LOGFILE_IN\n&amp;quot;;&lt;br /&gt;
    ######################################################################&lt;br /&gt;
        while (&amp;lt;LOGFILE_IN&amp;gt;)&lt;br /&gt;
	    {&lt;br /&gt;
        $LINES[$lineno]=$_;            &lt;br /&gt;
        print $LINES[$lineno];&lt;br /&gt;
        $lineno++;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        $lineno=0;&lt;br /&gt;
        &lt;br /&gt;
        foreach $LINES (@LINES)&lt;br /&gt;
        {&lt;br /&gt;
        $LOGLINE=$LINES[$lineno];&lt;br /&gt;
        &amp;amp;CHECKLINE($LOGLINE);&lt;br /&gt;
        $lineno++;        &lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
            &lt;br /&gt;
        #$lineno++; # increment the line number primarily for debugging&lt;br /&gt;
	    #$LOGLINE=$_;&lt;br /&gt;
	    ##### Log File Comment #####&lt;br /&gt;
&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvars start&lt;br /&gt;
     &lt;br /&gt;
            &lt;br /&gt;
    }    &lt;br /&gt;
        close (LOGFILE_IN);&lt;br /&gt;
    #    close ($FILE);        &lt;br /&gt;
     #Close of log file&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
     #End of log files&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
##################################################&lt;br /&gt;
################### Main Loop End ################&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub printmissing&lt;br /&gt;
    {&lt;br /&gt;
    #Alternate the comment if you really want to see the area that sent the &lt;br /&gt;
    #line, otherwise just output the $_&lt;br /&gt;
    &lt;br /&gt;
    #print MISSING &amp;quot;$printout\n$_\n&amp;quot;;&lt;br /&gt;
    print &amp;quot;Missing $_\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub CHECKLINE&lt;br /&gt;
    {&lt;br /&gt;
       if ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvars start/i)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvars end&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvars end/i)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Server cvar &amp;quot;_tutor_bomb_viewable_check_interval&amp;quot; = &amp;quot;0.5&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server cvar \&amp;quot;(.*)\&amp;quot; = \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 18:12:22: server_cvar: &amp;quot;sv_accelerate&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): server_cvar: \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }          &lt;br /&gt;
        #L 11/03/2007 - 20:46:17: &amp;quot;r_AirboatViewDampenFreq&amp;quot; = &amp;quot;7.0&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; = \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;001D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }          &lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Log file started (file &amp;quot;logs\L0511019.log&amp;quot;) (game &amp;quot;cstrike&amp;quot;) (version &amp;quot;47/1.1.2.5/3647&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Log file started \(file \&amp;quot;(.*)\&amp;quot;\) \(game \&amp;quot;(.*)\&amp;quot;\) \(version \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 07:11:12: Log file closed&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Log file closed/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/30/2007 - 10:11:25: server_message: &amp;quot;quit&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): server_message: \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        #L 07/08/2007 - 03:29:10: Server shutdown    &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server shutdown/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;002C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                &lt;br /&gt;
        #L 05/11/2007 - 06:45:28: Loading map &amp;quot;de_dust&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Loading map \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;003A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:30: Started map &amp;quot;de_dust&amp;quot; (CRC &amp;quot;-1641307065&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Started map \&amp;quot;(.*)\&amp;quot; \(CRC \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;003B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 04/25/2007 - 08:30:44: Bad Rcon: &amp;quot;rcon 578394037 &amp;quot;password&amp;quot; changelevel de_dust &amp;quot; from &amp;quot;65.175.222.9:61147&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Bad Rcon: \&amp;quot;(.*) \&amp;quot;(.*)\&amp;quot; (.*)\&amp;quot; from \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        &lt;br /&gt;
        #L 10/29/2007 - 23:23:24: rcon from &amp;quot;70.91.92.66:1941&amp;quot;: command &amp;quot;log on&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): rcon from \&amp;quot;(.*)\&amp;quot;: command \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/06/2005 - 21:27:47: Rcon: &amp;quot;rcon 4018452088 &amp;quot;toyota&amp;quot; log&amp;quot; from &amp;quot;24.253.156.83:7130&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Rcon: \&amp;quot;(.*) \&amp;quot;(.*)\&amp;quot; (.*)\&amp;quot; from \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 20:25:34: rcon from &amp;quot;66.30.92.200:2058&amp;quot;: Bad Password&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): rcon from \&amp;quot;(.*)\&amp;quot;: Bad Password/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;004E,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        #L 10/28/2007 - 20:39:28: [META] dll: Updating plugins...&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[META|CSTRIKE|CSX|FUN\] (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;007A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:44:28: &amp;quot;FoCA|LocoYokel&amp;lt;158&amp;gt;&amp;lt;STEAM_ID_PENDING&amp;gt;&amp;lt;&amp;gt;&amp;quot; connected, address &amp;quot;72.177.119.42:12381&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; connected, address \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;050A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 02:00:04: &amp;quot;-Ãinosaur&amp;lt;161&amp;gt;&amp;lt;STEAM_0:1:3908269&amp;gt;&amp;lt;&amp;gt;&amp;quot; STEAM USERID validated&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; STEAM USERID validated/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;050B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:50:41: &amp;quot;FoCA|rochvegas j&amp;lt;9&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; entered the game&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; entered the game$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;051A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:44:12: &amp;quot;violeNt| Conen.&amp;lt;157&amp;gt;&amp;lt;STEAM_0:0:5752133&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; disconnected (reason &amp;quot;Disconnect by user.&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected \(reason \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:46:43: &amp;quot;(* ) ( *)&amp;lt;1&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;&amp;gt;&amp;quot; disconnected&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/28/2007 - 21:28:34: Kick: &amp;quot;Ciggarette  / Gago&amp;lt;202&amp;gt;&amp;lt;STEAM_0:1:15378592&amp;gt;&amp;lt;&amp;gt;&amp;quot; was kicked by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Kick: &amp;quot;(.*)&amp;quot; was kicked by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 06:45:30: Ban: &amp;quot;&amp;lt;&amp;gt;&amp;lt;STEAM_0:0:1004474&amp;gt;&amp;lt;&amp;gt;&amp;quot; was banned &amp;quot;permanently&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Ban: &amp;quot;(.*)&amp;quot; was banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/20/2007 - 21:54:31: Ban: &amp;quot;VZLA.milk&amp;lt;192&amp;gt;&amp;lt;STEAM_0:1:14553521&amp;gt;&amp;lt;&amp;gt;&amp;quot; was kicked and banned &amp;quot;for 5.00 minutes&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Ban: &amp;quot;(.*)&amp;quot; was kicked and banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }        &lt;br /&gt;
        &lt;br /&gt;
        #L 11/03/2007 - 23:41:06: &amp;quot;FoCA| TADMG&amp;lt;113&amp;gt;&amp;lt;STEAM_0:0:85065&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; disconnected (reason &amp;quot;No Steam logon&lt;br /&gt;
        ###HL2DM &amp;amp; CS:S output appears to include a line carriage when announcing STEAM account issues###&lt;br /&gt;
        # Confirmed with Alfred Reynolds 11-6-07&lt;br /&gt;
        #&lt;br /&gt;
        # Hey, you need to parse all the text between the quotes for this one, the reason string on disconnect &lt;br /&gt;
        # is shown in the users UI and we are moving more lines to have breaks for readability. - Alfred&lt;br /&gt;
        &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): &amp;quot;(.*)&amp;quot; disconnected \(reason \&amp;quot;(.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052Z,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        ##L 11/03/2007 - 01:44:44: Banid: &amp;quot;&amp;lt;&amp;gt;&amp;lt;STEAM_0:1:9283492&amp;gt;&amp;lt;&amp;gt;&amp;quot; was banned &amp;quot;permanently&amp;quot; by &amp;quot;Console&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Banid: &amp;quot;(.*)&amp;quot; was banned \&amp;quot;(.*)\&amp;quot; by \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;052D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:03:32: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; committed suicide with &amp;quot;hegrenade&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; committed suicide with \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;053A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:50:46: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;Unassigned&amp;gt;&amp;quot; joined team &amp;quot;CT&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; joined team \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;054A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:45:01: &amp;quot;FoCA|Rolyak&amp;lt;986&amp;gt;&amp;lt;STEAM_0:1:72275&amp;gt;&amp;lt;Axis&amp;gt;&amp;quot; changed role to &amp;quot;#class_axis_k43&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; changed role to \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;055A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 01:59:19: &amp;quot;Anarico&amp;lt;42&amp;gt;&amp;lt;STEAM_0:1:412737&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; changed name to &amp;quot;FoCA|Anarico&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; changed name to \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;056A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:54:24: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; killed &amp;quot;Alice&amp;lt;8&amp;gt;&amp;lt;STEAM_0:0:2357615&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; with &amp;quot;m4a1&amp;quot;    &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; killed \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;057A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:54:24: &amp;quot;FoCA|BigE[GH]&amp;lt;18&amp;gt;&amp;lt;STEAM_0:0:28458&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; killed &amp;quot;Alice&amp;lt;8&amp;gt;&amp;lt;STEAM_0:0:2357615&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; with &amp;quot;m4a1&amp;quot; (headshot)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; killed \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; \((.*)\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;057B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/02/2007 - 23:52:36: &amp;quot;FoCA|Rabbi Bob&amp;lt;17&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;TERRORIST&amp;gt;&amp;quot; triggered &amp;quot;Got_The_Bomb&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:06: &amp;quot;FoCA|Rolyak&amp;lt;986&amp;gt;&amp;lt;STEAM_0:1:72275&amp;gt;&amp;lt;Allies&amp;gt;&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot; - &amp;quot;POINT_AVALANCHE_AXISGUNPOSITION&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot; - \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060BA,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 20:57:29: &amp;quot;FoCA|moondance&amp;lt;970&amp;gt;&amp;lt;STEAM_0:0:1852522&amp;gt;&amp;lt;Axis&amp;gt;&amp;quot; triggered a &amp;quot;dod_object&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;060BA,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:51:39: Team &amp;quot;TERRORIST&amp;quot; triggered &amp;quot;Target_Bombed&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
        #L 05/11/2007 - 06:50:22: Team &amp;quot;CT&amp;quot; triggered &amp;quot;Target_Saved&amp;quot; (CT &amp;quot;1&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/03/2007 - 00:06:35: Team &amp;quot;CT&amp;quot; triggered &amp;quot;CTs_Win&amp;quot; (CT &amp;quot;12&amp;quot;) (T &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:06: Team &amp;quot;Allies&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot; - &amp;quot;POINT_AVALANCHE_AXISGUNPOSITION&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot; - \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/30/2005 - 20:51:57: Team &amp;quot;Allies&amp;quot; triggered a &amp;quot;dod_capture_area&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; triggered a \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;061C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        #L 05/11/2007 - 06:46:52: World triggered &amp;quot;Round_Start&amp;quot;&lt;br /&gt;
        #L 05/11/2007 - 06:46:43: World triggered &amp;quot;Round_End&amp;quot;&lt;br /&gt;
        #L 11/02/2007 - 23:50:47: World triggered &amp;quot;Game_Commencing&amp;quot;            &lt;br /&gt;
        #L 11/04/2007 - 02:06:26: World triggered &amp;quot;Intermission_Time_Limit&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): World triggered \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;062A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
       #L 05/11/2007 - 06:46:43: World triggered &amp;quot;Round_Draw&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
       #L 04/21/2007 - 07:43:18: World triggered &amp;quot;Game_Commencing&amp;quot; (CT &amp;quot;0&amp;quot;) (T &amp;quot;0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): World triggered \&amp;quot;(.*)\&amp;quot; \(CT \&amp;quot;(.*)\&amp;quot;\) \(T \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;062B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 11/04/2007 - 01:48:19: &amp;quot;FoCA|LocoYokel&amp;lt;158&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; say &amp;quot;test&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; say \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;063A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 11/04/2007 - 01:52:25: &amp;quot;[CoFR]FoxyFire&amp;lt;156&amp;gt;&amp;lt;STEAM_0:0:1362382&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; say_team &amp;quot;go back door&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; say_team \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;063B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/11/2007 - 07:11:12: Team &amp;quot;CT&amp;quot; scored &amp;quot;6&amp;quot; with &amp;quot;0&amp;quot; players&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Team \&amp;quot;(.*)\&amp;quot; scored \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; players/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;065A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/02/2005 - 21:47:37: &amp;quot;Allies&amp;quot; scored &amp;quot;55&amp;quot; with &amp;quot;2&amp;quot; players&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; scored \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; players/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;065A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
############### AMXMODX ####################&lt;br /&gt;
        #L 10/28/2007 - 21:23:17: [admincmd.amxx] Cmd: &amp;quot;[FoCA|CoFR]Barnes&amp;lt;189&amp;gt;&amp;lt;STEAM_0:1:343958&amp;gt;&amp;lt;&amp;gt;&amp;quot; changelevel &amp;quot;de_dust2&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; changelevel \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A03A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        #L 06/03/2007 - 23:48:29: [admincmd.amxx] Cmd: &amp;quot;Simple Daddy&amp;lt;305&amp;gt;&amp;lt;STEAM_0:1:215772&amp;gt;&amp;lt;&amp;gt;&amp;quot; set cvar (name &amp;quot;sv_gravity&amp;quot;) (value &amp;quot;200&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; set cvar \(name \&amp;quot;(.*)\&amp;quot;\) \(value \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A03A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
&lt;br /&gt;
        #L 10/28/2007 - 20:41:06: [admincmd.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; ask for players list&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; ask for players list/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A07A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        &lt;br /&gt;
        #L 05/11/2007 - 06:46:18: [admin.amxx] Login: &amp;quot;(* ) ( *)&amp;lt;1&amp;gt;&amp;lt;STEAM_0:1:273255&amp;gt;&amp;lt;&amp;gt;&amp;quot; became an admin (account &amp;quot;STEAM_0:1:273255&amp;quot;) (access &amp;quot;bcdefghijklmnopqrstu&amp;quot;) (address &amp;quot;76.179.90.224&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admin.amxx\] Login: \&amp;quot;(.*)\&amp;quot; became an admin \(account \&amp;quot;(.*)\&amp;quot;\) \(access \&amp;quot;(.*)\&amp;quot;\) \(address \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A50A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 10/28/2007 - 21:28:34: [plmenu.amxx] Kick: &amp;quot;FoCA|rochvegas j + astigmatism&amp;lt;192&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; kick &amp;quot;Ciggarette  / Gago&amp;lt;202&amp;gt;&amp;lt;STEAM_0:1:15378592&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Kick: \&amp;quot;(.*)\&amp;quot; kick \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/17/2007 - 22:23:51: [admincmd.amxx] Kick: &amp;quot;FoCA|DRB&amp;lt;114&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; kick &amp;quot;|8|r90|Prim3[martyr]&amp;lt;143&amp;gt;&amp;lt;STEAM_0:1:2487360&amp;gt;&amp;lt;&amp;gt;&amp;quot; (reason &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Kick: \&amp;quot;(.*)\&amp;quot; kick \&amp;quot;(.*)\&amp;quot; \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/19/2007 - 21:58:00: [admincmd.amxx] Ban: &amp;quot;FoCA|DRB&amp;lt;417&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban and kick &amp;quot;cl_utch&amp;lt;433&amp;gt;&amp;lt;STEAM_0:1:9428559&amp;gt;&amp;lt;&amp;gt;&amp;quot; (minutes &amp;quot;0&amp;quot;) (reason &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Ban: \&amp;quot;(.*)\&amp;quot; ban and kick \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\) \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/29/2007 - 01:12:55: [plmenu.amxx] Ban: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;241&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban and kick &amp;quot;Ctb  SSay&amp;lt;266&amp;gt;&amp;lt;STEAM_0:1:13406436&amp;gt;&amp;lt;&amp;gt;&amp;quot; (minutes &amp;quot;5&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Ban: \&amp;quot;(.*)\&amp;quot; ban and kick \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            } &lt;br /&gt;
        #L 05/06/2005 - 20:21:21: [admincmd.amxx] Cmd: &amp;quot;FoCA|Sturm[RR]&amp;lt;15&amp;gt;&amp;lt;STEAM_0:1:548458&amp;gt;&amp;lt;&amp;gt;&amp;quot; ban &amp;quot;STEAM_0&amp;quot; (minutes &amp;quot;:&amp;quot;) (reason &amp;quot;1&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; ban \&amp;quot;(.*)\&amp;quot; \(minutes \&amp;quot;(.*)\&amp;quot;\) \(reason \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A52C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
        #L 05/20/2007 - 17:32:19: [plmenu.amxx] Cmd: &amp;quot;FoCA|OGWG Persecutor&amp;lt;51&amp;gt;&amp;lt;STEAM_0:0:266906&amp;gt;&amp;lt;&amp;gt;&amp;quot; transfer &amp;quot;xDf&amp;lt;69&amp;gt;&amp;lt;STEAM_0:1:14332828&amp;gt;&amp;lt;&amp;gt;&amp;quot; (team &amp;quot;TERRORIST&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; transfer \&amp;quot;(.*)\&amp;quot; \(team \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A54A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 10/28/2007 - 22:10:11: [admincmd.amxx] Cmd: &amp;quot;FoCA|rochvegas j + astigmatism&amp;lt;192&amp;gt;&amp;lt;STEAM_0:0:63048&amp;gt;&amp;lt;&amp;gt;&amp;quot; change nick to &amp;quot;roch&#039;s slave&amp;quot; &amp;quot;Player&amp;lt;213&amp;gt;&amp;lt;STEAM_0:1:15118437&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; change nick to \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A56A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/28/2007 - 21:12:41: [plmenu.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; slay &amp;quot;[.icC.]Duke Nukem&amp;lt;183&amp;gt;&amp;lt;STEAM_0:1:13910450&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 06/20/2007 - 21:28:12: [admincmd.amxx] Cmd: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;121&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; slay &amp;quot;LCC Tank&amp;lt;125&amp;gt;&amp;lt;STEAM_0:1:13068210&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 10/28/2007 - 21:36:12: [admincmd.amxx] Cmd: &amp;quot;[FoCA|CoFR]Barnes&amp;lt;189&amp;gt;&amp;lt;STEAM_0:1:343958&amp;gt;&amp;lt;&amp;gt;&amp;quot; slap with 0 damage &amp;quot;FoCA|Senser&amp;lt;203&amp;gt;&amp;lt;STEAM_0:0:261108&amp;gt;&amp;lt;&amp;gt;&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slap with (.*) damage \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                     &lt;br /&gt;
        #L 10/28/2007 - 20:42:41: [plmenu.amxx] Cmd: &amp;quot;FoCA|Rizzo&amp;lt;180&amp;gt;&amp;lt;STEAM_0:0:8245642&amp;gt;&amp;lt;&amp;gt;&amp;quot; slap with 0 damage &amp;quot;FoCA|Fullthrottle&amp;lt;160&amp;gt;&amp;lt;STEAM_0:1:386955&amp;gt;&amp;lt;&amp;gt;&amp;quot;            &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[plmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; slap with (.*) damage \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                             &lt;br /&gt;
        #L 08/26/2007 - 18:12:02: [admincmd.amxx] Cmd: &amp;quot;FoCA|Chronik[BB]&amp;lt;151&amp;gt;&amp;lt;STEAM_0:1:2643832&amp;gt;&amp;lt;&amp;gt;&amp;quot; server console (cmdline &amp;quot;sv_alltalk 3&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[admincmd.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; server console \(cmdline \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A57D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        &lt;br /&gt;
        #L 10/28/2007 - 20:39:49: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; chat &amp;quot; who changed it?&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; chat \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }            &lt;br /&gt;
        #L 10/28/2007 - 20:43:30: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;141&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; tsay &amp;quot;hey RB&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; tsay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
        #L 05/14/2007 - 23:36:46: [adminchat.amxx] Chat: &amp;quot;FoCA|LocoYokel[GH]&amp;lt;21&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; csay &amp;quot;Friendly fire is on, verify your targets and do not shoot teammates.  Offenders WILL be kicked.&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; csay \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:13:37: [adminchat.amxx] Chat: &amp;quot;FoCA|mother_goose&amp;lt;342&amp;gt;&amp;lt;STEAM_0:1:265230&amp;gt;&amp;lt;&amp;gt;&amp;quot; psay &amp;quot;FoCA|MudBone[GH]&amp;lt;337&amp;gt;&amp;lt;STEAM_0:1:717421&amp;gt;&amp;lt;&amp;gt;&amp;quot; &amp;quot;hey&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; psay \&amp;quot;(.*)\&amp;quot; \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/04/2005 - 21:28:28: [adminchat.amxx] Chat: &amp;quot;[CoFR]STEELEAGLE|FoCA&amp;lt;1214&amp;gt;&amp;lt;STEAM_0:0:546319&amp;gt;&amp;lt;&amp;gt;&amp;quot; say &amp;quot;I thought he was a lost lamb&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminchat.amxx\] Chat: \&amp;quot;(.*)\&amp;quot; say \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A63D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:24:30: [adminvote.amxx] Vote: &amp;quot;FoCA|mother_goose&amp;lt;342&amp;gt;&amp;lt;STEAM_0:1:265230&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote custom (question &amp;quot;should loco learn how to do an actual vote?&amp;quot;) (option#1 &amp;quot;yes&amp;quot;) (option#2 &amp;quot;no&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote custom \(question \&amp;quot;(.*)\&amp;quot;\) \(option#1 \&amp;quot;(.*)\&amp;quot;\) \(option#2 \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 06/04/2007 - 18:33:37: [adminvote.amxx] Vote: &amp;quot;FoCA|DRB&amp;lt;366&amp;gt;&amp;lt;STEAM_0:0:400966&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote map (map &amp;quot;mindmaze&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote map \(map \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }              &lt;br /&gt;
        #L 05/16/2007 - 22:24:42: [adminvote.amxx] Vote: Voting successful (got &amp;quot;10&amp;quot;) (needed &amp;quot;1&amp;quot;) (result &amp;quot;should loco learn how to do an actual vote? - yes&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting successful \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\) \(result \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        #L 05/20/2005 - 21:54:29: [adminvote.amxx] Vote: Voting failed (got &amp;quot;3&amp;quot;) (needed &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting successful \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A80B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }             &lt;br /&gt;
        #L 07/18/2007 - 17:04:18: [mapsmenu.amxx] Cmd: &amp;quot;FoCA|Scorp&amp;lt;2&amp;gt;&amp;lt;STEAM_0:0:7817668&amp;gt;&amp;lt;&amp;gt;&amp;quot; changelevel &amp;quot;as_crazytank&amp;quot;&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Cmd: \&amp;quot;(.*)\&amp;quot; changelevel \&amp;quot;(.*)\&amp;quot;/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }       &lt;br /&gt;
        #L 05/12/2007 - 22:44:10: [mapchooser.amxx] Vote: Voting for the nextmap started&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Voting for the nextmap (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 06/04/2007 - 18:33:50: [adminvote.amxx] Vote: Result accepted            &lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Result accepted/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 06/09/2007 - 01:27:43: [mapsmenu.amxx] Vote: Voting successful. Map will be changed to awp_city&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapchooser.amxx\] Vote: Voting successful. Map will be changed to (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }           &lt;br /&gt;
        #L 05/05/2005 - 23:34:32: [mapsmenu.amxx] Vote: &amp;quot;FoCA|LocoYokel&amp;lt;1402&amp;gt;&amp;lt;STEAM_0:0:4864772&amp;gt;&amp;lt;&amp;gt;&amp;quot; vote maps (map#1 &amp;quot;dod_charlie&amp;quot;) (map#2 &amp;quot;&amp;quot;) (map#3 &amp;quot;&amp;quot;) (map#4 &amp;quot;&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: \&amp;quot;(.*)\&amp;quot; vote maps \(map#1 \&amp;quot;(.*)\&amp;quot;\) \(map#2 \&amp;quot;(.*)\&amp;quot;\) \(map#3 \&amp;quot;(.*)\&amp;quot;\) \(map#4 \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }           &lt;br /&gt;
        &lt;br /&gt;
        #L 10/28/2007 - 20:07:20: [mapsmenu.amxx] Vote: Result accepted&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Result accepted/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
               &lt;br /&gt;
        #L 05/19/2005 - 23:06:42: [mapsmenu.amxx] Vote: Result refused&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Result refused/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        #L 05/20/2005 - 21:54:29: [adminvote.amxx] Vote: Voting failed (got &amp;quot;3&amp;quot;) (needed &amp;quot;6&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminvote.amxx\] Vote: Voting failed \(got \&amp;quot;(.*)\&amp;quot;\) \(needed \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 05/07/2005 - 21:49:37: [mapsmenu.amxx] Vote: Voting failed&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Voting failed/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        #L 10/28/2007 - 20:07:18: [mapsmenu.amxx] Vote: Voting successful. Map will be changed to as_tundra&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[mapsmenu.amxx\] Vote: Voting successful. Map will be changed to (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
        #L 05/11/2005 - 21:44:40: [adminreservation.amxx] [AdminReservation] =[21st]=Maj.Vash was kicked to free a slot for [CoFR]Big Shirtless Ron!&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[adminreservation.amxx\] \[AdminReservation\] (.*) was kicked to free a slot for (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;A81C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }    &lt;br /&gt;
&lt;br /&gt;
################### STATS #################################&lt;br /&gt;
&lt;br /&gt;
        #L 09/07/2007 - 04:25:12: &amp;quot;Koopa Koop&amp;lt;44&amp;gt;&amp;lt;STEAM_0:0:63055&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; attacked &amp;quot;MM | lil [IRA]&amp;lt;49&amp;gt;&amp;lt;STEAM_0:1:406035&amp;gt;&amp;lt;CT&amp;gt;&amp;quot; with &amp;quot;grenade&amp;quot; (damage &amp;quot;77&amp;quot;) (damage_armor &amp;quot;0&amp;quot;) (health &amp;quot;23&amp;quot;) (armor &amp;quot;0&amp;quot;)&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \&amp;quot;(.*)\&amp;quot; attacked \&amp;quot;(.*)\&amp;quot; with \&amp;quot;(.*)\&amp;quot; \(damage \&amp;quot;(.*)\&amp;quot;\) \(damage_armor \&amp;quot;(.*)\&amp;quot;\) \(health \&amp;quot;(.*)\&amp;quot;\) \(armor \&amp;quot;(.*)\&amp;quot;\)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;B01A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }                    &lt;br /&gt;
        #L 05/02/2005 - 23:04:49: Final Scores: Allies: 94   Axis: 476&lt;br /&gt;
        elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Final Scores: (.*): (.*) (.*): (.*)/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;B01B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
################ MISC ADDONS #################&lt;br /&gt;
&lt;br /&gt;
#L 05/14/2005 - 23:27:54: [ADMIN] IRONHAND has forgiven FoCA|Whatfer&#039;s TK.&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) has forgiven (.*)\&#039;s TK.$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/14/2005 - 23:28:24: [ADMIN] [CoFR]Keeve TK warning 1 of 3&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) TK warning (.*) of (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/02/2005 - 22:08:50: [ADMIN] FoCA|moondance Slayed for teammate attack after respawn&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for teammate attack after respawn$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/05/2005 - 23:40:18: [ADMIN] Nix Slayed for violating 3 TK warning&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for violating (.*) TK warning$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/06/2005 - 21:13:04: [ADMIN] deiter Exceeded 3 TK limit and is BANNED for 1 minutes&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Exceeded (.*) TK limit and is BANNED for (.*) minutes$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/12/2005 - 23:43:10: [ADMIN] FoCA|Ogre Slayed for melee attack&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[ADMIN\] (.*) Slayed for melee attack$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C01C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
#L 10/27/2007 - 08:07:31: Loaded 128 Maps into the maps that will be picked for the vote&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Loaded (.*) Maps into the maps that will be picked for the vote$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Nominations for the map vote: 0 out of 5 possible nominations&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Nominations for the map vote: (.*) out of (.*) possible nominations$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Randomly Filling slots for the vote with 5 out of 128&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Randomly Filling slots for the vote with (.*) out of (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/13/2007 - 18:10:47: Filled 5 vote slots with random maps, 5 are custom&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Filled (.*) vote slots with random maps, (.*) are custom$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02A,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: Banned 1 Maps in your mapstoban.ini file&lt;br /&gt;
       elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Banned (.*) Maps in your mapstoban.ini file$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02B,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: 1 Maps were not loaded because they were the last maps played, or defined twice, or banned&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): (.*) Maps were not loaded because they were the last maps played, or defined twice, or banned$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02C,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/27/2007 - 07:19:39: Found 12 Maps in your mapcycle.txt/allmaps.txt file, 7 are available for filling slots&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Found (.*) Maps in your mapcycle.txt\/allmaps.txt file, (.*) are available for filling slots$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02D,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 10/26/2007 - 06:09:27: Vote: Voting for the nextmap started&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Vote: Voting for the nextmap started$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02E,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
#L 10/26/2007 - 06:09:47: Vote: Voting for the nextmap finished. The nextmap will be de_dust&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Vote: Voting for the nextmap finished. The nextmap will be (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02F,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/15/2007 - 05:13:04: -------- Mapchange to awp_war --------&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): -------- Mapchange to (.*) --------$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 05/01/2005 - 16:16:58: -------- Mapchange --------&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): -------- Mapchange --------$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C02G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 06/19/2007 - 21:26:40: Server say &amp;quot;DRB I need your steam id to fix the ban&amp;quot;&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): Server say \&amp;quot;(.*)\&amp;quot;$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03G,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 09/15/2007 - 04:48:35: FoCA|quibeep has left; de_dust is no longer nominated&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): (.*) has left; (.*) is no longer nominated$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
#L 05/31/2005 - 17:19:23: [DODX] dev: called: GiveFnptrsToDll&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): \[DODX\] (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C03H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
#L 05/14/2005 - 13:13:22: FATAL ERROR (shutting down): models/mapmodels/hedgehog.mdl has been modified since starting the engine.  Consider running system diagnostics to check for faulty hardware.&lt;br /&gt;
elsif ($LOGLINE =~ m/^L (\d\d)\/(\d\d)\/(\d\d\d\d) - (\d\d:\d\d:\d\d): FATAL ERROR \(shutting down\): (.*)$/)&lt;br /&gt;
            {&lt;br /&gt;
            print DONE_OUT &amp;quot;C04H,$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
################&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
            {&lt;br /&gt;
            print TODO_OUT &amp;quot;$LINES[$lineno];&amp;quot;;&lt;br /&gt;
            #print &amp;quot;$LINES[$lineno];&amp;quot;;                        &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Perl]]&lt;br /&gt;
[[Category:Gaming]]&lt;br /&gt;
[[Category:Weblog-2007-11]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=VoYD&amp;diff=2046</id>
		<title>VoYD</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=VoYD&amp;diff=2046"/>
		<updated>2026-08-27T22:53:02Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Misc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Gigs=&lt;br /&gt;
* https://voyd.mikebeane.com&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vS3fepEaCnI1XjzccsC7SXo5Dno9X6jm9Ghy7ubFGn9BAleei9UiFG3L8lFoSh6xmEpiqH8OiIRLVIG/pubhtml?gid=2044986723&amp;amp;single=true Calendar Output]&lt;br /&gt;
&lt;br /&gt;
=Misc=&lt;br /&gt;
==DR==&lt;br /&gt;
Deliver YT 1920x1080&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cam3&lt;br /&gt;
.720&lt;br /&gt;
-717.0000&lt;br /&gt;
&lt;br /&gt;
Cam1&lt;br /&gt;
1    1&lt;br /&gt;
x 389&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Older==&lt;br /&gt;
* https://bit.ly/VoYDCalendar&lt;br /&gt;
&lt;br /&gt;
=Set List Mirror=&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vQuDii0jPXrJPLGpp7I5wUEK6LWnRiEbuTezg-jLlTTVCzW63hOKYSgT3hzkxquQGcSYx3Hgk5VM0MI/pubhtml#gid=0 3 Sets]&lt;br /&gt;
* https://bit.ly/VoYD3&lt;br /&gt;
[[Category:VoYD]]&lt;br /&gt;
[[Category:Music]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=VoYD&amp;diff=2045</id>
		<title>VoYD</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=VoYD&amp;diff=2045"/>
		<updated>2026-08-27T22:52:29Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Gigs=&lt;br /&gt;
* https://voyd.mikebeane.com&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vS3fepEaCnI1XjzccsC7SXo5Dno9X6jm9Ghy7ubFGn9BAleei9UiFG3L8lFoSh6xmEpiqH8OiIRLVIG/pubhtml?gid=2044986723&amp;amp;single=true Calendar Output]&lt;br /&gt;
&lt;br /&gt;
=Misc=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cam3&lt;br /&gt;
.720&lt;br /&gt;
-717.0000&lt;br /&gt;
&lt;br /&gt;
Cam1&lt;br /&gt;
1    1&lt;br /&gt;
x 389&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Older==&lt;br /&gt;
* https://bit.ly/VoYDCalendar&lt;br /&gt;
&lt;br /&gt;
=Set List Mirror=&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vQuDii0jPXrJPLGpp7I5wUEK6LWnRiEbuTezg-jLlTTVCzW63hOKYSgT3hzkxquQGcSYx3Hgk5VM0MI/pubhtml#gid=0 3 Sets]&lt;br /&gt;
* https://bit.ly/VoYD3&lt;br /&gt;
[[Category:VoYD]]&lt;br /&gt;
[[Category:Music]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Maine_shines_after_Navy_tour&amp;diff=2044</id>
		<title>Maine shines after Navy tour</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Maine_shines_after_Navy_tour&amp;diff=2044"/>
		<updated>2026-08-27T10:47:14Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Article in the Morning Sentinel on 01/22/2008&lt;br /&gt;
&lt;br /&gt;
[[Image:Mike article.jpg|thumbnail]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Maine shines after Navy tour&lt;br /&gt;
&lt;br /&gt;
By Morning Sentinel staff&lt;br /&gt;
&lt;br /&gt;
Living in Maine is costing Michael Beane money, and he knows it.&lt;br /&gt;
&lt;br /&gt;
Just a couple of hundred miles south of his Newport home, Beane&#039;s&lt;br /&gt;
friends in Boston earn almost twice the money in jobs similar to &lt;br /&gt;
Beane&#039;s position as a systems analyst at Pittsfield&#039;s Sebasticook &lt;br /&gt;
Valley Hospital.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the full article [http://morningsentinel.mainetoday.com/news/local/4661455.html here] or if that no longer exists, you can read it [http://www.mikebeane.com/index.php?title=Maine_shines_after_Navy_tour&amp;amp;oldid=730 here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It no longer exists and you can read it here:&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Maine shines after Navy tour&#039;&#039;&#039; ===&lt;br /&gt;
&#039;&#039;By Morning Sentinel staff&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kennebec Journal, Morning Sentinel &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
01/22/2008&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Living in Maine is costing Michael Beane money, and he knows it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just a couple of hundred miles south of his Newport home, Beane&#039;s friends in Boston earn almost twice the money in jobs similar to Beane&#039;s position as a systems analyst at Pittsfield&#039;s Sebasticook Valley Hospital.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yet, when he and his wife, Fiona, reflect on what their two children are getting out of growing up in his home state of Maine, Beane knows his fortune is being invested in the future.  &amp;quot;Maine has a comfortable, constant speed to it,&amp;quot; Beane said. &amp;quot;Some places just seem to be fast for the sake of being fast, and that doesn&#039;t sit well with me. It&#039;s not that I can&#039;t navigate the big city and stay there. It&#039;s just that I don&#039;t want to.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Benton native, Beane, 33, graduated from Lawrence High School in Fairfield in 1992. He had the grades for college, but the idea held no appeal.  &amp;quot;I didn&#039;t really prepare myself in high school to go to college,&amp;quot; Beane said. &amp;quot;I&#039;m a path of least resistance kind of guy.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beane looked to the Navy for direction. He headed to basic training in San Diego in 1993 believing he would never return to Maine for more than family visits.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I left here February 21st of 1993,&amp;quot; Beane recalled. &amp;quot;If you look at the weather that day we had the most snow we&#039;d had in years. I was happy to be going.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Navy allowed Beane to pick a school after he graduated from basic training in the top 5 percent of his class. The southern California life agreed with him, so Beane spent another year in San Diego learning to be a sonar technician.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I picked night classes so I got to get up in the morning and go to the beach,&amp;quot; Beane said. &amp;quot;Life was good.&amp;quot;  Beane again graduated near the top of his class, and the Navy again allowed him to pick his assignment.  His superiors were stunned when Beane decided to return to Maine to serve at a duty station as the destroyer USS Laboon was being built at Bath Iron Works.  &amp;quot;The Navy brought me back to Maine,&amp;quot; Beane said. &amp;quot;The other choice was Corpus Christi, Texas. I think 107 was the average temperature down there. For a lot of reasons it was a no-brainer for me to come home.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beane spent a year living in a hotel in Brunswick. He drove to Benton to visit his family just about every weekend, but for the most part Beane was seeing Maine as an adult for the first time.  &amp;quot;When I came back with the Navy I saw Maine from a different perspective,&amp;quot; Beane said.  Beane spent the last 18 months of his service in the Laboon&#039;s home port in Virginia and six months traveling the waters around Crete, Morocco and the Persian Gulf, where in September 1996, the Laboon launched its missiles in support of Operation Desert Strike.  Beane was ready to leave the Navy when his commitment was up in 1997.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I didn&#039;t hate the Navy,&amp;quot; he said. &amp;quot;I was just kind of done with it.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At 23, Beane decided to head home to Maine again.  He spent two-plus years at the University of Maine at Orono -- where he met Fiona -- studying computer science, before transferring to Eastern Maine Technical College in Bangor (now Eastern Maine Community College). He graduated with an associate&#039;s degree in computer networking in 2002.  Beane took a job as a service manager for a small Bangor company, Automated Business Concepts, just before graduation. The company sent Beane and his new wife, Fiona, to Manchester, N.H., where they stayed for almost a year.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As it had before, Maine beckoned. When Fiona became pregnant with the couple&#039;s first child Beane requested a transfer back to Bangor and, in 2003, the Beanes returned home for good.  &amp;quot;It was really the pull of family,&amp;quot; Beane said. &amp;quot;That was the catalyst to come back.&amp;quot;  Beane took a job at the hospital in 2004, the same year the baby was born, and they purchased their first home, in Newport.  Beane has no regrets about living in Maine, but he acknowledges it is not easy. Jobs do not pay as much and there is a dearth of industry to buoy the economy as a whole.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Beanes were committed to Fiona staying home to care for their children but she has recently returned to work to help with the family&#039;s budget.  &amp;quot;We&#039;re seeing the cost of heating fuel and now gasoline (stressing) family budgets, and the effects on the local economies are noticeable,&amp;quot; Beane said. &amp;quot;We&#039;ve seen work that was done in the state for quite some time now go elsewhere, resulting in closures and job losses, which has put a strain on the state and the people who live here.&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The same thing that makes Maine so appealing as a place to live could also save it, Beane believes.  &amp;quot;I wish the state could find a good way to attract business back into the state by exploiting what we&#039;re rich in: people who perform quality, hard work,&amp;quot; Beane said.  Beane hopes his family will always be able to stay in Maine. With both his and Fiona&#039;s extended families so close it is nearly an ideal situation, he said.  &amp;quot;I can&#039;t come up with any good reasons to leave that are good life decisions,&amp;quot; Beane said. &amp;quot;I&#039;m in a fairly stable industry in a position that I am both happy and thankful for, working in a place with great people, living in an area with equally great people. I&#039;m very go-with-the-flow about things and, well, the flow is good here.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Craig Crosby -- 487-3288&lt;br /&gt;
&lt;br /&gt;
ccrosby@centralmaine.com&lt;br /&gt;
[[Category:Weblog-2008-01]]&lt;br /&gt;
[[Category:Family]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Mediawiki_1.43_from_1.39&amp;diff=2043</id>
		<title>Mediawiki 1.43 from 1.39</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Mediawiki_1.43_from_1.39&amp;diff=2043"/>
		<updated>2026-08-27T10:40:27Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Things to Look At=&lt;br /&gt;
* https://www.mediawiki.org/wiki/Extension:DynamicPageList (consider replacing Intersection with this)&lt;br /&gt;
=Background=&lt;br /&gt;
This was a WhatIf page to map out 1.39 to 1.43 with a thought of waiting until November for 1.47 LTS... but I went for it this past week.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=LTS=&lt;br /&gt;
Note: To upgrade MediaWiki, you can upgrade from the two most recent Long Term Support (LTS) versions directly.  If you are using an older version, you must first upgrade to one of the two latest LTS versions before proceeding to the latest version.&lt;br /&gt;
&lt;br /&gt;
=The Path=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Version !! MySQL !! PHP !! Jumps !! Status !! Notes &lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki 1.39.5 LTS || MySQL 8.0.46 || PHP 8.1.2 || 0 || Current || &lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki 1.43 LTS || MySQL 5.7.0+ (good) || PHP 8.1.0+ (good)  || 1 || Could do now ||  &lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki 1.47 LTS || MySQL 5.7.0+ (good)  || PHP 8.3.0+ &#039;&#039;&#039;(need to update)&#039;&#039;&#039; || 2 ||  ||  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=The Process=&lt;br /&gt;
The last few times I&#039;ve done this I have been honing in on &#039;what is the basic approach to updating Mediawiki?&#039; and I think I&#039;m there now.&lt;br /&gt;
==Naming==&lt;br /&gt;
# Create the databases with the wiki version in the name. End it with _139 or something.&lt;br /&gt;
# Create the site directories in the same fashion.  Use symlinks for the actual &amp;quot;public&amp;quot; name.&lt;br /&gt;
## example: rabbibob\-&amp;gt;rabbibob_139\&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I started doing this so updates were more agile.  When I want to go to 143, I can create rabbibob_143\ and use that as a fresh area to configure, then shift the symlink when it is all done.  Copying the db from the _139 into a new _143 is the other key.  Editing LocalSettings.php allows for the ability to do this.  The limitation is if php or mysql requirements don&#039;t allow to the older or the new version to cohabitate.&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# Know the requirements for where you are and where you need to get to in regards to MySQL and PHP requiremnts.&lt;br /&gt;
#* Sometimes a major revision upgrade of the OS carries these with them and it might be worth updating the OS or starting a fresh install&lt;br /&gt;
# BACK THINGS UP &lt;br /&gt;
# List your extensions (go to the Special:Version page, copy that page out to a Google Sheet so the links are intact)&lt;br /&gt;
# Create a new database_### and import the previous version db into that&lt;br /&gt;
# Create a new html dir mediawiki_### and import the target mediawiki into that&lt;br /&gt;
# Copy LocalSettings.php into the new dir from the old dir&lt;br /&gt;
# Edit LocalSettings.php&lt;br /&gt;
## Update the following with temporary values&lt;br /&gt;
##* $wgScriptPath&lt;br /&gt;
##* $wgServer&lt;br /&gt;
## Comment out all of the extensions&lt;br /&gt;
## Set the skin to one that comes stock&lt;br /&gt;
# run php maintenance\update.php from the command line&lt;br /&gt;
# Copy the images/ directory from the old install&lt;br /&gt;
# Update file permissions as needed during testing&lt;br /&gt;
# Work through the extensions&lt;br /&gt;
#* It is worth curating the extensions so you know what is custom and came with the new update&lt;br /&gt;
#* Comment out any that you are not using&lt;br /&gt;
#* Add ## or #! for ones that crash MW&lt;br /&gt;
# Work through the skins&lt;br /&gt;
# When everything is working, set the symlink to the new dir&lt;br /&gt;
# Edit LocalSettings.php&lt;br /&gt;
#* $wgScriptPath&lt;br /&gt;
#* $wgServer&lt;br /&gt;
===Clean Up Thoughts===&lt;br /&gt;
* Set up your backups if exporting the db and backing up the html directories.&lt;br /&gt;
&lt;br /&gt;
=OLD NOTES BELOW=&lt;br /&gt;
==Requirements==&lt;br /&gt;
Required software as of MediaWiki 1.47.0:&lt;br /&gt;
&lt;br /&gt;
* Web server with PHP 8.3.0 or higher, plus the following extensions:&lt;br /&gt;
** ctype&lt;br /&gt;
** dom&lt;br /&gt;
** fileinfo&lt;br /&gt;
** iconv&lt;br /&gt;
** intl&lt;br /&gt;
** libxml&lt;br /&gt;
** mbstring&lt;br /&gt;
** openssl&lt;br /&gt;
** xml&lt;br /&gt;
** xmlreader&lt;br /&gt;
* A SQL server, the following types are supported&lt;br /&gt;
** MariaDB 10.11 or higher&lt;br /&gt;
** MySQL 5.7.0 or higher&lt;br /&gt;
** PostgreSQL 10 or higher&lt;br /&gt;
** SQLite 3.31.0 or higher&lt;br /&gt;
&lt;br /&gt;
=June Notes=&lt;br /&gt;
==PHP 8.4==&lt;br /&gt;
* This can be done prior to the major jump as 1.39 supports 8.4&lt;br /&gt;
===Steps===&lt;br /&gt;
* dpkg -l | grep php&lt;br /&gt;
* sudo apt-get install php8.4&lt;br /&gt;
* sudo apt install php8.4-cli php8.4-common php8.4-mysql php8.4-zip php8.4-gd php8.4-mbstring php8.4-curl php8.4-xml php8.4-bcmath&lt;br /&gt;
* sudo apt install php8.4-redis php8.4-pcov php8.4-imagick php8.4-intl&lt;br /&gt;
* dpkg -l | grep php&lt;br /&gt;
* sudo update-alternatives --config php&lt;br /&gt;
* php -v&lt;br /&gt;
* sudo a2dismod php7.4 9&lt;br /&gt;
* sudo a2enmod php8.4&lt;br /&gt;
* sudo systemctl restart apache2&lt;br /&gt;
* Check wiki version, should be at 8.4.x&lt;br /&gt;
==MySQL==&lt;br /&gt;
# copy the existing db into a new db_1.43&lt;br /&gt;
# set permissions&lt;br /&gt;
&lt;br /&gt;
==Mediawiki Files==&lt;br /&gt;
# Make a list of the extensions...&lt;br /&gt;
# sudo mkdir it-wiki-1.43&lt;br /&gt;
# chown it:www-data it-wiki-1.43&lt;br /&gt;
# upload new files to 1.43&lt;br /&gt;
# cp /var/www/html/wiki-1.39/LocalSettings.php  /var/www/html/wiki-1.43&lt;br /&gt;
# cp -r /var/www/html/wiki-1.39/images/ /var/www/html/wiki-1.43/&lt;br /&gt;
# set permissions&lt;br /&gt;
#* sudo chown -R it:www-data /var/www/html/wiki-1.43/images&lt;br /&gt;
#* sudo chmod -R 775 /var/www/html/wiki-1.43/images&lt;br /&gt;
# edit LocalSettings.php to reflect url path for testing&lt;br /&gt;
# $wgScriptPath&lt;br /&gt;
# $wgServer&lt;br /&gt;
# change the db to 143&lt;br /&gt;
# set the skin to vector (shut off foreground)&lt;br /&gt;
# disable extensions&lt;br /&gt;
# Test&lt;br /&gt;
# sort out extensions and cleanup LocalSettings.php&lt;br /&gt;
&lt;br /&gt;
===Changeover===&lt;br /&gt;
After testing...&lt;br /&gt;
# Set the symlink to the new dir&lt;br /&gt;
# $wgScriptPath&lt;br /&gt;
# $wgServer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The Approach=&lt;br /&gt;
* ALL THIS STUFF IS FROM THE LAST PAGE, REVAMP IT!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prepping the Databases==&lt;br /&gt;
# Backup the MW databases&lt;br /&gt;
# Find my Google sheet with notes&lt;br /&gt;
# Tally the extensions in use and find out what is still being maintained.&lt;br /&gt;
#* From the old sites I made copy of the Extensions that were installed via the Special:Version page&lt;br /&gt;
# Upgrade MySQL&lt;br /&gt;
# Upgrade PHP&lt;br /&gt;
* I installed the lowest version of MediaWiki I required and verified it worked.&lt;br /&gt;
** I then pulled in a backup of my two wiki sites&lt;br /&gt;
** I imported images/ from the same site&lt;br /&gt;
** I pointed mediawiki (via localsettings.php) at one of the databases&lt;br /&gt;
*** Ran maintenance/update.php --force&lt;br /&gt;
** Verified that the information loaded in the new site&lt;br /&gt;
* NOTE: I entirely ignored Skins and Extensions.&lt;br /&gt;
* Repeated for Site #2&lt;br /&gt;
* Once I had a working MW site for each database, I installed the next LTS MW version.&lt;br /&gt;
* Repeated the above steps&lt;br /&gt;
* Once I had a working MW site for each database, I installed the next LTS MW version.&lt;br /&gt;
* Repeated the above steps&lt;br /&gt;
* Eventually I had two working MW databases at 1.39&lt;br /&gt;
==New Ubuntu Server==&lt;br /&gt;
* I created a new Ubuntu 22.04 server and on this one, I took the time to set up various security related items.&lt;br /&gt;
* I opted to put&lt;br /&gt;
** MySQL at 8.0.35-0ubuntu0.22.04.1 &lt;br /&gt;
** php at 8.1.2-1ubuntu2.14 (apache2handler)&lt;br /&gt;
* Installed apache2, created a new MW1.39LTS site to verify it ran under the new software.&lt;br /&gt;
* From there, I imported the two site databases, copied the 1.39 directory to two separate directories, set up MW, imported images and all was good.&lt;br /&gt;
==Extensions and Skins==&lt;br /&gt;
* The Skin was freshly installed from the latest version.  Not much of an issue there.&lt;br /&gt;
* This was a little more tedious: I matched up the default 1.39 extensions against the old site listings and then went looking to for the latest extensions.&lt;br /&gt;
** Some extensions were still in production&lt;br /&gt;
** Some were not&lt;br /&gt;
* Fiddled until things were working.  Had to fix some code for YouTube.&lt;br /&gt;
&lt;br /&gt;
=Summary=&lt;br /&gt;
* I tried this about seven months ago and I was attempting to update the extensions as I went: this was not the way to go.  Getting the database updated was the key and ignoring everything else made that easier to do.  All a wiki really is at the base is the information (database) and the images/... everything else is functionality.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2042</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2042"/>
		<updated>2026-08-27T10:33:25Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Job */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE!&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
# if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Verify the indexes, this should show your db with count details.  If 0, re-run the above commands again and re-test.&lt;br /&gt;
curl -X GET &amp;quot;localhost:9200/_cat/indices?v&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
# https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/docs/settings.txt&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute or every 5 minutes or ...&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
*/5 * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2041</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2041"/>
		<updated>2026-08-27T10:29:46Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE!&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
# if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Verify the indexes, this should show your db with count details.  If 0, re-run the above commands again and re-test.&lt;br /&gt;
curl -X GET &amp;quot;localhost:9200/_cat/indices?v&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
# https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/docs/settings.txt&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Emily_Beane&amp;diff=2040</id>
		<title>Emily Beane</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Emily_Beane&amp;diff=2040"/>
		<updated>2026-08-27T10:29:20Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m prefacing this obituary entry with something from my deepest memory of Nana, which at the time seemed sage-like and ends up being simply a foreshadowing of life.  Your Pilot waits for you with open arms.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crossing The Bar by Alfred Lord Tennyson&#039;&#039;&#039;&lt;br /&gt;
[[Image:NannyandGrampy.jpg|thumb|right|Nanny &amp;amp; Grampy Beane]]&lt;br /&gt;
&amp;lt;poem&amp;gt;Sunset and evening star,&lt;br /&gt;
And one clear call for me!&lt;br /&gt;
And may there be no moaning of the bar,&lt;br /&gt;
When I put out to sea,&lt;br /&gt;
&lt;br /&gt;
But such a tide as moving seems asleep,&lt;br /&gt;
Too full for sound and foam,&lt;br /&gt;
When that which drew from out the boundless deep&lt;br /&gt;
Turns again home.&lt;br /&gt;
&lt;br /&gt;
Twilight and evening bell,&lt;br /&gt;
And after that the dark!&lt;br /&gt;
And may there be no sadness of farewell,&lt;br /&gt;
When I embark;&lt;br /&gt;
&lt;br /&gt;
For tho’ from out our bourne of Time and Place&lt;br /&gt;
The flood may bear me far,&lt;br /&gt;
I hope to see my Pilot face to face&lt;br /&gt;
When I have crossed the bar.&amp;lt;/poem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;poem&amp;gt;&lt;br /&gt;
BENTON STATION -- Emily Beane, 88 3/4, of Benton Station, passed away peacefully on Saturday, March 10, 2007, surrounded by her family.&lt;br /&gt;
&lt;br /&gt;
She was born on May 26, 1918, in Boston, the daughter of John and Velma (Collemer) Brousaides.&lt;br /&gt;
&lt;br /&gt;
She was a graduate of Burdett College in Boston and worked as executive secretary at E.F. Mahady Co. in Boston. On Feb. 16, 1945, she married [[Eugene Beane|Eugene H. Beane]] of Bingham.&lt;br /&gt;
&lt;br /&gt;
Emily was a devoted and beloved wife, mother, aunt and grandmother. An energetic homemaker, she loved to cook, sew, and play cards, Scrabble, croquet and badminton.&lt;br /&gt;
&lt;br /&gt;
She instilled a love of reading in her children. Her zest for life included many happy hours picnicking, swimming, fishing and boating on the lakes and coast of Maine.&lt;br /&gt;
&lt;br /&gt;
In her youth, she spent summers with relatives in Lincolnville, and Lincolnville Beach held a special place in her heart.&lt;br /&gt;
&lt;br /&gt;
With her husband Eugene, she toured the Gaspe Peninsula, the Cabot Trail and Prince Edward Island. Throughout her life, her deep Christian faith and love of Jesus sustained her.&lt;br /&gt;
&lt;br /&gt;
Emily was a member of the First Baptist Church of Fairfield for 50 years.&lt;br /&gt;
&lt;br /&gt;
She served on the finance board, as a deaconess and a Sunday school and vacation Bible school teacher. She loved visiting the elderly and helping to support her church&#039;s missionary program.&lt;br /&gt;
&lt;br /&gt;
Later in life, Emily was employed by the Salvation Army, New Hampshire Hospital School of Nursing, and the New Hampshire Department of Health and Human Services.&lt;br /&gt;
&lt;br /&gt;
Emily was predeceased by her parents and brother Harry.&lt;br /&gt;
&lt;br /&gt;
She is survived by her husband, Eugene H. Beane of Benton; daughter [[Joyce Ray]] and husband [[Robert Ray|Robert]] of Dunbarton, N.H.; son [[Alan Beane]] and wife [[Janice Beane|Janice]] of Benton; daughter [[Valerie Otis]] and husband [[Paul Otis|Paul]] of Oakland; son [[David Beane]] and wife [[Rebecca Beane|Becky]] of Benton; brothers Frederick Brousaides of Wilmington, N.C., and George Brousaides of Largo, Fla.; grandchildren [[Jennifer Johnson]] of Bristol, R.I., [[Heather Radl]] and [[Rebecca Ray]] of Dunbarton, N.H., [[Michael Beane]] of Newport, [[Andrew Beane]] of Waterville, [[Kathryn Otis]], and [[Jonathan Beane|Jonathan]] and [[Samantha Beane]] of Benton; eight great-grandchildren, and many dear family and friends.&lt;br /&gt;
&lt;br /&gt;
A memorial service is planned for 2 p.m. Sunday, April 1, at the First Baptist Church, 12 Newhall St., Fairfield. A reception will follow.&lt;br /&gt;
&lt;br /&gt;
Burial will be later in the spring at the Falls Cemetery in Benton.&lt;br /&gt;
&lt;br /&gt;
Memorial donations may be made to the church&#039;s missionary program.&lt;br /&gt;
&lt;br /&gt;
The family is thankful for the loving care provided by MaineGeneral Medical Center, Thayer Unit, especially the staff of the Dialysis Unit and 2 Central.&lt;br /&gt;
&amp;lt;/poem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Family]]&lt;br /&gt;
[[Category:Obituaries]]&lt;br /&gt;
[[Category:Weblog-2007-03]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2039</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2039"/>
		<updated>2026-08-27T10:26:23Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 4: Generate and Bootstrap the Search Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
# if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Verify the indexes, this should show your db with count details.  If 0, re-run the above commands again and re-test.&lt;br /&gt;
curl -X GET &amp;quot;localhost:9200/_cat/indices?v&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
# https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/docs/settings.txt&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2038</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2038"/>
		<updated>2026-08-27T10:18:12Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 6: LocalSettings.php Cleanup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
#if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
# https://gerrit.wikimedia.org/g/mediawiki/extensions/CirrusSearch/%2B/HEAD/docs/settings.txt&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2037</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2037"/>
		<updated>2026-08-27T10:11:50Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 4: Generate and Bootstrap the Search Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
#if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2036</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2036"/>
		<updated>2026-08-27T10:11:08Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 7: Setup Crontab Job */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
#if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Log Rotate====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/logrotate.d/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/var/log/mediawiki/*.log {&lt;br /&gt;
    daily&lt;br /&gt;
    missingok&lt;br /&gt;
    rotate 14&lt;br /&gt;
    compress&lt;br /&gt;
    delaycompress&lt;br /&gt;
    notifempty&lt;br /&gt;
    create 640 www-data www-data&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data crontab -e&lt;br /&gt;
&lt;br /&gt;
* * * * * /usr/bin/php -d memory_limit=1G /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs &amp;gt;&amp;gt; /var/log/mediawiki/yourWebSite_runjobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test====&lt;br /&gt;
# Wait at least 1 minute before doing the checking&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -f /var/log/mediawiki/YourWebSite_runjobs.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2035</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2035"/>
		<updated>2026-08-27T10:03:28Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 6: LocalSettings.php Cleanup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
#if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
* * * * * /usr/bin/php /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs --maxtime=60 &amp;gt;&amp;gt; /var/log/mediawiki/runJobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2034</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2034"/>
		<updated>2026-08-27T10:00:32Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Step 4: Generate and Bootstrap the Search Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
php maintenance/run.php runJobs&lt;br /&gt;
&lt;br /&gt;
#if the above fails out, the db may be too big in various aspects, give the command more memory:&lt;br /&gt;
php -d memory_limit=1G maintenance/run.php runJobs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
* * * * * /usr/bin/php /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs --maxtime=60 &amp;gt;&amp;gt; /var/log/mediawiki/runJobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2033</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2033"/>
		<updated>2026-08-26T08:56:25Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&#039;&#039;&#039;DATABASE NAMES MUST BE ALL LOWERCASE&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
* * * * * /usr/bin/php /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs --maxtime=60 &amp;gt;&amp;gt; /var/log/mediawiki/runJobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2032</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2032"/>
		<updated>2026-08-26T08:54:31Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
* &#039;&#039;&#039;Composer:&#039;&#039;&#039; See https://getcomposer.org/install for more information.&lt;br /&gt;
&lt;br /&gt;
====Composer Install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install curl php-cli php-mbstring git unzip&lt;br /&gt;
php -r &amp;quot;copy(&#039;https://getcomposer.org/installer&#039;, &#039;composer-setup.php&#039;);&amp;quot;&lt;br /&gt;
php composer-setup.php --install-dir=/usr/local/bin --filename=composer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer config policy.advisories.block false &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
* * * * * /usr/bin/php /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs --maxtime=60 &amp;gt;&amp;gt; /var/log/mediawiki/runJobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2031</id>
		<title>ElasticSearch on MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=ElasticSearch_on_MediaWiki&amp;diff=2031"/>
		<updated>2026-08-25T22:37:46Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: Created page with &amp;quot;== Installing and Configuring CirrusSearch with Elasticsearch ==  Setting up &amp;#039;&amp;#039;&amp;#039;CirrusSearch&amp;#039;&amp;#039;&amp;#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.  === Prerequisites === * &amp;#039;&amp;#039;&amp;#039;MediaWiki 1.39+:&amp;#039;&amp;#039;&amp;#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+). * &amp;#039;&amp;#039;&amp;#039;PHP:&amp;#039;&amp;#039;&amp;#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension mu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing and Configuring CirrusSearch with Elasticsearch ==&lt;br /&gt;
&lt;br /&gt;
Setting up &#039;&#039;&#039;CirrusSearch&#039;&#039;&#039; with Elasticsearch requires three main phases: installing the Elasticsearch cluster, downloading the required MediaWiki extensions (Elastica and CirrusSearch), and building the search index via MediaWiki maintenance scripts.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* &#039;&#039;&#039;MediaWiki 1.39+:&#039;&#039;&#039; Recommended Elasticsearch 7.10.2 (or OpenSearch 1.3+).&lt;br /&gt;
* &#039;&#039;&#039;PHP:&#039;&#039;&#039; The PHP &amp;lt;code&amp;gt;cURL&amp;lt;/code&amp;gt; extension must be enabled.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Install &amp;amp; Start Elasticsearch ===&lt;br /&gt;
Install Elasticsearch on your server (instructions below are for Ubuntu/Debian):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Install Java runtime if not already installed&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-17-jre-headless&lt;br /&gt;
&lt;br /&gt;
# Install Elasticsearch 7.x&lt;br /&gt;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
sudo dpkg -i elasticsearch-7.10.2-amd64.deb&lt;br /&gt;
&lt;br /&gt;
# Enable and start the service&lt;br /&gt;
sudo systemctl enable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify it is running on &amp;lt;code&amp;gt;localhost:9200&amp;lt;/code&amp;gt;, test it in your terminal with &amp;lt;code&amp;gt;curl http://localhost:9200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Download the MediaWiki Extensions ===&lt;br /&gt;
CirrusSearch depends on &#039;&#039;&#039;Extension:Elastica&#039;&#039;&#039; to serve as the PHP client bridge.&lt;br /&gt;
&lt;br /&gt;
# Navigate to your MediaWiki &amp;lt;code&amp;gt;extensions/&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/html/&amp;lt;yourWebDir&amp;gt;/extensions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Download both Elastica and CirrusSearch (replace &amp;lt;code&amp;gt;REL1_39&amp;lt;/code&amp;gt; with your MediaWiki branch version, e.g., &amp;lt;code&amp;gt;REL1_40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REL1_43&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica&lt;br /&gt;
git clone -b REL1_43 https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install PHP Dependencies:&#039;&#039;&#039; If you cloned the extensions via Git, you must install the Composer dependencies inside both extension folders:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd Elastica &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
cd CirrusSearch &amp;amp;&amp;amp; composer install --no-dev &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Configure LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and add the following block at the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// 1. Load the required extensions&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
// 2. Specify your Elasticsearch server location&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// 3. Temporarily disable search updates during bootstrapping&lt;br /&gt;
$wgDisableSearchUpdate = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Generate and Bootstrap the Search Index ===&lt;br /&gt;
Run the maintenance scripts from your MediaWiki root directory to build and populate the Elasticsearch index.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Configure the index structure:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:UpdateSearchIndexConfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Re-enable live search updates:&#039;&#039;&#039; Go back into &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and &#039;&#039;&#039;remove or comment out&#039;&#039;&#039; the &amp;lt;code&amp;gt;$wgDisableSearchUpdate = true;&amp;lt;/code&amp;gt; line.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Populate the index with your wiki&#039;s page content:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipLinks --indexOnSkip&lt;br /&gt;
php maintenance/run.php CirrusSearch:ForceSearchIndex --skipParse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*: &#039;&#039;Note: For smaller wikis, running just &amp;lt;code&amp;gt;php maintenance/run.php CirrusSearch:ForceSearchIndex&amp;lt;/code&amp;gt; is usually sufficient.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Switch MediaWiki to Use CirrusSearch ===&lt;br /&gt;
Once indexing completes successfully, add the final setting to &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to hand search queries over to Elasticsearch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Direct default search traffic to CirrusSearch&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test a search query on your wiki&#039;s &amp;lt;code&amp;gt;Special:Search&amp;lt;/code&amp;gt; page. Your results should now be powered by Elasticsearch!&lt;br /&gt;
&lt;br /&gt;
=== Step 6: LocalSettings.php Cleanup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
## CUSTOM ELASTIC SEARCH&lt;br /&gt;
// Force CirrusSearch overrides at the very end of LocalSettings.php&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
&lt;br /&gt;
// Force exact database prefix matching for CirrusSearch&lt;br /&gt;
$wgCirrusSearchClusterOverrides = [&lt;br /&gt;
    &#039;default&#039; =&amp;gt; [&lt;br /&gt;
        &#039;replica&#039; =&amp;gt; &#039;127.0.0.1&#039;&lt;br /&gt;
    ]&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Ensure fallback to core MySQL is explicitly disabled for testing&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
$wgCirrusSearchEnableDynamicHighlighter = false;&lt;br /&gt;
&lt;br /&gt;
$wgJobRunRate = 0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Setup Crontab Job ===&lt;br /&gt;
====Job====&lt;br /&gt;
# Establish a job that runs every minute&lt;br /&gt;
# crontab -e&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
* * * * * /usr/bin/php /var/www/html/&amp;lt;yourWebDir&amp;gt;/maintenance/run.php runJobs --maxtime=60 &amp;gt;&amp;gt; /var/log/mediawiki/runJobs.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Logs====&lt;br /&gt;
# Setup a log dir (probably should revisit this some day and do a proper rotation)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /var/log/mediawiki&lt;br /&gt;
sudo chown it:it /var/log/mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reverting to the Default MediaWiki Search ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with CirrusSearch or simply want to revert to MediaWiki&#039;s native MySQL/MariaDB database search, follow these steps to safely disable the extension.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Edit LocalSettings.php ===&lt;br /&gt;
Open your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and locate the configuration block for CirrusSearch.&lt;br /&gt;
&lt;br /&gt;
You must remove or comment out the line that sets the search engine type, as well as the extension loading commands.&lt;br /&gt;
&lt;br /&gt;
Change this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
$wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
$wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To this (commented out by adding &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// wfLoadExtension( &#039;Elastica&#039; );&lt;br /&gt;
// wfLoadExtension( &#039;CirrusSearch&#039; );&lt;br /&gt;
// $wgCirrusSearchServers = [ &#039;127.0.0.1&#039; ];&lt;br /&gt;
// $wgSearchType = &#039;CirrusSearch&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &#039;&#039;Note: By removing &amp;lt;code&amp;gt;$wgSearchType&amp;lt;/code&amp;gt;, MediaWiki automatically falls back to its default internal search engine.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Clear the MediaWiki Cache ===&lt;br /&gt;
MediaWiki caches configuration settings. To ensure the wiki immediately recognizes that CirrusSearch has been disabled, purge the application cache from your terminal in the MediaWiki root directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
php maintenance/run.php purgeCache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Verify the Changes ===&lt;br /&gt;
Go to your wiki in a web browser and try using the search bar. The results should now load using the standard MediaWiki search interface.&lt;br /&gt;
&lt;br /&gt;
=== Step 4: (Optional) Stop the Elasticsearch Service ===&lt;br /&gt;
Elasticsearch consumes a significant amount of RAM (often 1GB+). If you do not plan to use it again or are permanently abandoning CirrusSearch, you should stop and disable the background service to free up your server resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl disable --now elasticsearch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Step 5: Crontab ===&lt;br /&gt;
# Edit out or remove the schedule crontab job.&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Weblog-2026-08]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Mermaid&amp;diff=2030</id>
		<title>Mermaid</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Mermaid&amp;diff=2030"/>
		<updated>2026-08-18T10:19:22Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Nested Diagrams */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Nested Diagrams=&lt;br /&gt;
How complex would nested diagrams be?  Would need to map everything out and have a naming convention for the nodes and levels.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;nodeShortName&amp;gt;_&amp;lt;A-Z&amp;gt; becomes the page to be created&lt;br /&gt;
** the 27th level could be AA, then AB, etc.  We would hope that we never got that deep.&lt;br /&gt;
* Does the naming really work?  Might need to prefix with the Subject.&lt;br /&gt;
* &amp;lt;projectShortName&amp;gt;_&amp;lt;nodeShortName&amp;gt;_&amp;lt;A-Z&amp;gt; becomes the page to be created&lt;br /&gt;
** Needs to be unique!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Original Link Test=&lt;br /&gt;
The chart below was started before the thoughts above.&lt;br /&gt;
&amp;lt;mermaid&amp;gt;&lt;br /&gt;
graph TD&lt;br /&gt;
    A[Start] --&amp;gt; B{Is it working?}&lt;br /&gt;
    B -- Yes --&amp;gt; C[Great!]&lt;br /&gt;
    B -- No --&amp;gt; D[Check Mermaid Lvl 2]&lt;br /&gt;
&lt;br /&gt;
click D &amp;quot;/index.php/MermaidLvl2&amp;quot; &amp;quot;Go to Mermaid Level 2&amp;quot;&lt;br /&gt;
style D fill:#2ecc71,stroke:#27ae60,color:#fff&lt;br /&gt;
&amp;lt;/mermaid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mermaid]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
	<entry>
		<id>https://www.rabbibob.com/index.php?title=Mermaid&amp;diff=2029</id>
		<title>Mermaid</title>
		<link rel="alternate" type="text/html" href="https://www.rabbibob.com/index.php?title=Mermaid&amp;diff=2029"/>
		<updated>2026-08-18T10:19:04Z</updated>

		<summary type="html">&lt;p&gt;Rabbi Bob: /* Nested Diagrams */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Nested Diagrams=&lt;br /&gt;
How complex would nested diagrams be?  Would need to map everything out and have a naming convention for the nodes and levels.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;nodeShortName&amp;gt;_&amp;lt;A-Z&amp;gt; becomes the page to be created&lt;br /&gt;
** the 27th level could be AA, then AB, etc.  We would hope that we never got that deep.&lt;br /&gt;
* Does the naming really work?  Might need to prefix with the Subject.&lt;br /&gt;
* &amp;lt;projectShortName&amp;gt;_&amp;lt;nodeShortName&amp;gt;_&amp;lt;A-Z&amp;gt; becomes the page to be created&lt;br /&gt;
** Needs to be unique!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The chart below was started before the thoughts above.&lt;br /&gt;
&amp;lt;mermaid&amp;gt;&lt;br /&gt;
graph TD&lt;br /&gt;
    A[Start] --&amp;gt; B{Is it working?}&lt;br /&gt;
    B -- Yes --&amp;gt; C[Great!]&lt;br /&gt;
    B -- No --&amp;gt; D[Check Mermaid Lvl 2]&lt;br /&gt;
&lt;br /&gt;
click D &amp;quot;/index.php/MermaidLvl2&amp;quot; &amp;quot;Go to Mermaid Level 2&amp;quot;&lt;br /&gt;
style D fill:#2ecc71,stroke:#27ae60,color:#fff&lt;br /&gt;
&amp;lt;/mermaid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mermaid]]&lt;/div&gt;</summary>
		<author><name>Rabbi Bob</name></author>
	</entry>
</feed>