<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.opensourceecology.org/index.php?action=history&amp;feed=atom&amp;title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3</id>
	<title>CHG-2025-XX-XX migrate osemain to hetzner3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opensourceecology.org/index.php?action=history&amp;feed=atom&amp;title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3"/>
	<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;action=history"/>
	<updated>2026-04-09T16:31:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304938&amp;oldid=prev</id>
		<title>Maltfield: fix copy/paste msg; we do still update osemain</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304938&amp;oldid=prev"/>
		<updated>2025-04-11T22:53:58Z</updated>

		<summary type="html">&lt;p&gt;fix copy/paste msg; we do still update osemain&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:53, 11 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l201&quot;&gt;Line 201:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 201:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# STEP 4: Create README about site deprecation and how to restore it&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# STEP 4: Create README about site deprecation and how to restore it&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; ${static_vhostDir}/README.txt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; ${static_vhostDir}/README.txt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In 2024&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, this website was no longer updated&lt;/del&gt;, the code required to render &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;was broken, and the decision was made to migrate two copies of this site to hetzner3: [1] a public static site scraped with curl, which cannot be updated by isn&amp;#039;t broken (this vhost) and [2] a dynamic (wordpress) vhost, which is broken and would require manual fixing of the theme/content before eventually replacing the static site again.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In 2024, the code required to render &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;this website &lt;/ins&gt;was broken &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;on the latest versions of wordpress/php/etc&lt;/ins&gt;, and the decision was made to migrate two copies of this site to hetzner3: [1] a public static site scraped with curl, which cannot be updated by isn&amp;#039;t broken (this vhost) and [2] a dynamic (wordpress) vhost, which is broken and would require manual fixing of the theme/content before eventually replacing the static site again.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For more information, please see:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For more information, please see:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304937&amp;oldid=prev</id>
		<title>Maltfield: /* Purpose */</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304937&amp;oldid=prev"/>
		<updated>2025-04-11T22:50:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Purpose&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:50, 11 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot;&gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# changes site from using mod_php to php-fpm&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# changes site from using mod_php to php-fpm&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# update core wp from v5.1.1 to v6.7.1  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# update core wp from v5.1.1 to v6.7.1  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# eliminates subversion from the docroot (which has security issues because the releases are not signed and lacks 3TOFU)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update &lt;/del&gt;plugin &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;akismet&amp;#039; from v4.1.1 to v5.3.5&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TODO: record all &lt;/ins&gt;plugin &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;version upgrades &amp;amp; versions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;be-gdpr&amp;#039; from v1.0.0 to v1.1.6&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;be-portfolio-post&amp;#039; from v1.1 to v1.1.1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# uninstall plugin &amp;#039;colorhub&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# uninstall plugin &amp;#039;force-strong-passwords&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;google-authenticator&amp;#039; from v0.48 to 0.54&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# uninstall plugin &amp;#039;masterslider&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;masterslider&amp;#039; from v3.2.7 to v3.7.8&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;meta-box&amp;#039; from v4.17.3 to v5.10.5&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;meta-box-conditional-logic&amp;#039; from v1.3 to v1.6.23&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;meta-box-show-hide&amp;#039; from v1.0.2 to v1.3.1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;meta-box-tabs&amp;#039; from v1.0.0 to v1.1.18&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;oshine-core&amp;#039; from v1.3.4 to v1.6.1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;oshine-modules&amp;#039; from v2.2.5 to v3.3.8&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# uninstall plugin &amp;#039;rename-wp-login&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;revslider&amp;#039; from v5.4.7.4 to 6.7.25&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;tatsu&amp;#039; from v2.6.8 to v3.5.3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# uninstall plugin &amp;#039;typehub&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update plugin &amp;#039;vaching&amp;#039; from v1.6.9 to v1.8.3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# install, activate, and configure new plugin &amp;#039;activitypub&amp;#039; v4.4.0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# install, activate, and configure new plugin &amp;#039;activitypub&amp;#039; v4.4.0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l82&quot;&gt;Line 82:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# install plugin &amp;#039;wp-qrcode&amp;#039; v1.1.1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# install plugin &amp;#039;wp-qrcode&amp;#039; v1.1.1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update &lt;/del&gt;theme &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;oshin&amp;#039; from v6.6.4.4 to v7.2.1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TODO: record all &lt;/ins&gt;theme &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;version upgrades &amp;amp; versions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentyeleven&amp;#039; from v3.2 to v4.8&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentyfifteen&amp;#039; from v2.4 to v3.9&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentyfourteen&amp;#039; from v2.6 to v4.1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentyseventeen&amp;#039; from v2.1 to v3.8&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentysixteen&amp;#039; from v1.9 to v3.4&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentyten&amp;#039; from v2.8 to v4.3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentythirteen&amp;#039; from v2.8 to v4.3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# update theme &amp;#039;twentytwelve&amp;#039; from v2.9 to v4.4&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Points of Contact==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Points of Contact==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304936&amp;oldid=prev</id>
		<title>Maltfield: add notes about this special site</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304936&amp;oldid=prev"/>
		<updated>2025-04-11T22:48:50Z</updated>

		<summary type="html">&lt;p&gt;add notes about this special site&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:48, 11 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Initial Ticket draft created on wiki (WIP)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Initial Ticket draft created on wiki (WIP)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==2025-03-03==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Marcin, Catarina, and Michael met to discuss how to migrate osemain.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Unlike obi (which rarely gets updated), we can&#039;t migrate a live static site and a (hidden) dynamic site. Rather, we&#039;ll keep the live site on hetzner2 so that we can keep publishing updates. At the same time, I&#039;ll migrate the broken wordpress site over to hetzner3, so that Catarina can begin to replace its theme with one that isn&#039;t totally broken on the latest versions of wordpress, php, etc.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Marcin and Catarina accepted the risk of having a &quot;split-brain&quot; and they said they&#039;d be OK to manually copy &amp;amp; paste all new content (eg articles) from the install on hetzner2 to the one on hetzner3.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Eventually (outside the scope of this CHG), once we&#039;ve finished rebuilding osemain on hetzner3 with a replacement wordpress theme, we&#039;ll cutover DNS to the new site.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I&#039;ll also migrate a static site, just in-case. As with OBI, we&#039;ll bind the osemain static site on the &quot;main&quot; IPv4 address of hetzner3, and bind the (broken) osemain dynamic site on our temp/secondary IPv4 adddress on hetzner3&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Change Info=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Change Info=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304935&amp;oldid=prev</id>
		<title>Maltfield: initial article created (copied from obi CHG)</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CHG-2025-XX-XX_migrate_osemain_to_hetzner3&amp;diff=304935&amp;oldid=prev"/>
		<updated>2025-04-11T22:43:07Z</updated>

		<summary type="html">&lt;p&gt;initial article created (copied from obi CHG)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Status=&lt;br /&gt;
