<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki42.maceys.net/index.php?action=history&amp;feed=atom&amp;title=Technical_Guides</id>
	<title>Technical Guides - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki42.maceys.net/index.php?action=history&amp;feed=atom&amp;title=Technical_Guides"/>
	<link rel="alternate" type="text/html" href="https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;action=history"/>
	<updated>2026-04-14T04:23:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=348&amp;oldid=prev</id>
		<title>Lynn: /* ADS-B Reception, Decoding &amp; Sharing */</title>
		<link rel="alternate" type="text/html" href="https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=348&amp;oldid=prev"/>
		<updated>2026-01-25T01:24:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;ADS-B Reception, Decoding &amp;amp; Sharing&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 01:24, 25 January 2026&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-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&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;In July 2023, I adopted the new and improved services of ultrafeeder.&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;In July 2023, I adopted the new and improved services of ultrafeeder.&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;[[File:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SAWbird&lt;/del&gt;+adsb.png|thumb|200px]]&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;[[File:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sawbird&lt;/ins&gt;+adsb.png|thumb|200px]]&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;= [[Working with Media]] =&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;= [[Working with Media]] =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki144:diff:1.41:old-347:rev-348:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Lynn</name></author>
	</entry>
	<entry>
		<id>https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=347&amp;oldid=prev</id>
		<title>Lynn: /* ADS-B Reception, Decoding &amp; Sharing */</title>
		<link rel="alternate" type="text/html" href="https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=347&amp;oldid=prev"/>
		<updated>2026-01-25T01:23:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;ADS-B Reception, Decoding &amp;amp; Sharing&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 01:23, 25 January 2026&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-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&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;In July 2023, I adopted the new and improved services of ultrafeeder.&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;In July 2023, I adopted the new and improved services of ultrafeeder.&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;[[File:SAWbird+.png|thumb|200px]]&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;[[File:SAWbird+&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;adsb&lt;/ins&gt;.png|thumb|200px]]&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;= [[Working with Media]] =&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;= [[Working with Media]] =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki144:diff:1.41:old-346:rev-347:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Lynn</name></author>
	</entry>
	<entry>
		<id>https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=346&amp;oldid=prev</id>
		<title>Lynn: /* ADS-B Reception, Decoding &amp; Sharing */</title>
		<link rel="alternate" type="text/html" href="https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=346&amp;oldid=prev"/>
		<updated>2026-01-25T01:22:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;ADS-B Reception, Decoding &amp;amp; Sharing&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 01:22, 25 January 2026&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-l22&quot;&gt;Line 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&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;[[File:SAWbird+.png|thumb|200px]]&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;[[File:SAWbird+.png|thumb|200px]]&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;{{Media|NestThermostatWelcomeGuide|pdf|Nest Thermostat}}&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;= [[Working with Media]] =&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;= [[Working with Media]] =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki144:diff:1.41:old-275:rev-346:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Lynn</name></author>
	</entry>
	<entry>
		<id>https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=275&amp;oldid=prev</id>
		<title>Lynn: Created page with &quot;{{PAGEBANNER:Technology-background-2.jpg}} = Introduction = While a lot of things seem obvious and once done do not need to be repeated, or in the category of &quot;Oh, I will remember that&quot; in reality it does need to be written down. It is way more simple to open a page of instructions that it is to try to remember how stuff went together.  The organization is pretty much outside in. It starts with the network gateways and outside services and then moves in to the servers th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki42.maceys.net/index.php?title=Technical_Guides&amp;diff=275&amp;oldid=prev"/>
		<updated>2026-01-24T03:00:13Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{PAGEBANNER:Technology-background-2.jpg}} = Introduction = While a lot of things seem obvious and once done do not need to be repeated, or in the category of &amp;quot;Oh, I will remember that&amp;quot; in reality it does need to be written down. It is way more simple to open a page of instructions that it is to try to remember how stuff went together.  The organization is pretty much outside in. It starts with the network gateways and outside services and then moves in to the servers th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{PAGEBANNER:Technology-background-2.jpg}}&lt;br /&gt;
