Your Name 8 hónapja
szülő
commit
a4a8e86fbe
1 módosított fájl, 25 hozzáadás és 17 törlés
  1. 25 17
      README.md

+ 25 - 17
README.md

@@ -7,36 +7,42 @@ title = 'Kyleguy Inception'
 # README.md
 What could be more helpful than a guide more interested in a party trick than solving its stated purpose?  Probably any other guide right?  Our 'trick' is that this `README.md` is the same guide used to create the site that you are now reading.  In the same manner, this [repository](https://git.pebbleguy.com/kyle/kyleguy) also contains this file and describes how it was [built](#repositorySetup).  Alright.  Maybe it isn't that cool of a trick but I bet if you didn't think about it too much you'd think so.  We are showcasing static webpages.  More percisely a static site generator.
 
-Why are we doing this?  Static pages are what webservers were built for.  Dynamic pages are largely tools for the developer.  Our world is often a weird broken mess of wonderful things.  There is a project, [squid](https://squid-cache.org), that can magically increase one's internet speed.  The project has been around for nearly 30 years and it isn't magic, they just recognize that most the Internet is thoughtlessly dynamically generated.  A static page is what browsers and servers are designed to handle and they struggle when pages are complicated black boxes[^1].  I am being a little harsh, it isn't that pages are slapped together thoughtlessly, I mean to say that given infinite 'thought' resource only what needed be dynamic would be.
-
-[^1]: From the viewpoint of the webserver or browser software developer.
-
- - [x] 1. [Prerequisites](#prelude)
+ - [x] 1. [Introduction](#prelude)
+ - [x] 2. [Prerequisites](#prelude)
  - [x]   a. domain
  - [x]   b. webhost
  - [x]   c. tools
- - [x] 2. [Repository Setup](#repositorySetup)
- - [x]   a. [domain ](#configureRegistration)
+ - [x] 2. [Public Key Infrastructure](#pki)
+ - [x]   a. [putty](#putty)
+ - [x]   b. [keygen](#keygen)
+ - [x]   c. [pebbleguy.com](#installKey)
+ - [x] 3. [Repository Setup](#repositorySetup)
+ - [x]   a. [domain](#configureRegistration)
+
+## <a name="intro" id="intro"></a> Introduction
+Why are we doing this?  Static pages are what webservers were built for.  Dynamic pages are largely tools for the developer.  Our world is often a weird broken mess of wonderful things.  There is a project, [squid](https://squid-cache.org), that can magically increase one's internet speed.  The project has been around for nearly 30 years and it isn't magic, they just recognize that most the Internet is thoughtlessly dynamically generated.  A static page is what browsers and servers are designed to handle and they struggle when pages are complicated black boxes[^1].  I am being a little harsh, it isn't that pages are slapped together thoughtlessly, I mean to say that given infinite 'thought' resource only what needed be dynamic would be.
 
-## <a name="prelude" id="prelude"></a> Prerequisites
-We will be installing and maintaining a website therefore we need a domain[^2].  You will already need to have registered a domain for your use, this is not something this guide covers.  You should prioritize the [instructions](#configureRegistrarDns) early due to the inherent delays in DNS propagation.  You will also need access to Dan's server pebbleguy.com.  Pebbleguy.com will serve as a location to store our files and it will host our website.  Websites are forever changing it makes sense that a requirement would be that we need a place edit our site, we won't directly solve that problem but at times we will make an effort and will need both git and an interactive developer environment.  These three things are really all that we need, each might hide difficulties, but nothing we cannot handle.
+[^1]: From the viewpoint of the webserver or browser software developer.
 
 This guide was primarily written to support someone with a Windows computer.  Things may look and feel complex due to a bunch of tools, screenshots, button clicks and stuff but if you look at the [Debian](#brief) guide one can see we are't actually accomplishing that much.  We can also see that goals of this guide could be completed in a number of different environments.  There are several tools that fill in where Windows lacks features or where a solid Microsoft application is not yet developed.  These tools are pre-compiled for us and provided by their authors to Windows users at-large.  This guide would not be possible without their contributions.  I say this to clear up inevitable misunderstandings caused by us gluing softwares together and the shortcomings that we will witness.
 
+The guide tends to be a little on the verbose side, both becuase I lack clarity, also because I hope the additional details are useful.  As a warning, when you fall off a cliff the guide can't catch you, it's just going to watch your inevitible tumble down the mountainside.  I suppose what mean is one should expect a few scrapes and bruises, expect frustrations and mistakes.
+
+## <a name="prelude" id="prelude"></a> Prerequisites
+We will be installing and maintaining a website therefore we need a domain[^2].  You will already need to have registered a domain for your use, this is not something this guide covers.  You should prioritize the [DNS instructions](#configureRegistrarDns) early due to the inherent delays in DNS propagation.  You will also need access to Dan's server pebbleguy.com.  Pebbleguy.com will serve as a location to store our files and it will host our website.  Websites are forever changing it makes sense that a requirement would be that we need a place edit our site, we won't directly solve that problem but at times we will make an effort and will need both git and an interactive developer environment.  These three things are really all that we need, each might hide difficulties, but nothing we cannot handle.
+
 [^2]: This is just a name that people use to identify something.  Google owns many, for example: `www.google.com`, `google.com`, `gmail.com` are all domains.  On the internet one 'owns' a name by registering with Internet Corporation for Assigned Names and Numbers (ICANN).
 
-The [Debian](#brief) guide shows us a high level what we whish to accomplish with this guide, but we will need a few extra things.  We are going to assume that the Windows user already has `git` setup and they know how to use it.  They are going to need to connect to a remote server because Windows lacks several low-level API calls required by many reliable servers[^3].  The requirement to a remote server means one needs to be careful and run some commands on the local Windows host and some using `SecureShell` (SSH) on a remote host.  In addition files need to be synced between the local and remote side which means we need more tools and configs.  
+The [Debian](#brief) guide shows us a high level what we wish to accomplish with this guide, but we will need a few extra things.  We are going to assume that the Windows user already has `git` setup and they know how to use it.  They are going to need to connect to a remote server because Windows lacks several low-level API calls required by many reliable servers[^3].  The requirement to a remote server means one needs to be careful and run some commands on the local Windows host and some using `SecureShell` (SSH) on a remote host.  In addition files need to be synced between the local and remote side which means we need more tools and configs.  
 The installation of `Hugo` is the tiniest bit more complex[^4].
 
-The guide tends to be a little on the verbose side, both becuase I lack clarity, also because I hope the additional details are useful.  As a warning, when you fall off a cliff the guide can't catch you, it's just going to watch your inevitible tumble down the mountainside.  I suppose what mean is one should expect a few scrapes and bruises, expect frustrations and mistakes.
-
 [^3]: Idk is reliable is the right word.  Windows lacks the `epoll` API and does not support `select` or `poll`.  Furthermore access to the latter functions, it would rely on a third party [tools](https://www.cygwin.com/) to provide support.  That is what I actually mean by 'reliable'.  
 
 [^4]: Due to the differences between `Windows Powershell` the end-of-the-road 'powershell' that is installed on Windows, and `Powershell` the [actively developed](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows) but not installed on any version of Windows.  
 
-This is supposed to be prerequisites.
-If you follow this first some you may be save yourself from difficulties later.  To follow this guide we adhere to not storing easily exploitable private keys, especially in a hostile environment like Windows.  We need several tools to support Windows' lack of priorities in this arena.  When we encrypt keys some programs have difficulty with the additional overhead of prompting users to decrypt said keys, oh well.
+To follow this guide we adhere to not storing easily exploitable private keys, especially in a hostile environment like our target operating system.  We need several tools to support Microsoft's lack of priorities in this arena.  We will be encrypting[^5] our private keys to protect pebbleguy.com.  We will need access to Public Key Infrastructure ([PKI](#pki)) tools like those provided by `PuTTY`.  Lastly we will need access to a syncronization [tool](#rclone), we picked `Rclone` as a solution for the Windows environment.
 
+[^5]: When we encrypt keys some programs have difficulty with the additional overhead of prompting users to decrypt said keys.  This is one of those unfortunate things that could lead to misunderstandings and negative feelings.  Just remember that Microsoft has a hard time presenting a clean, reliable, and feature packed interface for **any** developers to work with.  Developers tend to stuggle with the available Microsoft interfaces and tend to not have anything left for developing their application.
 
 ## <a name="brief" id="brief"></a>A Debian guide shows the road ahead
 ```
@@ -61,14 +67,16 @@ git push -u origin master
 
 What we see is that the user made sure that they had a DNS record for `kyleguy.rome7.com` then installed `hugo`.  They pulled a copy of the `pebbleguy.com` repository so that they could execute the `certbot-wrapper.sh` to setup a webserver with a certificate signed by a certificate authority.  They then setup a webroot and added a theme to their static site.  Lastly they committed their site contained in a new `git` repository to `git.pebbleguy.com`.  
 
-**Windows does not have ssh-keygen, install it or a replacement:**
+## <a name="pki" id="pki"></a> Public Key Infrastructure
+
+<a name="putty" id="putty"></a> **Windows does not have ssh-keygen, install it or a replacement:**
 
 Install PuTTY by [Simon Tatham](https://www.chiark.greenend.org.uk/~sgtatham/putty/).  Besides the SSH Terminal `PuTTY` program there is also a ssh key generator program called `PuTTYgen`.
 
 ![download-and-install-putty](images/simon-tatham-putty.png)
 ---
 
-**Launch PuTTYgen and generate a key**
+<a name="keygen" id="keygen"></a> **Launch PuTTYgen and generate a key**
 
 ![launch-puttygen](images/launch-puttygen.png)
 
@@ -79,7 +87,7 @@ The last thing to do is save the private key somewhere.  I just put it on my Des
 ![generated-private-key](images/generated-private-key.png)
 ---
 
-**Copy the public key to pebbleguy.com**
+<a name="installKey" id="installKey"></a> **Copy the public key to pebbleguy.com**
 
 In the above screenshot you can see the public key.  I will copy this key to pebbleguy.com.  The private key stays on this local Windows computer on my desktop.  You can just copy the public key to your clipboard and add it to your user's `authorized keys` on pebbleguy.com.  When you sign into pebbleguy.com with SecureShell it looks at your authorized keys (a list of public keys) to determine what private keys could be used for authentication.  Connect to pebbleguy.com and run the below command.  Replace your public key.  You can put my public key if you want but I can already sign into my own user using my key so...  `echo '{{YOUR_PUBLIC_KEY}}' |tee -a ~/.ssh/authorized_keys`.