&lt;br /&gt;
==2025-04-11 22:40 UTC==&lt;br /&gt;
&lt;br /&gt;
Initial Ticket draft created on wiki (WIP)&lt;br /&gt;
&lt;br /&gt;
=Change Info=&lt;br /&gt;
&lt;br /&gt;
==Scheduled Time==&lt;br /&gt;
&lt;br /&gt;
This change will take place on 2025-??-?? ??:00 UTC&lt;br /&gt;
&lt;br /&gt;
* = 2025-??-?? ??:00 Kansas City, US&lt;br /&gt;
* = 2025-??-?? ??:00 Guayaquil, EC&lt;br /&gt;
&lt;br /&gt;
https://www.timeanddate.com/worldclock/converter.html?iso=20240727T160000&amp;amp;p1=405&amp;amp;p2=1440&amp;amp;p3=93&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
This change does the following for www.opensourceecology.org&lt;br /&gt;
&lt;br /&gt;
# entirely migrate the &amp;#039;ose&amp;#039; wordpress site from [[hetzner2]] (EOL CentOS7) to [[hetzner3]] (Debian 12)&lt;br /&gt;
# changes site from apache v2.4.6 to v2.4.62&lt;br /&gt;
# changes site from varnish v4.0.5 to v7.1.1&lt;br /&gt;
# changes site from nginx v1.20.1 to v1.22.1&lt;br /&gt;
# changes site from php v5.6 to v8.2&lt;br /&gt;
# changes site from using mod_php to php-fpm&lt;br /&gt;
# update core wp from v5.1.1 to v6.7.1 &lt;br /&gt;
# eliminates subversion from the docroot (which has security issues because the releases are not signed and lacks 3TOFU)&lt;br /&gt;
# update plugin &amp;#039;akismet&amp;#039; from v4.1.1 to v5.3.5&lt;br /&gt;
# update plugin &amp;#039;be-gdpr&amp;#039; from v1.0.0 to v1.1.6&lt;br /&gt;
# update plugin &amp;#039;be-portfolio-post&amp;#039; from v1.1 to v1.1.1&lt;br /&gt;
# uninstall plugin &amp;#039;colorhub&amp;#039;&lt;br /&gt;
# uninstall plugin &amp;#039;force-strong-passwords&amp;#039;&lt;br /&gt;
# update plugin &amp;#039;google-authenticator&amp;#039; from v0.48 to 0.54&lt;br /&gt;
# uninstall plugin &amp;#039;masterslider&amp;#039;&lt;br /&gt;
# update plugin &amp;#039;masterslider&amp;#039; from v3.2.7 to v3.7.8&lt;br /&gt;
# update plugin &amp;#039;meta-box&amp;#039; from v4.17.3 to v5.10.5&lt;br /&gt;
# update plugin &amp;#039;meta-box-conditional-logic&amp;#039; from v1.3 to v1.6.23&lt;br /&gt;
# update plugin &amp;#039;meta-box-show-hide&amp;#039; from v1.0.2 to v1.3.1&lt;br /&gt;
# update plugin &amp;#039;meta-box-tabs&amp;#039; from v1.0.0 to v1.1.18&lt;br /&gt;
# update plugin &amp;#039;oshine-core&amp;#039; from v1.3.4 to v1.6.1&lt;br /&gt;
# update plugin &amp;#039;oshine-modules&amp;#039; from v2.2.5 to v3.3.8&lt;br /&gt;
# uninstall plugin &amp;#039;rename-wp-login&amp;#039;&lt;br /&gt;
# update plugin &amp;#039;revslider&amp;#039; from v5.4.7.4 to 6.7.25&lt;br /&gt;
# update plugin &amp;#039;tatsu&amp;#039; from v2.6.8 to v3.5.3&lt;br /&gt;
# uninstall plugin &amp;#039;typehub&amp;#039;&lt;br /&gt;
# update plugin &amp;#039;vaching&amp;#039; from v1.6.9 to v1.8.3&lt;br /&gt;
&lt;br /&gt;
# install, activate, and configure new plugin &amp;#039;activitypub&amp;#039; v4.4.0&lt;br /&gt;
# install, activate, and configure new plugin &amp;#039;aurora-heatmap&amp;#039; v1.7.0&lt;br /&gt;
# install, activate, and configure new plugin &amp;#039;melapress-login-security&amp;#039; v2.0.1&lt;br /&gt;
# install plugin &amp;#039;advanced-nocaptcha-recaptcha&amp;#039; v7.5.0&lt;br /&gt;
# install plugin &amp;#039;bulk-media-register&amp;#039; v1.40&lt;br /&gt;
# install plugin &amp;#039;enable-media-replace&amp;#039; v4.1.5&lt;br /&gt;
# install plugin &amp;#039;extensions-leaflet-map&amp;#039; v4.4.3&lt;br /&gt;
# install plugin &amp;#039;hcaptcha-for-forms-and-more&amp;#039; v4.8.0&lt;br /&gt;
# install plugin &amp;#039;include-mastodon-feed&amp;#039; v1.9.9&lt;br /&gt;
# install plugin &amp;#039;leaflet-map&amp;#039; v3.4.1&lt;br /&gt;
# install plugin &amp;#039;raw-html&amp;#039; v1.6.4&lt;br /&gt;
# install plugin &amp;#039;regenerate-thumbnails&amp;#039; v3.1.6&lt;br /&gt;
# install plugin &amp;#039;related-posts-by-taxonomy&amp;#039; v2.7.6&lt;br /&gt;
# install plugin &amp;#039;smart-slider-3&amp;#039; v3.5.1.25&lt;br /&gt;
# install plugin &amp;#039;spam-destroyer&amp;#039; v2.1.4&lt;br /&gt;
# install plugin &amp;#039;wordpress-seo&amp;#039; v24.0&lt;br /&gt;
# install plugin &amp;#039;wp-2fa&amp;#039; v2.8.0&lt;br /&gt;
# install plugin &amp;#039;wpforms-lite&amp;#039; v1.9.2.3&lt;br /&gt;
# install plugin &amp;#039;wpfront-notification-bar&amp;#039; v3.4.2&lt;br /&gt;
# install plugin &amp;#039;wp-pgp-encrypted-emails&amp;#039; v0.8.0&lt;br /&gt;
# install plugin &amp;#039;wp-qrcode&amp;#039; v1.1.1&lt;br /&gt;
&lt;br /&gt;
# update theme &amp;#039;oshin&amp;#039; from v6.6.4.4 to v7.2.1&lt;br /&gt;
# update theme &amp;#039;twentyeleven&amp;#039; from v3.2 to v4.8&lt;br /&gt;
# update theme &amp;#039;twentyfifteen&amp;#039; from v2.4 to v3.9&lt;br /&gt;
# update theme &amp;#039;twentyfourteen&amp;#039; from v2.6 to v4.1&lt;br /&gt;
# update theme &amp;#039;twentyseventeen&amp;#039; from v2.1 to v3.8&lt;br /&gt;
# update theme &amp;#039;twentysixteen&amp;#039; from v1.9 to v3.4&lt;br /&gt;
# update theme &amp;#039;twentyten&amp;#039; from v2.8 to v4.3&lt;br /&gt;
# update theme &amp;#039;twentythirteen&amp;#039; from v2.8 to v4.3&lt;br /&gt;
# update theme &amp;#039;twentytwelve&amp;#039; from v2.9 to v4.4&lt;br /&gt;
&lt;br /&gt;
==Points of Contact==&lt;br /&gt;
&lt;br /&gt;
Change being performed by: [[User:Maltfield|Michael Altfield]]&lt;br /&gt;
&lt;br /&gt;
Service owners: [[User:Catarina|Catarina Mota]] &amp;amp; [[User:Marcin|Marcin Jakubowski]]&lt;br /&gt;
&lt;br /&gt;
==Time Length==&lt;br /&gt;
&lt;br /&gt;
This whole process is expected to take 1-3 hours.&lt;br /&gt;
&lt;br /&gt;
Some systems could be impacted for days, if issues are encountered.&lt;br /&gt;
&lt;br /&gt;
==Systems Impacted==&lt;br /&gt;
&lt;br /&gt;
This change impacts both hetzner2 and hetzner3. It&amp;#039;s possible that we&amp;#039;ll need to restart one or both of these servers during this migration, which could affect the availability of all OSE &amp;amp; OBI websites.&lt;br /&gt;
&lt;br /&gt;
==Staging Test==&lt;br /&gt;
&lt;br /&gt;
n/a&lt;br /&gt;
&lt;br /&gt;
=Change Steps=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
####################&lt;br /&gt;
# run on hetzner2 #&lt;br /&gt;
####################&lt;br /&gt;
&lt;br /&gt;
sudo su -&lt;br /&gt;
&lt;br /&gt;
# STEP 0: CREATE BACKUPS&lt;br /&gt;
source /root/backups/backup.settings&lt;br /&gt;
/root/backups/backup.sh&lt;br /&gt;
&lt;br /&gt;
# when finished, verify that the whole system backup was successful before proceeding&lt;br /&gt;
sudo rclone lsl b2:ose-server-backups | grep -i $(date +%Y%m%d)&lt;br /&gt;
&lt;br /&gt;
# DECLARE VARIABLES&lt;br /&gt;
vhost_name=&amp;#039;www.opensourceecology.org&amp;#039;&lt;br /&gt;
dbName=&amp;#039;osemain_db&amp;#039;&lt;br /&gt;
 dbUser=&amp;quot;CHANGEME&amp;quot;&lt;br /&gt;
 dbPass=&amp;quot;CHANGEME&amp;quot;&lt;br /&gt;