= Introduction =&lt;br /&gt;
While a lot of things seem obvious and once done do not need to be repeated, or in the category of &amp;quot;Oh, I will remember that&amp;quot; in reality it does need to be written down. It is way more simple to open a page of instructions that it is to try to remember how stuff went together.&lt;br /&gt;
&lt;br /&gt;
The organization is pretty much outside in. It starts with the network gateways and outside services and then moves in to the servers that are either standalone or act as the host to various virtual machines, VMs, that provide services. The services are intended to be used by family and friends, but are largely a labor of love. After 45 years going to work and mastering technology, it was not possible to just walk away. I needed a hobby and the fact that it looks a lot like what was originally the job is not really an accident.&lt;br /&gt;
&lt;br /&gt;
= [[Infrastructure]] =&lt;br /&gt;
The hardware, base level software and network setup/configuration information is here. This does not include applications.&lt;br /&gt;
=[[Applications]]=&lt;br /&gt;
Applications make the web, and the world go &amp;#039;round. It is no different here. Collected here is information about the applications that are installed as well as the content environments that make them available.&lt;br /&gt;
===[[MediaWiki]]===&lt;br /&gt;
&lt;br /&gt;
= [[Need to Work On]] =&lt;br /&gt;
&lt;br /&gt;
=[[Raspberry Pi]]=&lt;br /&gt;
Raspberry Pi systems are becoming more of a thing with me. Current projects include the ADS-B receivers and Sky Camera.&lt;br /&gt;
&lt;br /&gt;
= [[ADS-B Reception, Decoding &amp;amp; Sharing]] =&lt;br /&gt;
Automatic Dependent Surveillance-Broadcast (ADS-B) is a surveillance technology in which an aircraft determines its position via satellite navigation and periodically broadcasts it, enabling it to be tracked. I have setup a local receiver that feeds several services. I started with Flightradar24 but have expanded to include others. In exchange for feeding the aggregation sites I receive complementary subscriptions to their services.&lt;br /&gt;
&lt;br /&gt;
In July 2023, I adopted the new and improved services of ultrafeeder.&lt;br /&gt;
&lt;br /&gt;
[[File:SAWbird+.png|thumb|200px]]&lt;br /&gt;
{{Media|NestThermostatWelcomeGuide|pdf|Nest Thermostat}}&lt;br /&gt;
&lt;br /&gt;
= [[Working with Media]] =&lt;br /&gt;
Ok, I am a digital pack rat. I have files that I will probably never use, view or listen to but, I find it hard to get rid of them. At least I got over it with real books and stuff.&lt;br /&gt;
&lt;br /&gt;
The files come from several places and then, ideally, go to their respective locations. Most require a little work to make them useable, which can be read as &amp;quot;findable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The primary classifications are:&lt;br /&gt;
&lt;br /&gt;
==[[Paper]]==&lt;br /&gt;
This includes books, documents, manuals, contents of files from old jobs, bills, letters, etc. Pretty much anything that takes of space but I don&amp;#039;t want to store. As a pack rat, I am uncomfortable throwing something away and thus destroying it permanently. Scanning and categorizing them digitally lets me do that even if I never plan to revisit the item again.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
I am just redoing the Linux box and recasting it as Promox with a docker swarm. This is partly so that I have a place to experiment without tearing up the running &amp;quot;production&amp;quot; media server.&lt;br /&gt;
&lt;br /&gt;
I found a fellow geek who calls himself the funkypenguin on Github. He has created a whole collection of docker recipes to create just about any reasonable application. As is often the case with tools like this, picking it up assumes information that is not necessarily obvious to everyone. This picks up at the beginning, where I started. [[GeekCookbook]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
This is a great too for organizing information. It also becomes a bit of a mess. Occasionally it is necessary to update the tool. The standard update cadence is a release every year an LTS, or Long Term Support, goes back two releases. I am currently at release 1.44.0 as of August 2025.&lt;br /&gt;
&lt;br /&gt;
The process is well described in the Mediawiki wiki. Some things to keep in mind. Over time, the LocalSettings.php file grows and changes. There are a few changes that are obviously required like the name of the wiki and DB info, but other changes are less obvious as are the reasons that they were changed or included originally. Getting the extensions up to date is a bit of a chore. &lt;br /&gt;
&lt;br /&gt;
There is one utility that is required for some of the extensions to work and that is composer. A full discussion of it is here:&lt;br /&gt;
&lt;br /&gt;
 [https://professional.wiki/en/articles/installing-mediawiki-extensions-with-composer Installing Mediawiki Extensions with Composer]&lt;br /&gt;
&lt;br /&gt;
A couple of problems appeared once I brought up the new release. The Maps extension stopped working. The AbuseFilter extension would crash when the Special Pages page was opened.&lt;br /&gt;
&lt;br /&gt;
The AbuseFilter fix is to add the following line to the &amp;quot;require&amp;quot; section in the composer.json file:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;wikimedia/equivset&amp;quot;: &amp;quot;^1.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
and running the following:&lt;br /&gt;
&lt;br /&gt;
 composer update&lt;br /&gt;
&lt;br /&gt;
This will force the appropriate library to be loaded.&lt;br /&gt;
&lt;br /&gt;
== Setting up the Hardware ==&lt;br /&gt;
The primary system is an Intel NUC 11 Extreme system &lt;br /&gt;
== Proxmox ==&lt;br /&gt;
Install Proxmox&lt;br /&gt;
===Install UPS Monitor ===&lt;br /&gt;
The APC UPS connects to the server with a USB connection. Proxmox will do a pass-thru of the connection to a VM. &lt;br /&gt;
&lt;br /&gt;
Plug the provided USB cable into the port on the UPS and the other end into a port on the server. Login to the Proxmox console and run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
lsusb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The output will look like this.&lt;br /&gt;
 root@proxmox:~# lsusb&lt;br /&gt;
 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
 Bus 003 Device 003: ID 152e:2571 LG (HLDS) GP08NU6W DVD-RW&lt;br /&gt;
 Bus 003 Device 010: ID 051d:0002 American Power Conversion Uninterruptible Power Supply&lt;br /&gt;
 Bus 003 Device 009: ID 046d:c52b Logitech, Inc. Unifying Receiver&lt;br /&gt;
 Bus 003 Device 002: ID 1a40:0801 Terminus Technology Inc. USB 2.0 Hub&lt;br /&gt;
 Bus 003 Device 005: ID 067b:2323 Prolific Technology, Inc. USB-Serial Controller&lt;br /&gt;
 Bus 003 Device 004: ID 8087:0032 Intel Corp.&lt;br /&gt;
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
&lt;br /&gt;
Bring up the Proxmox dashboard and select the VM that is planned to run the monitoring software. Click on Hardware and the Add button. Select Use USB Vendor/Device ID and then the &amp;quot;American Power&amp;quot; line and then click on Add.&lt;br /&gt;
&lt;br /&gt;
This link has a promising tool, if I can get it to work. https://github.com/Brandawg93/PeaNUT&lt;br /&gt;
&lt;br /&gt;
See also: https://www.reddit.com/r/selfhosted/comments/19dt58s/update_peanut_a_tiny_dashboard_for_network_ups/&lt;br /&gt;
&lt;br /&gt;
==[[ Basic Ubuntu Server Install]]==&lt;br /&gt;
The installation process for the Ubuntu virtual machines is pretty straight forward. The idea is to get a vanilla basic installation that can be built from. This should be templated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Rufus ===&lt;br /&gt;
Rufus was the Sun workstation that was on my desk at Informix for a number of years. Later, when I took my own Sun system into RTI (big mistake but that is not relevant to this), it was also named rufus.&lt;br /&gt;
&lt;br /&gt;
In the home server context, rufus is a bare bones Ubuntu server that runs some basic services. The following services are installed:&lt;br /&gt;
- Webmin&lt;br /&gt;
- DNS/Bind&lt;br /&gt;
- Minimal LAMP&lt;br /&gt;
====Install Webmin====&lt;br /&gt;
First install dependencies and then Webmin itself. Note that the version is baked into the command.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python3 unzip nodejs npm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The Webmin repository has not changed since 2011 so it is unlikely to soon.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;/etc/apt/sources.list &amp;lt;&amp;lt;EOF&lt;br /&gt;
deb http://download.webmin.com/download/repository sarge contrib&lt;br /&gt;
EOF&lt;br /&gt;
wget -q -O- http://www.webmin.com/jcameron-key.asc | apt-key add&lt;br /&gt;
apt update &lt;br /&gt;
apt install webmin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Digital Ocean has the magic to install a certificate. https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-20-04&lt;br /&gt;
&lt;br /&gt;
====Make Rufus a DNS Server====&lt;br /&gt;
====Install Unbound====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
apt install unbound &amp;lt;/dev/null&lt;br /&gt;
wget https://www.internic.net/domain/named.root -qO- | sudo tee /var/lib/unbound/root.hints&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Configure Unbound====&lt;br /&gt;
Highlights:&lt;br /&gt;
&lt;br /&gt;
 Listen only for queries from the local Pi-hole installation (on port 5335)&lt;br /&gt;
 Listen for both UDP and TCP requests&lt;br /&gt;
 Verify DNSSEC signatures, discarding BOGUS domains&lt;br /&gt;
 Apply a few security and privacy tricks&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
vi /etc/unbound/unbound.conf.d/pi-hole.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;Syntaxhighlight lang=php line&amp;gt;&lt;br /&gt;
server:&lt;br /&gt;
    # If no logfile is specified, syslog is used&lt;br /&gt;
    # logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
    verbosity: 0&lt;br /&gt;
&lt;br /&gt;
    interface: 127.0.0.1&lt;br /&gt;
    port: 5335&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # May be set to yes if you have IPv6 connectivity&lt;br /&gt;
    do-ip6: no&lt;br /&gt;
&lt;br /&gt;
    # You want to leave this to no unless you have *native* IPv6. With 6to4 and&lt;br /&gt;
    # Terredo tunnels your web browser should favor IPv4 for the same reasons&lt;br /&gt;
    prefer-ip6: no&lt;br /&gt;
&lt;br /&gt;
    # Use this only when you downloaded the list of primary root servers!&lt;br /&gt;
    # If you use the default dns-root-data package, unbound will find it automatically&lt;br /&gt;
    #root-hints: &amp;quot;/var/lib/unbound/root.hints&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Trust glue only if it is within the server&amp;#039;s authority&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Don&amp;#039;t use Capitalization randomization as it known to cause DNSSEC issues sometimes&lt;br /&gt;
    # see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details&lt;br /&gt;
    use-caps-for-id: no&lt;br /&gt;
&lt;br /&gt;
    # Reduce EDNS reassembly buffer size.&lt;br /&gt;
    # IP fragmentation is unreliable on the Internet today, and can cause&lt;br /&gt;
    # transmission failures when large DNS messages are sent via UDP. Even&lt;br /&gt;
    # when fragmentation does work, it may not be secure; it is theoretically&lt;br /&gt;
    # possible to spoof parts of a fragmented DNS message, without easy&lt;br /&gt;
    # detection at the receiving end. Recently, there was an excellent study&lt;br /&gt;
    # &amp;gt;&amp;gt;&amp;gt; Defragmenting DNS - Determining the optimal maximum UDP response size for DNS &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
    # by Axel Koolhaas, and Tjeerd Slokker (https://indico.dns-oarc.net/event/36/contributions/776/)&lt;br /&gt;
    # in collaboration with NLnet Labs explored DNS using real world data from the&lt;br /&gt;
    # the RIPE Atlas probes and the researchers suggested different values for&lt;br /&gt;
    # IPv4 and IPv6 and in different scenarios. They advise that servers should&lt;br /&gt;
    # be configured to limit DNS messages sent over UDP to a size that will not&lt;br /&gt;
    # trigger fragmentation on typical network links. DNS servers can switch&lt;br /&gt;
    # from UDP to TCP when a DNS response is too big to fit in this limited&lt;br /&gt;
    # buffer size. This value has also been suggested in DNS Flag Day 2020.&lt;br /&gt;
    edns-buffer-size: 1232&lt;br /&gt;
&lt;br /&gt;
    # Perform prefetching of close to expired message cache entries&lt;br /&gt;
    # This only applies to domains that have been frequently queried&lt;br /&gt;
    prefetch: yes&lt;br /&gt;
&lt;br /&gt;
    # One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1.&lt;br /&gt;
    num-threads: 1&lt;br /&gt;
&lt;br /&gt;
    # Ensure kernel buffer is large enough to not lose messages in traffic spikes&lt;br /&gt;
    so-rcvbuf: 1m&lt;br /&gt;
&lt;br /&gt;
    # Ensure privacy of local IP ranges&lt;br /&gt;
    private-address: 192.168.0.0/16&lt;br /&gt;
    private-address: 169.254.0.0/16&lt;br /&gt;
    private-address: 172.16.0.0/12&lt;br /&gt;
    private-address: 10.0.0.0/8&lt;br /&gt;
    private-address: fd00::/8&lt;br /&gt;
    private-address: fe80::/10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Start your local recursive server and test that it&amp;#039;s operational:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
service unbound restart&lt;br /&gt;
dig pi-hole.net @127.0.0.1 -p 5335&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The first query may be quite slow, but subsequent queries, also to other domains under the same TLD, should be fairly quick.&lt;br /&gt;
&lt;br /&gt;
You should also consider adding the following to signal FTL to adhere to this limit. Since PiHole is not installed yet, the mkdir is needed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
mkdir /etc/dnsmasq.d&lt;br /&gt;
cat &amp;gt; /etc/dnsmasq.d/99-edns.conf&amp;lt;&amp;lt;EOF&lt;br /&gt;
edns-packet-max=1232&lt;br /&gt;
EOF&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Install PiHole====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
curl -sSL https://install.pi-hole.net | bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Need to do a little work on what to respond on the screens. Most are default. &lt;br /&gt;
&lt;br /&gt;
Use &amp;quot;Custom&amp;#039; for the upstream and define it as 127.0.0.1:5335 per the Unbound instructions.&lt;br /&gt;
&lt;br /&gt;
Edit the /etc/lighttpd/lighttpd.conf file to change the port from 80 to 1010. This is to make way for a webserver.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
service lighttpd restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Finally replace the symlink with a file pointing to ourself as the nameserver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
rm /etc/resolv,conf&lt;br /&gt;
cat &amp;gt; /etc/resolv.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
nameserver 127.0.0.1&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configure PiHole====&lt;br /&gt;
Set the pihole admin password:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
pihole -a -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Finally, configure Pi-hole to use your recursive DNS server by specifying 127.0.0.1#5335 as the Custom DNS (IPv4):&lt;br /&gt;
[[File:RecursiveResolver.png]]&lt;br /&gt;
&lt;br /&gt;
After installation, the DNS server information is:&lt;br /&gt;
 You may now configure your devices to use the Pi-hole as their DNS server&lt;br /&gt;
  [i] Pi-hole DNS (IPv4): 192.168.86.2&lt;br /&gt;
  [i] Pi-hole DNS (IPv6): 2601:200:4400:a2:8ab0:dae6:da8f:570e&lt;br /&gt;
  [i] If you have not done so already, the above IP should be set to static.&lt;br /&gt;
&lt;br /&gt;
The IPV6 address is currently not set on the rufus interfaces.&lt;br /&gt;
&lt;br /&gt;
{{Todo | Set the address and change docs to match}}&lt;br /&gt;
&lt;br /&gt;
After installation, change the port in /etc/lighttpd/lighttpd.conf from 80 to 1010&lt;br /&gt;
&lt;br /&gt;
The pi.hole password is KPYoWgGC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Install Caddy====&lt;br /&gt;
This procedure aims to simplify running custom caddy binaries while keeping support files from the caddy package.&lt;br /&gt;
&lt;br /&gt;
This procedure allows users to take advantage of the default configuration, systemd service files and bash-completion from the official package.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
&lt;br /&gt;
Install caddy package according to these instructions&lt;br /&gt;
&lt;br /&gt;
=====Install caddy package=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl &amp;lt; /dev/null&lt;br /&gt;
curl -1sLf &amp;#039;https://dl.cloudsmith.io/public/caddy/stable/gpg.key&amp;#039; | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg&lt;br /&gt;
curl -1sLf &amp;#039;https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt&amp;#039; | tee /etc/apt/sources.list.d/caddy-stable.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install caddy &amp;lt;/dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second part is to configure, download and install the appropriate binary with Cloudflare installed. Since there are numerous modules that can be included and most are not mutually exclusive, Caddy has provided a download page that allows the selection of modules to include and then builds the appropriate binary that is then downloaded and installed.&lt;br /&gt;
&lt;br /&gt;
On the Proxmox console for the appropriate VM, open the Firefox browser&lt;br /&gt;
to: https://caddyserver.com/download&lt;br /&gt;
&lt;br /&gt;
Select the appropriate architecture. The normal here is Linux amd64 but arm64 would be appropriate for a Raspberry Pi installation.&lt;br /&gt;
The only module that is currently added is caddy-dns/cloudflare. Click to select and then click on Download. It will be placed in the Downloads folder of the underlying user. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell line&amp;gt;&lt;br /&gt;
cd /home/${SUDO_USER}/Downloads&lt;br /&gt;
dpkg-divert --divert /usr/bin/caddy.default --rename /usr/bin/caddy&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy.custom&lt;br /&gt;
chown root:root /usr/bin/caddy.custom&lt;br /&gt;
chmod 755 /usr/bin/caddy.custom&lt;br /&gt;
update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.default 10&lt;br /&gt;
update-alternatives --install /usr/bin/caddy caddy /usr/bin/caddy.custom 50&lt;br /&gt;
systemctl restart caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;dpkg-divert&amp;#039;&amp;#039;&amp;#039; will move /usr/bin/caddy binary to /usr/bin/caddy.default and put a diversion in place in case any package wants to install a file to this location.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update-alternatives&amp;#039;&amp;#039;&amp;#039; will create a symlink from the desired caddy binary to /usr/bin/caddy&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;systemctl restart caddy&amp;#039;&amp;#039;&amp;#039; will shut down the default version of the Caddy server and start the custom one.&lt;br /&gt;
&lt;br /&gt;
You can change between the custom and default caddy binaries by executing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
update-alternatives --config caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and following the on screen information, then restarting the Caddy service.&lt;br /&gt;
&lt;br /&gt;
This information was taken and adapted from: https://caddyserver.com/docs/build. The procedure here skips the build in favor of configuring and downloading the custom package.&lt;br /&gt;
&lt;br /&gt;
====Install Apache ====&lt;br /&gt;
The &amp;#039;A&amp;#039; in the LAMP stack needs to be installed since we have the &amp;#039;L&amp;#039; covered. Then add the php for &amp;#039;P&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
apt install apache2 &amp;lt; /dev/null&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
apt-get install php php-apcu php-intl php-mbstring php-xml php-mysql php-calendar mariadb-server apache2 -y &amp;lt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test by connecting to the system with a web browser. Test php with t he following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
php --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Add MariaDB to complete the install====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
apt install mariadb-server mariadb-client &amp;lt; /dev/null&lt;br /&gt;
systemctl status mariadb&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Now, allow root to login to the phpmyadmin console:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
mysql -u root&lt;br /&gt;
[mysql] use mysql;&lt;br /&gt;
[mysql] update user set plugin=&amp;#039;&amp;#039; where User=&amp;#039;root&amp;#039;;&lt;br /&gt;
[mysql] flush privileges;&lt;br /&gt;
[mysql] \q&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Install Phpmyadmin====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo apt install phpmyadmin php-mbstring php-mbstring&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The install script will offer a choice of web servers but none will be selected. Chose apache2. Follow this with a little tweak and restart apache.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo phpenmod mbstring&lt;br /&gt;
sudo systemctl restart apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Chico1===&lt;br /&gt;
Chico1 is a VM running on Proxmox. &lt;br /&gt;
====Creating the VM====&lt;br /&gt;
Open the Proxmox dashboard at http://proxmox:8006.&lt;br /&gt;
&lt;br /&gt;
If there is a previous version you will probably stop it and recreate it.&lt;br /&gt;
&lt;br /&gt;
The current configuration is: CPU - Host, 4 processor, 8GB RAM 500GB disk&lt;br /&gt;
&lt;br /&gt;
Set the network interface MAC address to: d2:ef:18:60:99:5e. Alternatively, take down and replace the port mapping of the router to get the new MAC Address.&lt;br /&gt;
&lt;br /&gt;
Pull the OS from the local repository. Currently Ubuntu 22.04.&lt;br /&gt;
&lt;br /&gt;
===Install and Configure Docker Environment (Replaced with Auto-Traefik)===&lt;br /&gt;
The below instructions to install docker have been replaced by using the Auto-Traefik utility. [https://www.smarthomebeginner.com/auto-traefik/ Auto-Traefik]&lt;br /&gt;
&lt;br /&gt;
Use the following to install the latest docker and docker-compose:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release&lt;br /&gt;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&amp;quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y install docker-ce&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Check here: [https://github.com/docker/compose/releases Docker-compose Releases] and adjust the command accordingly.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo curl -L https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose&lt;br /&gt;
sudo chmod +x /usr/local/bin/docker-compose&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Install the Linux ACL package&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo apt -y install acl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Create and set permissions for the top level docker folder.-s /usr/bin/bash&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo groupdel docker&lt;br /&gt;
sudo useradd -d /home/docker -m docker -u 1000 -U -c Docker -G &amp;quot;adm,sudo&amp;quot;&lt;br /&gt;
sudo mkdir ~docker&lt;br /&gt;
sudo chmod 775 ~docker&lt;br /&gt;
sudo setfacl -Rdm g:docker:rwx ~docker&lt;br /&gt;
sudo setfacl -Rm g:docker:rwx ~docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The above commands provides access to the contents of the docker root folder (both existing and new stuff) to the docker group. This is a pretty liberal set of permissions but this is not a production server.&lt;br /&gt;
&lt;br /&gt;
===Install additional support tools===&lt;br /&gt;
&lt;br /&gt;
The ctop utility provides a top like display for docker containers.&lt;br /&gt;
&lt;br /&gt;
Check here for latest: [https://github.com/bcicen/ctop Github: ctop].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line&amp;gt;&lt;br /&gt;
sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop&lt;br /&gt;
sudo chmod +x /usr/local/bin/ctop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===RDP-SSH over Cloudflare tunnel===&lt;br /&gt;
https://github.com/blibdoolpoolp/Cloudflared-RDP-Tutorial-Free/blob/main/config.yml&lt;br /&gt;
===YAMS===&lt;br /&gt;
https://yams.media/&lt;br /&gt;
===Proxmox Helper Scripts===&lt;br /&gt;
https://tteck.github.io/Proxmox/&lt;br /&gt;
&lt;br /&gt;
== Books and Magazines ==&lt;br /&gt;
Books and magazines are catalogued in the Calibre application. Most come in from the internet in one way or the other.&lt;br /&gt;
&lt;br /&gt;
===Books===&lt;br /&gt;
Incoming books are best processed in batches. One of the distributors tends to send the out in groups of 40. This works pretty well.&lt;br /&gt;
&lt;br /&gt;
Open the Calibre app and load the Calibre-tech-work library. This will hopefully be empty. Open the folder with the collection to be processed. Select all and drop them into the work pane of Calibre.&lt;br /&gt;
&lt;br /&gt;
Select off of the titles and process then with the &amp;quot;Extract ISBN&amp;quot; tool. Apply the changes when they it returns. Then do a Download Metadata and Covers on them. Go get coffee, that takes quite a while. When it returns, apply the updates.&lt;br /&gt;
&lt;br /&gt;
Check the results. Ones that are clearly complete can be moved to the permanent libraries. There will be some titles that didn&amp;#039;t process because the title/author could not be found. For many this can be edited and the metadata can be downloaded for each title.&lt;br /&gt;
&lt;br /&gt;
Missing covers can generally be extracted. For PDF files, open with the Foxit PDF reader, click on Home-&amp;gt;Select and then click on the cover page. Go to Calibre and paste the selection into the cove. For E-pubs, open the title and use the Snagit app to get the image. It will open, Snagit with the selection. Click on copy all to clipboard and then over to Calibre and paste it into the cover.&lt;br /&gt;
&lt;br /&gt;
Titles go to the following libraries by type:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Titles go here&lt;br /&gt;
|-&lt;br /&gt;
! Genre !! Library&lt;br /&gt;
|-&lt;br /&gt;
| General fiction || Calibre-Fiction&lt;br /&gt;
|-&lt;br /&gt;
| General Non-fiction || Calibre-library-NF&lt;br /&gt;
|-&lt;br /&gt;
| Technical non-fiction || Calibre-library-NF-Tech&lt;br /&gt;
|-&lt;br /&gt;
| Cookbooks || Calibre-Cookbooks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Magazines===&lt;br /&gt;
Handled much like books but, they generally need more work with less automation. &lt;br /&gt;
&lt;br /&gt;
After importing the titles, edit the fields as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Field Edition&lt;br /&gt;
|-&lt;br /&gt;
! Field !! Format&lt;br /&gt;
|-&lt;br /&gt;
| Title || Magazine Name - yyyy/mm/dd&lt;br /&gt;
|-&lt;br /&gt;
| Author || Publisher&lt;br /&gt;
|-&lt;br /&gt;
| Series || Magazine Name&lt;br /&gt;
|-&lt;br /&gt;
| Number || Issue Number or yyyy.mm&lt;br /&gt;
|-&lt;br /&gt;
| Publisher || Publisher&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Magazine name format:&lt;br /&gt;
&lt;br /&gt;
For quarterlies:&lt;br /&gt;
&lt;br /&gt;
 12  1  2&lt;br /&gt;
  3  4  5&lt;br /&gt;
  6  7  8&lt;br /&gt;
  9  10 11&lt;br /&gt;
&lt;br /&gt;
== Movies ==&lt;br /&gt;
These are probably the easiest and quickest to handle. They come from the web, don&amp;#039;t ask where, or ripped from DVDs that we used to buy. They end up in the Plex movie library. The processing involves naming them according to the rules and downloading subtitles when appropriate. The main tool for this is [[FileBot]]. While it can be viewed as redundant, movies on the streaming services tend to come and go. Their catalogs also tend to lean toward recent releases and ones that are popular. I odd film that was interesting as a kid is more likely to not be available.&lt;br /&gt;
&lt;br /&gt;
== TV Shows ==&lt;br /&gt;
== Software ==&lt;br /&gt;
Software comes in from several places. It exists in several states.&lt;br /&gt;
=== Licensed ===&lt;br /&gt;
This includes software that was explicitly purchased or came attached to purchased hardware&lt;br /&gt;
=== Open Source ===&lt;br /&gt;
This includes most everything related to Linux and its installations.&lt;br /&gt;
=== Other ===&lt;br /&gt;
Catch all of other software with mixed licensing.&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Not much to say here. Software gets installed and removed in the general course of the computer experience.&lt;br /&gt;
=== Locations ===&lt;br /&gt;
&lt;br /&gt;
=On the Road to Elsewhere=&lt;br /&gt;
==Streaming Services==&lt;br /&gt;
These are to enhance our viewing pleasure. Hard to believe that when we got our first TV in the 1950s, there were two national networks and some local stations. If you wanted to watch TV at 3AM, you were totally out of luck. &lt;br /&gt;
&lt;br /&gt;
In general, the services can be reached on computers via the included link. The TVs, TiVos and phones and pads have apps. The account information is kept separately, just ask.&lt;br /&gt;
===Apple TV===&lt;br /&gt;
===Discovery+===&lt;br /&gt;
We have the ad free version. Go to [https://discoveryplus.com Discovery+] and sign in or connect use the Discovery+ app on TVs and phone. Discovery+ and HBOMax have announced that they will be merging now that they are both owned by Warner.&lt;br /&gt;
===Disney===&lt;br /&gt;
===HBOMax===&lt;br /&gt;
HBOMax is made available through AT&amp;amp; Wireless phone subscriptions. It can be accessed from phone, TV or computer. On a computer, go to [https://hbomax.com HBO Max]&lt;br /&gt;
===Hulu===&lt;br /&gt;
===Plex===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plex operates as both a local server on the Qnap box and as a streaming service from [http://plex.tv plex.tv].&lt;br /&gt;
&lt;br /&gt;
The I have a Lifetime Plex Pass account for the streaming service on lynnmacey@gmail.com.&lt;br /&gt;
&lt;br /&gt;
The Plex server application running on the Qnap is retrieved from the plex.tv site and installed. See [[updates]].&lt;/div&gt;</summary>
		<author><name>Lynn</name></author>
	</entry>
</feed>