&lt;br /&gt;
source /root/backups/backup.settings&lt;br /&gt;
stamp=`date +%Y%m%d`&lt;br /&gt;
backupDir_hetzner2=&amp;quot;/var/tmp/backups_for_migration_to_hetzner3/${vhost_name}_${stamp}&amp;quot;&lt;br /&gt;
backupDir_hetzner3=&amp;quot;/var/tmp/backups_for_migration_from_hetzner2/${vhost_name}_${stamp}&amp;quot;&lt;br /&gt;
backupFileName_db_hetzner2=&amp;quot;mysqldump_${vhost_name}.${stamp}.sql.bz2&amp;quot;&lt;br /&gt;
backupFileName_files_hetzner2=&amp;quot;${vhost_name}_files.${stamp}.tar.gz&amp;quot;&lt;br /&gt;
vhostDir=&amp;quot;/var/www/html/${vhost_name}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# STEP 1: Bring site down on hetzner2&lt;br /&gt;
# uncomment the SITE_DOWN section&lt;br /&gt;
vim /etc/nginx/conf.d/${vhost_name}.conf&lt;br /&gt;
&lt;br /&gt;
nginx -t&lt;br /&gt;
# only run this next command if the above command was successful&lt;br /&gt;
service nginx reload&lt;br /&gt;
&lt;br /&gt;
# STEP 2: BACKUP DB&lt;br /&gt;
mkdir -p ${backupDir_hetzner2}/{current,old}&lt;br /&gt;
pushd ${backupDir_hetzner2}/current/&lt;br /&gt;
mv ${backupDir_hetzner2}/current/* ${backupDir_hetzner2}/old/&lt;br /&gt;
&lt;br /&gt;
time nice mysqldump -u&amp;quot;${dbUser}&amp;quot; -p&amp;quot;${dbPass}&amp;quot; ${dbName} | bzip2 -c &amp;gt; ${backupDir_hetzner2}/current/${backupFileName_db_hetzner2}&lt;br /&gt;
&lt;br /&gt;
# STEP 3: BACKUP FILES&lt;br /&gt;
time nice tar -czvf ${backupDir_hetzner2}/current/${backupFileName_files_hetzner2} ${vhostDir}&lt;br /&gt;
&lt;br /&gt;
# STEP 4: GENERATE STATIC SITE&lt;br /&gt;
mkdir wget&lt;br /&gt;
pushd wget&lt;br /&gt;
time nice wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains &amp;quot;${vhost_name}&amp;quot; &amp;quot;${vhost_name}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# STEP 5: COPY TO HETZNER3&lt;br /&gt;
ssh -p 32415 maltfield@hetzner3 sudo mkdir -p ${backupDir_hetzner3}/{current,old}&lt;br /&gt;
ssh -p 32415 maltfield@hetzner3 sudo mv ${backupDir_hetzner3}/current/* ${backupDir_hetzner3}/old/&lt;br /&gt;
rsync -av --progress --rsync-path=&amp;quot;sudo rsync&amp;quot; -e &amp;quot;ssh -p 32415&amp;quot; ${backupDir_hetzner2}/current/* maltfield@hetzner3:${backupDir_hetzner3}/current/&lt;br /&gt;
&lt;br /&gt;
####################&lt;br /&gt;
# run on hetzner3 #&lt;br /&gt;
####################&lt;br /&gt;
&lt;br /&gt;
sudo su -&lt;br /&gt;
&lt;br /&gt;
# STEP 0: CREATE BACKUPS&lt;br /&gt;
# for good measure, trigger a backup of the entire system&amp;#039;s database &amp;amp; files:&lt;br /&gt;
time /bin/nice /root/backups/backup.sh &amp;amp;&amp;gt;&amp;gt; /var/log/backups/backup.log&lt;br /&gt;
&lt;br /&gt;
# when finished, verify that the whole system backup was successful before proceeding&lt;br /&gt;
rclone lsl b2:ose-server-backups | grep -i $(date +%Y%m%d)&lt;br /&gt;
&lt;br /&gt;
# DECLARE VARIABLES&lt;br /&gt;
vhost_name=&amp;#039;www.opensourceecology.org&amp;#039;&lt;br /&gt;
dbName=&amp;#039;osemain_db&amp;#039;&lt;br /&gt;
 dbUser=&amp;quot;CHANGEME&amp;quot;&lt;br /&gt;
 dbPass=&amp;quot;CHANGEME&amp;quot;&lt;br /&gt;
&lt;br /&gt;
source /root/backups/backup.settings&lt;br /&gt;
stamp=`date +%Y%m%d`&lt;br /&gt;
backupDir_hetzner2=&amp;quot;/var/tmp/backups_for_migration_to_hetzner3/${vhost_name}_${stamp}&amp;quot;&lt;br /&gt;
backupDir_hetzner3=&amp;quot;/var/tmp/backups_for_migration_from_hetzner2/${vhost_name}_${stamp}&amp;quot;&lt;br /&gt;
backupFileName_db_hetzner2=&amp;quot;mysqldump_${vhost_name}.${stamp}.sql.bz2&amp;quot;&lt;br /&gt;
backupFileName_files_hetzner2=&amp;quot;${vhost_name}_files.${stamp}.tar.gz&amp;quot;&lt;br /&gt;
vhostDir=&amp;quot;/var/www/html/${vhost_name}&amp;quot;&lt;br /&gt;
static_vhostDir=&amp;quot;/var/www/html/static_${vhost_name}&amp;quot;&lt;br /&gt;
docrootDir=&amp;quot;${vhostDir}/htdocs&amp;quot;&lt;br /&gt;
static_docrootDir=&amp;quot;${static_vhostDir}/htdocs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
###############&lt;br /&gt;
# STATIC SITE #&lt;br /&gt;
###############&lt;br /&gt;
&lt;br /&gt;
# STEP 1: ADD DB&lt;br /&gt;
&lt;br /&gt;
# first, get rid of the old vhost dir&lt;br /&gt;
mv &amp;quot;${static_vhostDir}&amp;quot; &amp;quot;${backupDir_hetzner3}/${vhost_name}.$(date &amp;quot;+%Y%m%d_%H%M%S&amp;quot;)&amp;quot;&lt;br /&gt;
mkdir -p &amp;quot;${vhostDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# put a copy of the db file in the vhost dir (outside docroot)&lt;br /&gt;
pushd ${backupDir_hetzner3}/current&lt;br /&gt;
cp ${backupFileName_db_hetzner2} ${vhostDir}/&lt;br /&gt;
chown root:root ${vhostDir}/*.sql.bz2&lt;br /&gt;
chmod 0400 ${vhostDir}/*.sql.bz2&lt;br /&gt;
&lt;br /&gt;
 time nice mysql -uroot -p${mysqlPass} -sNe &amp;quot;DROP DATABASE IF EXISTS ${dbName};&amp;quot; &lt;br /&gt;
&lt;br /&gt;
# STEP 2: Add vhost files backup to vhost dir (outside docroot)&lt;br /&gt;
cp ${backupFileName_files_hetzner2} ${vhostDir}/&lt;br /&gt;
chown root:root ${vhostDir}/*.tar.bz2&lt;br /&gt;
chmod 0400 ${vhostDir}/*.tar.bz2&lt;br /&gt;
&lt;br /&gt;
# STEP 3: Add static html files to docroot&lt;br /&gt;
time nice rsync -av --progress wget/${vhost_name}/ ${static_docrootDir}/&lt;br /&gt;
&lt;br /&gt;
# STEP 4: Create README about site deprecation and how to restore it&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF &amp;gt; ${static_vhostDir}/README.txt&lt;br /&gt;
In 2024, this website was no longer updated, the code required to render it was broken, and the decision was made to migrate two copies of this site to hetzner3: [1] a public static site scraped with curl, which cannot be updated by isn&amp;#039;t broken (this vhost) and [2] a dynamic (wordpress) vhost, which is broken and would require manual fixing of the theme/content before eventually replacing the static site again.&lt;br /&gt;
&lt;br /&gt;
For more information, please see:&lt;br /&gt;
&lt;br /&gt;
 * https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_osemain_to_hetzner3&lt;br /&gt;
&lt;br /&gt;
-- Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt; $(date -u --rfc-3339=seconds)&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
# STEP 5: Add missing files&lt;br /&gt;
&lt;br /&gt;
# n/a&lt;br /&gt;
&lt;br /&gt;
# STEP 6: Fix assets&lt;br /&gt;
&lt;br /&gt;
# n/a&lt;br /&gt;
&lt;br /&gt;
################&lt;br /&gt;
# DYNAMIC SITE #&lt;br /&gt;
################&lt;br /&gt;
&lt;br /&gt;
# STEP 1: ADD DB&lt;br /&gt;
&lt;br /&gt;
# create backup before we start changing the sql file&lt;br /&gt;
pushd ${backupDir_hetzner3}/current&lt;br /&gt;
cp ${backupFileName_db_hetzner2} ${backupFileName_db_hetzner2}.orig&lt;br /&gt;
&lt;br /&gt;
# extract .sql.bz2 -&amp;gt; .sql&lt;br /&gt;
bzip2 -dc ${backupFileName_db_hetzner2} &amp;gt; db.sql&lt;br /&gt;
&lt;br /&gt;
 time nice mysql -uroot -p${mysqlPass} -sNe &amp;quot;DROP DATABASE IF EXISTS ${dbName};&amp;quot; &lt;br /&gt;
 time nice mysql -uroot -p${mysqlPass} -sNe &amp;quot;CREATE DATABASE ${dbName}; USE ${dbName};&amp;quot;&lt;br /&gt;
 time nice mysql ${dbName} -uroot -p${mysqlPass} &amp;lt; &amp;quot;db.sql&amp;quot;&lt;br /&gt;
 time nice mysql -uroot -p${mysqlPass} -sNe &amp;quot;GRANT ALL ON ${dbName}.* TO &amp;#039;${dbUser}&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;${dbPass}&amp;#039;; FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# STEP 2: Add vhost files&lt;br /&gt;
mv &amp;quot;${vhostDir}&amp;quot; &amp;quot;${backupDir_hetzner3}/old/${vhost_name}.$(date &amp;quot;+%Y%m%d_%H%M%S&amp;quot;)&amp;quot;&lt;br /&gt;
tar -xzvf ${backupFileName_files_hetzner2}&lt;br /&gt;
mv var/www/html/${vhost_name} ${vhostDir}&lt;br /&gt;
&lt;br /&gt;
# remove &amp;#039;.svn&amp;#039; dirs (we no longer use svn, for security)&lt;br /&gt;
find ${docrootDir} -iname &amp;#039;.svn&amp;#039; -exec rm -rf &amp;#039;{}&amp;#039; \;&lt;br /&gt;
&lt;br /&gt;
# add wordpress bug fix&lt;br /&gt;
# is the bug fix already present?&lt;br /&gt;
if [[ ! $(grep &amp;#039;https://core.trac.wordpress.org/ticket/48693&amp;#039; ${vhostDir}/wp-config.php) ]]; then&lt;br /&gt;
	# the bug fix is absent; add it&lt;br /&gt;
&lt;br /&gt;
	backup_filename=&amp;quot;wp-config.`date &amp;quot;+%Y%m%d_%H%M%S&amp;quot;`.php&amp;quot;&lt;br /&gt;
	mv ${vhostDir}/wp-config.php ${vhostDir}/${backup_filename}&lt;br /&gt;
&lt;br /&gt;
	cat &amp;gt; ${vhostDir}/wp-config.php &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
# fix wordpress bugs&lt;br /&gt;
# * https://core.trac.wordpress.org/ticket/48693&lt;br /&gt;
# * https://core.trac.wordpress.org/ticket/62693&lt;br /&gt;
if( ! function_exists(&amp;#039;ini_set&amp;#039;) ){&lt;br /&gt;
        function ini_set(){&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
if( ! function_exists(&amp;#039;chmod&amp;#039;) ){&lt;br /&gt;
        function chmod(){&lt;br /&gt;
                return;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
	tail -n +2 ${vhostDir}/${backup_filename} &amp;gt;&amp;gt; ${vhostDir}/wp-config.php&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# and use &amp;#039;DB_HOST&amp;#039; of &amp;#039;localhost&amp;#039;&lt;br /&gt;
sed -i &amp;quot;s%^#define(&amp;#039;DB_HOST&amp;#039;, &amp;#039;localhost&amp;#039;);%define(&amp;#039;DB_HOST&amp;#039;, &amp;#039;localhost&amp;#039;);%&amp;quot; ${vhostDir}/wp-config.php | grep -i DB_HOST&lt;br /&gt;
sed -i &amp;quot;s%^define(&amp;#039;DB_HOST&amp;#039;, &amp;#039;localhost\:\(.*\)%#define(&amp;#039;DB_HOST&amp;#039;, &amp;#039;localhost\:\1%&amp;quot; ${vhostDir}/wp-config.php | grep -i DB_HOST&lt;br /&gt;
&lt;br /&gt;
# verify&lt;br /&gt;
ls&lt;br /&gt;
vim ${vhostDir}/wp-config.php&lt;br /&gt;
&lt;br /&gt;
# UPDATE CORE&lt;br /&gt;
&lt;br /&gt;
rsync -av --progress /var/tmp/wordpress/core/wordpress/ ${docrootDir}&lt;br /&gt;
&lt;br /&gt;
# UPDATE OLD PLUGINS&lt;br /&gt;
&lt;br /&gt;
for plugin_path in $(find &amp;quot;${docrootDir}/wp-content/plugins&amp;quot; -mindepth 1 -maxdepth 1 -type d); do&lt;br /&gt;
        plugin=$(basename &amp;quot;${plugin_path}&amp;quot;)&lt;br /&gt;
        source_path=&amp;quot;/var/tmp/wordpress/plugins/${plugin}&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        echo &amp;quot;${plugin}&amp;quot;&lt;br /&gt;
        rm -rf ${plugin_path};&lt;br /&gt;
        if [ -d &amp;quot;${source_path}&amp;quot; ]; then&lt;br /&gt;
                rsync -a ${source_path}/ &amp;quot;${plugin_path}/&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# INSTALLL NEW PLUGINS&lt;br /&gt;
&lt;br /&gt;
new_plugins=&amp;quot;activitypub aurora-heatmap melapress-login-security wps-hide-login raw-html related-posts-by-taxonomy smart-slider-3 spam-destroyer wpfront-notification-bar wordpress-seo wp-pgp-encrypted-emails include-mastodon-feed bulk-media-register enable-media-replace regenerate-thumbnails wp-qrcode wp-pgp-encrypted-emails include-mastodon-feed wp-2fa advanced-nocaptcha-recaptcha hcaptcha-for-forms-and-more leaflet-map extensions-leaflet-map wpforms-lite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for plugin in ${new_plugins}; do&lt;br /&gt;
        plugin_path=&amp;quot;${docrootDir}/wp-content/plugins/${plugin}&amp;quot;&lt;br /&gt;
        source_path=&amp;quot;/var/tmp/wordpress/plugins/${plugin}&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        if [ -d &amp;quot;${source_path}&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;${plugin}&amp;quot;&lt;br /&gt;
                rm -rf ${plugin_path};&lt;br /&gt;
                rsync -a ${source_path}/ &amp;quot;${plugin_path}/&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# delete Master Slider plugin (PHP Fatal error:  Uncaught TypeError: ftp_fput)&lt;br /&gt;
rm -rf ${docrootDir}/wp-content/plugins/masterslider*&lt;br /&gt;
&lt;br /&gt;
# UPDATE THEMES&lt;br /&gt;
&lt;br /&gt;
for theme_path in $(find &amp;quot;${docrootDir}/wp-content/themes&amp;quot; -mindepth 1 -maxdepth 1 -type d); do&lt;br /&gt;
	theme=$(basename &amp;quot;${theme_path}&amp;quot;)&lt;br /&gt;
	source_path=&amp;quot;/var/tmp/wordpress/themes/${theme}&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	echo &amp;quot;${theme}&amp;quot;&lt;br /&gt;
	rm -rf ${theme_path};&lt;br /&gt;
	if [ -d &amp;quot;${source_path}&amp;quot; ]; then&lt;br /&gt;
		rsync -a ${source_path}/ &amp;quot;${theme_path}/&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# INSTALLL NEW THEMES&lt;br /&gt;
&lt;br /&gt;
new_themes=&amp;quot;twentytwentyfour twentytwentyfive generatepress astra oceanwp hestia neve&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for theme in ${new_themes}; do&lt;br /&gt;
        theme_path=&amp;quot;${docrootDir}/wp-content/themes/${theme}&amp;quot;&lt;br /&gt;
        source_path=&amp;quot;/var/tmp/wordpress/themes/${theme}&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        if [ -d &amp;quot;${source_path}&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;${theme}&amp;quot;&lt;br /&gt;
                rm -rf ${theme_path};&lt;br /&gt;
                rsync -a ${source_path}/ &amp;quot;${theme_path}/&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# SET PERMISSIONS&lt;br /&gt;
time /usr/local/bin/fix_web_permissions.sh&lt;br /&gt;
&lt;br /&gt;
# ACTIVATE NEW PLUGINS&lt;br /&gt;
&lt;br /&gt;
activate_plugins=&amp;quot;activitypub aurora-heatmap melapress-login-security&amp;quot;&lt;br /&gt;
for plugin in ${activate_plugins}; do&lt;br /&gt;
	sudo -u wp -i wp --path=&amp;quot;${docrootDir}&amp;quot; plugin activate ${plugin}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# configure melapress-login-security&lt;br /&gt;
echo &amp;#039;DELETE FROM wp_options WHERE option_name = &amp;quot;mls_options&amp;quot;;&amp;#039; | mysql -u${dbUser} -p${dbPass} ${dbName}&lt;br /&gt;
echo &amp;#039;DELETE FROM wp_options WHERE option_name = &amp;quot;mls_setting&amp;quot;;&amp;#039; | mysql -u${dbUser} -p${dbPass} ${dbName}&lt;br /&gt;
&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | mysql -u${dbUser} -p${dbPass} ${dbName}&lt;br /&gt;
INSERT INTO wp_options (option_name, option_value) VALUES (&amp;#039;mls_options&amp;#039;, &amp;#039;a:62:{s:13:&amp;quot;master_switch&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:26:&amp;quot;activate_password_policies&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:37:&amp;quot;activate_password_expiration_policies&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:34:&amp;quot;activate_password_recycle_policies&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:16:&amp;quot;enforce_password&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:10:&amp;quot;min_length&amp;quot;;s:2:&amp;quot;20&amp;quot;;s:16:&amp;quot;password_history&amp;quot;;s:1:&amp;quot;1&amp;quot;;s:16:&amp;quot;inherit_policies&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:15:&amp;quot;password_expiry&amp;quot;;a:2:{s:5:&amp;quot;value&amp;quot;;s:1:&amp;quot;0&amp;quot;;s:4:&amp;quot;unit&amp;quot;;s:6:&amp;quot;months&amp;quot;;}s:8:&amp;quot;ui_rules&amp;quot;;a:7:{s:7:&amp;quot;history&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:8:&amp;quot;username&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:6:&amp;quot;length&amp;quot;;b:1;s:7:&amp;quot;numeric&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:8:&amp;quot;mix_case&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:13:&amp;quot;special_chars&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:21:&amp;quot;exclude_special_chars&amp;quot;;s:2:&amp;quot;no&amp;quot;;}s:5:&amp;quot;rules&amp;quot;;a:6:{s:6:&amp;quot;length&amp;quot;;b:1;s:7:&amp;quot;numeric&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:10:&amp;quot;upper_case&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:10:&amp;quot;lower_case&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:13:&amp;quot;special_chars&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:21:&amp;quot;exclude_special_chars&amp;quot;;s:2:&amp;quot;no&amp;quot;;}s:23:&amp;quot;change_initial_password&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:12:&amp;quot;timed_logins&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:21:&amp;quot;timed_logins_schedule&amp;quot;;a:7:{s:6:&amp;quot;monday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:7:&amp;quot;tuesday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:9:&amp;quot;wednesday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:8:&amp;quot;thursday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:6:&amp;quot;friday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:8:&amp;quot;saturday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}s:6:&amp;quot;sunday&amp;quot;;a:7:{s:6:&amp;quot;enable&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:7:&amp;quot;from_hr&amp;quot;;i:0;s:8:&amp;quot;from_min&amp;quot;;i:0;s:5:&amp;quot;to_hr&amp;quot;;i:11;s:6:&amp;quot;to_min&amp;quot;;i:59;s:13:&amp;quot;from_am_or_pm&amp;quot;;s:2:&amp;quot;am&amp;quot;;s:11:&amp;quot;to_am_or_pm&amp;quot;;s:2:&amp;quot;pm&amp;quot;;}}s:22:&amp;quot;inactive_users_enabled&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:21:&amp;quot;inactive_users_expiry&amp;quot;;a:2:{s:5:&amp;quot;value&amp;quot;;i:30;s:4:&amp;quot;unit&amp;quot;;s:4:&amp;quot;days&amp;quot;;}s:30:&amp;quot;inactive_users_reset_on_unlock&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:29:&amp;quot;failed_login_policies_enabled&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:21:&amp;quot;failed_login_attempts&amp;quot;;s:1:&amp;quot;5&amp;quot;;s:27:&amp;quot;failed_login_reset_attempts&amp;quot;;s:4:&amp;quot;1440&amp;quot;;s:27:&amp;quot;failed_login_unlock_setting&amp;quot;;s:5:&amp;quot;timed&amp;quot;;s:24:&amp;quot;failed_login_reset_hours&amp;quot;;s:2:&amp;quot;60&amp;quot;;s:29:&amp;quot;failed_login_reset_on_unblock&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:18:&amp;quot;disable_self_reset&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:26:&amp;quot;disable_self_reset_message&amp;quot;;b:0;s:27:&amp;quot;deactivated_account_message&amp;quot;;s:159:&amp;quot;Your WordPress user has been deactivated. Please contact the &amp;lt;a href=&amp;quot;mailto:michael@michaelaltfield.net&amp;quot;&amp;gt;website administrator&amp;lt;/a&amp;gt; to activate back your user.&amp;quot;;s:19:&amp;quot;timed_login_message&amp;quot;;b:0;s:30:&amp;quot;locked_user_disable_self_reset&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:38:&amp;quot;locked_user_disable_self_reset_message&amp;quot;;b:0;s:17:&amp;quot;restrict_login_ip&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:23:&amp;quot;restrict_login_ip_count&amp;quot;;i:3;s:22:&amp;quot;restrict_login_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:22:&amp;quot;notify_password_expiry&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:30:&amp;quot;notify_password_reset_on_login&amp;quot;;b:0;s:27:&amp;quot;notify_password_expiry_days&amp;quot;;i:0;s:27:&amp;quot;notify_password_expiry_unit&amp;quot;;s:4:&amp;quot;days&amp;quot;;s:26:&amp;quot;restrict_login_credentials&amp;quot;;s:7:&amp;quot;default&amp;quot;;s:34:&amp;quot;restrict_login_credentials_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:24:&amp;quot;enable_sessions_policies&amp;quot;;b:0;s:23:&amp;quot;remember_session_expiry&amp;quot;;a:2:{s:5:&amp;quot;value&amp;quot;;i:14;s:4:&amp;quot;unit&amp;quot;;s:4:&amp;quot;days&amp;quot;;}s:22:&amp;quot;default_session_expiry&amp;quot;;a:2:{s:5:&amp;quot;value&amp;quot;;i:2;s:4:&amp;quot;unit&amp;quot;;s:4:&amp;quot;days&amp;quot;;}s:22:&amp;quot;enable_device_policies&amp;quot;;b:0;s:35:&amp;quot;enable_device_policies_admin_alerts&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:25:&amp;quot;enable_security_questions&amp;quot;;b:0;s:17:&amp;quot;enabled_questions&amp;quot;;a:0:{}s:36:&amp;quot;device_policies_prompt_email_content&amp;quot;;s:0:&amp;quot;&amp;quot;;s:41:&amp;quot;device_policies_admin_alert_email_content&amp;quot;;s:0:&amp;quot;&amp;quot;;s:36:&amp;quot;device_policies_prompt_email_subject&amp;quot;;s:0:&amp;quot;&amp;quot;;s:41:&amp;quot;device_policies_admin_alert_email_subject&amp;quot;;s:0:&amp;quot;&amp;quot;;s:25:&amp;quot;min_answered_needed_count&amp;quot;;i:3;s:39:&amp;quot;password_reset_request_disabled_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:24:&amp;quot;password_expired_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:36:&amp;quot;inactive_user_account_locked_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:51:&amp;quot;inactive_user_account_locked_reset_disabled_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:38:&amp;quot;restrict_logins_prompt_failure_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:34:&amp;quot;timed_logins_login_blocked_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:39:&amp;quot;restrict_login_ip_login_blocked_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:35:&amp;quot;failed_logins_login_blocked_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:40:&amp;quot;security_prompt_response_failure_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:24:&amp;quot;timed_logins_auto_logout&amp;quot;;b:0;s:13:&amp;quot;ppm-user-role&amp;quot;;s:0:&amp;quot;&amp;quot;;s:22:&amp;quot;excluded_special_chars&amp;quot;;s:0:&amp;quot;&amp;quot;;}&amp;#039;);&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | mysql -u${dbUser} -p${dbPass} ${dbName}&lt;br /&gt;
INSERT INTO wp_options (option_name, option_value) VALUES (&amp;#039;mls_setting&amp;#039;, &amp;#039;a:62:{s:18:&amp;quot;send_summary_email&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:8:&amp;quot;exempted&amp;quot;;a:1:{s:5:&amp;quot;users&amp;quot;;a:0:{}}s:21:&amp;quot;use_custom_from_email&amp;quot;;s:13:&amp;quot;default_email&amp;quot;;s:10:&amp;quot;from_email&amp;quot;;s:0:&amp;quot;&amp;quot;;s:17:&amp;quot;from_display_name&amp;quot;;s:0:&amp;quot;&amp;quot;;s:26:&amp;quot;terminate_session_password&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:16:&amp;quot;stop_pw_generate&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:25:&amp;quot;users_have_multiple_roles&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;multiple_role_order&amp;quot;;a:0:{}s:13:&amp;quot;clear_history&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:22:&amp;quot;excluded_special_chars&amp;quot;;s:0:&amp;quot;&amp;quot;;s:25:&amp;quot;password_reset_key_expiry&amp;quot;;a:2:{s:5:&amp;quot;value&amp;quot;;i:24;s:4:&amp;quot;unit&amp;quot;;s:5:&amp;quot;hours&amp;quot;;}s:20:&amp;quot;enable_wp_reset_form&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:22:&amp;quot;enable_wp_profile_form&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:18:&amp;quot;enable_wc_pw_reset&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:22:&amp;quot;enable_wc_checkout_reg&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:18:&amp;quot;enable_bp_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;enable_bp_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:18:&amp;quot;enable_ld_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:18:&amp;quot;enable_um_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;enable_um_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:24:&amp;quot;enable_bbpress_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:20:&amp;quot;enable_mepr_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:21:&amp;quot;enable_mepr_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;enable_edd_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:20:&amp;quot;enable_edd_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;enable_pmp_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:20:&amp;quot;enable_pmp_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:19:&amp;quot;enable_pmp_pw_reset&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:28:&amp;quot;enable_profilepress_register&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:29:&amp;quot;enable_profilepress_pw_update&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:28:&amp;quot;enable_profilepress_pw_reset&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:16:&amp;quot;custom_login_url&amp;quot;;s:16:&amp;quot;ose-hidden-login&amp;quot;;s:21:&amp;quot;custom_login_redirect&amp;quot;;s:0:&amp;quot;&amp;quot;;s:24:&amp;quot;enable_login_allowed_ips&amp;quot;;b:0;s:26:&amp;quot;restrict_login_allowed_ips&amp;quot;;s:0:&amp;quot;&amp;quot;;s:27:&amp;quot;restrict_login_redirect_url&amp;quot;;s:0:&amp;quot;&amp;quot;;s:26:&amp;quot;restrict_login_bypass_slug&amp;quot;;s:0:&amp;quot;&amp;quot;;s:24:&amp;quot;send_user_unlocked_email&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:25:&amp;quot;send_user_unblocked_email&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:24:&amp;quot;send_user_pw_reset_email&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:26:&amp;quot;send_user_pw_expired_email&amp;quot;;s:3:&amp;quot;yes&amp;quot;;s:16:&amp;quot;login_geo_method&amp;quot;;s:7:&amp;quot;default&amp;quot;;s:16:&amp;quot;login_geo_action&amp;quot;;s:11:&amp;quot;deny_to_url&amp;quot;;s:19:&amp;quot;login_geo_countries&amp;quot;;s:0:&amp;quot;&amp;quot;;s:22:&amp;quot;login_geo_redirect_url&amp;quot;;s:0:&amp;quot;&amp;quot;;s:25:&amp;quot;login_geo_blocked_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:16:&amp;quot;iplocate_api_key&amp;quot;;s:0:&amp;quot;&amp;quot;;s:19:&amp;quot;gdpr_banner_message&amp;quot;;s:0:&amp;quot;&amp;quot;;s:18:&amp;quot;enable_gdpr_banner&amp;quot;;b:0;s:33:&amp;quot;disable_user_password_reset_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:41:&amp;quot;disable_user_delayed_password_reset_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:29:&amp;quot;disable_user_pw_expired_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:40:&amp;quot;disable_user_unlocked_reset_needed_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:36:&amp;quot;disable_device_policies_prompt_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:42:&amp;quot;disable_device_policies_prompt_admin_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:27:&amp;quot;disable_user_imported_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:40:&amp;quot;disable_user_imported_forced_reset_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:27:&amp;quot;disable_user_unlocked_email&amp;quot;;s:2:&amp;quot;no&amp;quot;;s:24:&amp;quot;user_unlocked_email_body&amp;quot;;s:0:&amp;quot;&amp;quot;;s:25:&amp;quot;user_unblocked_email_body&amp;quot;;s:0:&amp;quot;&amp;quot;;s:32:&amp;quot;user_reset_next_login_email_body&amp;quot;;s:0:&amp;quot;&amp;quot;;}&amp;#039;);&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: we&amp;#039;re *not* going to update DNS here. The live site will remain on hetzner2 until we finish replacing the theme on hetzner3 with one that&amp;#039;s not broken on the latest version of wordpress, php, etc)&lt;br /&gt;
&lt;br /&gt;
Finally, log into the new wordpress site (proceed with any db upgrades it walks you through), and update settings:&lt;br /&gt;
&lt;br /&gt;
# &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;ActivityPub&amp;quot; -&amp;gt; &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;Enable profiles by type&amp;quot; = &amp;quot;Blog profile only&amp;quot;&lt;br /&gt;
# &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;ActivityPub&amp;quot; -&amp;gt; &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;Blog-Profile&amp;quot; -&amp;gt; &amp;quot;Change profile ID&amp;quot; = &amp;quot;ose&amp;quot;&lt;br /&gt;
# &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;ActivityPub&amp;quot; -&amp;gt; &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;Blog-Profile&amp;quot; -&amp;gt; &amp;quot;Change Header Image&amp;quot; = Select TODO, cropped such the top just TODO&lt;br /&gt;
&lt;br /&gt;
# quick confirmation of &amp;#039;melapress-login-security&amp;#039;&lt;br /&gt;
# &amp;quot;Login Security&amp;quot; -&amp;gt; &amp;quot;Login Security Policies&amp;quot;&lt;br /&gt;
# Make sure password polices are enabled, and &amp;gt;20 chars are required&lt;br /&gt;
# &amp;quot;Login Security&amp;quot; -&amp;gt; &amp;quot;Login page hardening&amp;quot;&lt;br /&gt;
# Make sure &amp;quot;Login page URL&amp;quot; is set to &amp;quot;ose-hidden-login&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# &amp;quot;Settings&amp;quot; -&amp;gt; &amp;quot;Google Authenticator&amp;quot; -&amp;gt; Check every box under &amp;quot;Roles requiring Google Authenticator Enabled&amp;quot;&lt;br /&gt;
# Click &amp;quot;Save Changes&amp;quot; Button&lt;br /&gt;
&lt;br /&gt;
==Validation Steps==&lt;br /&gt;
&lt;br /&gt;
# Load the website in your web browser. Make sure it looks sane&lt;br /&gt;
# Login to the website&lt;br /&gt;
# Verify that the wordpress admin WUI states that the current version is v6.6.1&lt;br /&gt;
# Attempt to make some trivial change&lt;br /&gt;
# Confirm that the change is publicly visible on the website&lt;br /&gt;
# Revert the trivial change&lt;br /&gt;
# Confirm that the change has been reverted on the website&lt;br /&gt;
# search for &amp;#039;https://www.opensourceecology.org/@ose&amp;#039; and &amp;#039;ose@www.opensourceecology.org&amp;#039; on some mastodon site and see if it&amp;#039;s working&lt;br /&gt;
&lt;br /&gt;
==Revert Steps==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
# [[CHG-2018-02-05_migrate_osemain_to_hetzner2]] Last wordpress migration from hetzner1 to hetzner2&lt;br /&gt;
# [[CHG-2025-XX-XX_migrate_obi_to_hetzner3]]&lt;br /&gt;
# [[CHG-2024-07-26 yum update]] Last (possible) update to hetzner2&lt;br /&gt;
# [[CHG-2025-XX-XX_migrate_store_to_hetzner3]]&lt;br /&gt;
# [[CHG-2025-XX-XX_migrate_microfactory_to_hetzner3]]&lt;br /&gt;
# [[:Category: CHGs|List of other CHG &amp;quot;tickets&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[Category: CHGs]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
</feed>