diff --git a/404.html b/404.html index 4a7106e8..77de6167 100644 --- a/404.html +++ b/404.html @@ -17,17 +17,17 @@ 404 Page not found :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/index.html b/index.html index 3e44a060..7b475abb 100644 --- a/index.html +++ b/index.html @@ -29,17 +29,17 @@ book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/index.search.js b/index.search.js index b073f71f..75e40f87 100644 --- a/index.search.js +++ b/index.search.js @@ -105,8 +105,8 @@ var relearn_search_index = [ }, { "breadcrumb": "book.rymcg.tech \u003e Portable Docker", - "content": " Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami ", - "description": " Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami ", + "content": " Tip If you are not using a Raspberry Pi, you can skip to the Install d.rymcg.tech section\nIndex Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami ", + "description": " Tip If you are not using a Raspberry Pi, you can skip to the Install d.rymcg.tech section\nIndex Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami ", "tags": [], "title": "Set up Raspberry Pi", "uri": "/portable-docker/set-up-raspberry-pi/index.html" @@ -209,7 +209,7 @@ var relearn_search_index = [ }, { "breadcrumb": "book.rymcg.tech \u003e Portable Docker \u003e Set up Raspberry Pi", - "content": "The installation process for Docker and d.rymcg.tech can be automated by the following Bash script.\nInfo Before running the command below, you should edit the environment variables defined at the top:\nROOT_DOMAIN needs to be a dedicated sub-domain name assigned to the Pi (e.g., pi.example.com).\nALIASES is already preset with the aliases you’ll be needing for this book: pi and sentry. You may customize the names here if you wish.\nRun this on your Raspberry Pi ROOT_DOMAIN=pi.example.com \\ ALIASES=pi,sentry \\ bash \u003c(curl -L https://github.com/EnigmaCurry/d.rymcg.tech/blob/master/_scripts/bootstrap_sworkstation.sh?raw=true) Once the script has finished, log out from the Pi and log back in. You are done, and you may proceed to the next section (Install Traefik).\nTip If you don’t like running automatic scripts, you can follow the manual installation steps listed in the appendix.\nIf you are wary of running curlbombs (you should be) you may want to download and review the script (bootstrap_sworkstation.sh) and run it manually:\n## Download and set executable: curl -LO https://github.com/EnigmaCurry/d.rymcg.tech/blob/master/_scripts/bootstrap_sworkstation.sh?raw=true chmod a+x ./bootstrap_sworkstation.sh ## Set the config variables as exported: export ROOT_DOMAIN=pi.example.com export ALIASES=pi,sentry ## Examine the script before running it. ## Run it: ./bootstrap_sworkstation.shThis script is designed only to be run on a freshly installed Debian-derived system (including Raspberry Pi OS). There is another script for machines running Fedora.\nScript configuration Here are the environment variables that the bootstrap script supports:\nALIASES Throughout this book, a short command alias is used to control the d.rymcg.tech Docker context of the local host (named pi) and another alias for the remote sentry (named sentry), but you can rename these aliases to any names you like. ALIASES is a comma separated list of alias names to create: pi,sentry.\nROOT_DOMAIN ROOT_DOMAIN should be a unique dedicated sub-domain assigned to your Docker server (e.g., pi.example.com). This becomes the default root domain for every app you install (e.g., whoami.pi.example.com.) The default name is only a suggestion and each app can set whatever domain name they want.\nROOT_DOMAIN Having a default domain name for each app, one that is unique, determinstic, and identifiable, will greatly simplify the creation of DNS records and TLS certificates. With the use of wildcard domain records, e.g., *.pi.example.com, you only have to setup DNS records once per Docker host, even if you install more apps later. In this book, pi is just a short identifier to make these URLs unique to a particular Docker host. The actual interstitial name can be whatever you like.\nSSH_HOST (optional) Tip A “sworkstation” is defined as a hybrid workstation and server, so by definition, the sworkstation should be controlling itself. Therfore, the default SSH_HOST is localhost. You don’t need to change this unless you are making a pure workstation that would be remote controlling another pure server.\nCONTEXT (optional) Tip The default Docker context will be created with the same name as SSH_HOST (localhost). You don’t need to set this unless you need to rename the Docker context for some reason.\nSYSBOX (optional) If you need to grant special privileges to your containers, you may do so with Sysbox:\nTip This is only required for some special cases, e.g., rootless Docker-in-Docker, Faasd, or any image that runs systemd. Set SYSBOX=true to enable it.\nYou may also export SYSBOX_URL to point to a particular release package URL to install.", + "content": "The installation process for Docker and d.rymcg.tech can be automated by the following Bash script.\nInfo Before running the command below, you should edit the environment variables defined at the top:\nROOT_DOMAIN needs to be a dedicated sub-domain name assigned to the Pi (e.g., pi.example.com).\nALIASES is already preset with the aliases you’ll be needing for this book: pi and sentry. You may customize the names here if you wish.\nRun this on your Raspberry Pi ROOT_DOMAIN=pi.example.com \\ ALIASES=pi,sentry \\ bash \u003c(curl -L \\ https://github.com/EnigmaCurry/d.rymcg.tech/blob/master/_scripts/bootstrap_sworkstation.sh?raw=true) Once the script has finished, log out from the Pi and log back in. You are done, and you may proceed to the next section (Install Traefik).\nTip If you don’t like running automatic scripts, you can follow the manual installation steps listed in the appendix.\nIf you are wary of running curlbombs (you should be) you may want to download and review the script (bootstrap_sworkstation.sh) and run it manually:\n## Download and set executable: curl -LO https://github.com/EnigmaCurry/d.rymcg.tech/blob/master/_scripts/bootstrap_sworkstation.sh?raw=true chmod a+x ./bootstrap_sworkstation.sh ## Set the config variables as exported: export ROOT_DOMAIN=pi.example.com export ALIASES=pi,sentry ## Examine the script before running it. ## Run it: ./bootstrap_sworkstation.shThis script is designed only to be run on a freshly installed Debian-derived system (including Raspberry Pi OS). There is another script for machines running Fedora.\nScript configuration Here are the environment variables that the bootstrap script supports:\nALIASES Throughout this book, a short command alias is used to control the d.rymcg.tech Docker context of the local host (named pi) and another alias for the remote sentry (named sentry), but you can rename these aliases to any names you like. ALIASES is a comma separated list of alias names to create: pi,sentry.\nROOT_DOMAIN ROOT_DOMAIN should be a unique dedicated sub-domain assigned to your Docker server (e.g., pi.example.com). This becomes the default root domain for every app you install (e.g., whoami.pi.example.com.) The default name is only a suggestion and each app can set whatever domain name they want.\nROOT_DOMAIN Having a default domain name for each app, one that is unique, determinstic, and identifiable, will greatly simplify the creation of DNS records and TLS certificates. With the use of wildcard domain records, e.g., *.pi.example.com, you only have to setup DNS records once per Docker host, even if you install more apps later. In this book, pi is just a short identifier to make these URLs unique to a particular Docker host. The actual interstitial name can be whatever you like.\nSSH_HOST (optional) Tip A “sworkstation” is defined as a hybrid workstation and server, so by definition, the sworkstation should be controlling itself. Therfore, the default SSH_HOST is localhost. You don’t need to change this unless you are making a pure workstation that would be remote controlling another pure server.\nCONTEXT (optional) Tip The default Docker context will be created with the same name as SSH_HOST (localhost). You don’t need to set this unless you need to rename the Docker context for some reason.\nSYSBOX (optional) If you need to grant special privileges to your containers, you may do so with Sysbox:\nTip This is only required for some special cases, e.g., rootless Docker-in-Docker, Faasd, or any image that runs systemd. Set SYSBOX=true to enable it.\nYou may also export SYSBOX_URL to point to a particular release package URL to install.", "description": "The installation process for Docker and d.rymcg.tech can be automated by the following Bash script.\nInfo Before running the command below, you should edit the environment variables defined at the top:\nROOT_DOMAIN needs to be a dedicated sub-domain name assigned to the Pi (e.g., pi.example.com).\nALIASES is already preset with the aliases you’ll be needing for this book: pi and sentry. You may customize the names here if you wish.", "tags": [], "title": "Install d.rymcg.tech", @@ -273,8 +273,8 @@ var relearn_search_index = [ }, { "breadcrumb": "book.rymcg.tech \u003e Portable Docker \u003e Set up sentry Droplet", - "content": "You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name):\ngraph LR; Workstation[Personal Workstation] --\u003e|SSH| RaspberryPi[Raspberry Pi] RaspberryPi --\u003e|SSH| Sentry[Sentry] Append to the SSH config on the Pi Run this on the Raspberry Pi cat \u003c\u003cEOF \u003e\u003e ~/.ssh/config Host sentry User root Hostname sentry.example.com ControlMaster auto ControlPersist yes ControlPath /tmp/ssh-%u-%r@%h:%p EOF Tip The Hostname value should point to the same name you created the DNS entry for the sentry.\nTest the connection from the Pi to the sentry Run this on the Raspberry Pi ssh sentry whoami The first time you connect, you must confirm the host fingerprint (type yes):\n(stdout) The authenticity of host 'sentry' can't be established. ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Are you sure you want to continue connecting (yes/no/[fingerprint])? yes On the final line, it will print the output of the command you requested, which should print the username root :\n(stdout) root Create a new Docker context for the sentry Run this on the Raspberry Pi d context new (stdout) ? This command can help create a new SSH config and Docker context. Proceed? (Y/n) y ? You must specify the SSH config entry to use \u003e I already have an SSH host entry in ~/.ssh/config that I want to use I want to make a new SSH host entry in ~/.ssh/config ? Choose an existing SSH Host config pi \u003e sentry \u003e Do you want to switch to the new sentry context now? Yes Install Docker on the sentry Run this on the Raspberry Pi sentry install-docker (stdout) ? This will install Docker on the host of your remote Docker context.. Proceed? Yes Test the docker context is functional Run this on the Raspberry Pi d tmp-context sentry docker info | grep Context (stdout) Context: sentry Switch between Docker contexts You should now have two configured Docker contexts on your Pi:\npi sentry You can switch between these two contexts using d context. The currently selected context specifies which Docker server is currently being operated on.", - "description": "You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name):\ngraph LR; Workstation[Personal Workstation] --\u003e|SSH| RaspberryPi[Raspberry Pi] RaspberryPi --\u003e|SSH| Sentry[Sentry] Append to the SSH config on the Pi Run this on the Raspberry Pi cat \u003c\u003cEOF \u003e\u003e ~/.ssh/config Host sentry User root Hostname sentry.example.com ControlMaster auto ControlPersist yes ControlPath /tmp/ssh-%u-%r@%h:%p EOF Tip The Hostname value should point to the same name you created the DNS entry for the sentry.", + "content": "You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name):\n--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] --\u003e|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi --\u003e|SSH| Sentry[Sentry] RaspberryPi .-\u003e|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts. In this example, the Raspberry Pi is the Docker admin who controls all other Docker servers, but your Personal Workstation or even the sentry could fulfill this role instead.\nAppend to the SSH config on the Pi Run this on the Raspberry Pi cat \u003c\u003cEOF \u003e\u003e ~/.ssh/config Host sentry User root Hostname sentry.example.com ControlMaster auto ControlPersist yes ControlPath /tmp/ssh-%u-%r@%h:%p EOF Tip The Hostname value should point to the same name you created the DNS entry for the sentry.\nTest the connection from the Pi to the sentry Run this on the Raspberry Pi ssh sentry whoami The first time you connect, you must confirm the host fingerprint (type yes):\n(stdout) The authenticity of host 'sentry' can't be established. ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Are you sure you want to continue connecting (yes/no/[fingerprint])? yes On the final line, it will print the output of the command you requested, which should print the username root :\n(stdout) root Create a new Docker context for the sentry Run this on the Raspberry Pi d context new (stdout) ? This command can help create a new SSH config and Docker context. Proceed? (Y/n) y ? You must specify the SSH config entry to use \u003e I already have an SSH host entry in ~/.ssh/config that I want to use I want to make a new SSH host entry in ~/.ssh/config ? Choose an existing SSH Host config pi \u003e sentry \u003e Do you want to switch to the new sentry context now? Yes Install Docker on the sentry Run this on the Raspberry Pi sentry install-docker (stdout) ? This will install Docker on the host of your remote Docker context.. Proceed? Yes Test the docker context is functional Run this on the Raspberry Pi d tmp-context sentry docker info | grep Context (stdout) Context: sentry Switch between Docker contexts You should now have two configured Docker contexts on your Pi:\npi sentry You can switch between these two contexts using d context. The currently selected context specifies which Docker server is currently being operated on.", + "description": "You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name):\n--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] --\u003e|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi --\u003e|SSH| Sentry[Sentry] RaspberryPi .-\u003e|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts.", "tags": [], "title": "Configure the sentry context on the Pi", "uri": "/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html" @@ -313,7 +313,7 @@ var relearn_search_index = [ }, { "breadcrumb": "book.rymcg.tech \u003e Portable Docker \u003e Configure WireGuard VPN", - "content": " Reconfigure Traefik to enable WireGuard client Run this on the Raspberry Pi pi make traefik config (stdout) ? Traefik: \u003e Config Install (make install) Admin Exit (ESC) ? Traefik Configuration: ^ Entrypoints (including dashboard) TLS certificates and authorities Middleware (including sentry auth) \u003e Advanced Routing (Layer 7 / Layer 4 / WireGuard) Error page template Logging level Access logs ? Traefik routes Configure layer 7 TLS proxy Configure layer 4 TCP/UDP proxy \u003e Configure wireguard VPN ? Should this Traefik instance connect to a wireguard VPN? No, Traefik should use the host network directly. Yes, and this Traefik instance should start the wireguard server. \u003e Yes, but this Traefik instance needs credentials to connect to an outside VPN. Info There is an important choice to make regarding how you want the network of the Pi to be setup:\n(stdout) ? Should Traefik bind itself exclusively to the VPN interface? No, Traefik should work on all host interfaces (including the VPN). \u003e Yes, Traefik should only listen on the VPN interface. Do you still want to be able to access the Pi directly from your LAN, without needing to go through the sentry? Perhaps you won’t always have internet access and you still want to access these services? If so, choose No. The more secure option is to choose Yes and always go through the sentry. This will block access between the Pi and your LAN. Regardless of this choice, the SSH service will be provided to the LAN, so you can change this setting at any time.\nFinish entering your wireguard client settings by copying them from the temporary buffer you saved them in:\n(stdout) TRAEFIK_VPN_CLIENT_INTERFACE_ADDRESS: Enter the wireguard client Interface Address (e.g., 10.13.16.2) : 10.13.16.2 TRAEFIK_VPN_CLIENT_INTERFACE_PRIVATE_KEY: Enter the wireguard PrivateKey (ends with =) : 2E1vQHCS5JuaoRrt21GO0bYVrafOhplrGNFqoFBivEY= TRAEFIK_VPN_CLIENT_INTERFACE_LISTEN_PORT: Enter the wireguard listen port (e.g., 51820) : 51820 TRAEFIK_VPN_CLIENT_PEER_PUBLIC_KEY: Enter the Peer PublicKey (ends with =) : AZiNh/5sk71QTy6Rk0ygzIUsSGAX8/s3EeGN6lT9oj0= TRAEFIK_VPN_CLIENT_PEER_PRESHARED_KEY: Enter the Peer PresharedKey (ends with =) : tEIW8FuxR6I+Qu79bORatbD+JgNPeigNvc9V18f7to8= TRAEFIK_VPN_CLIENT_PEER_ENDPOINT: Enter the Peer Endpoint (host:port) : sentry.example.com:51820 TRAEFIK_VPN_CLIENT_PEER_ALLOWED_IPS: Enter the Peer AllowedIPs (e.g., 10.13.16.1/32) : 10.13.16.1/32 Reinstall Traefik Press ESC twice to go back to the main menu, then re-install:\n(stdout) ? Traefik: Config \u003e Install (make install) Admin Exit (ESC) Once reinstalled, press ESC to quit the config tool.\nTest VPN connectivity Check the logs:\nRun this on the Raspberry Pi pi make traefik logs service=wireguard-client (stdout) wireguard-client-1 | 2024-09-28T08:42:09.445201647Z **** All tunnels are now active **** Enter the wireguard client shell to test networking parameters:\nRun this on the Raspberry Pi pi make traefik shell service=wireguard-client Show the connected wireguard peers:\nRun this in the WireGuard Client shell wg Look for the last handshake time The output of wg should show the peer and the latest handshake time, for example:\nlatest handshake: 45 seconds agoIf you do not see a handshake time, then there is some kind of problem connecting to the WireGuard server that you need to resolve.\nPing the WireGuard server (10.13.16.1):\nRun this in the WireGuard Client shell ping -c3 10.13.16.1 When you are done using the shell press Ctrl-D or type exit to quit.\nCheck that whoami is available publicly In the last chapter you created a layer 7 route for the URL https://whoami.pi.example.com. Now that your wireguard connection is active on both ends, it should be publicly accessible. Test the URL in your personal web browser.\nNext steps Set up public SSH. Install core services. Install apps. ", + "content": " Reconfigure Traefik to enable WireGuard client Run this on the Raspberry Pi pi make traefik config (stdout) ? Traefik: \u003e Config Install (make install) Admin Exit (ESC) ? Traefik Configuration: ^ Entrypoints (including dashboard) TLS certificates and authorities Middleware (including sentry auth) \u003e Advanced Routing (Layer 7 / Layer 4 / WireGuard) Error page template Logging level Access logs ? Traefik routes Configure layer 7 TLS proxy Configure layer 4 TCP/UDP proxy \u003e Configure wireguard VPN ? Should this Traefik instance connect to a wireguard VPN? No, Traefik should use the host network directly. Yes, and this Traefik instance should start the wireguard server. \u003e Yes, but this Traefik instance needs credentials to connect to an outside VPN. Info There is an important choice to make regarding how you want the network of the Pi to be setup:\n(stdout) ? Should Traefik bind itself exclusively to the VPN interface? No, Traefik should work on all host interfaces (including the VPN). \u003e Yes, Traefik should only listen on the VPN interface. Do you still want to be able to access the Pi directly from your LAN, without needing to go through the sentry? Perhaps you won’t always have internet access and you still want to access these services? If so, choose No. The more secure option is to choose Yes and always go through the sentry. This will block access between the Pi and your LAN. You should Regardless of this choice, the SSH service will be provided to the LAN, so you can change this setting at any time.\nFinish entering your wireguard client settings by copying them from the temporary buffer you saved them in:\n(stdout) TRAEFIK_VPN_CLIENT_INTERFACE_ADDRESS: Enter the wireguard client Interface Address (e.g., 10.13.16.2) : 10.13.16.2 TRAEFIK_VPN_CLIENT_INTERFACE_PRIVATE_KEY: Enter the wireguard PrivateKey (ends with =) : 2E1vQHCS5JuaoRrt21GO0bYVrafOhplrGNFqoFBivEY= TRAEFIK_VPN_CLIENT_INTERFACE_LISTEN_PORT: Enter the wireguard listen port (e.g., 51820) : 51820 TRAEFIK_VPN_CLIENT_PEER_PUBLIC_KEY: Enter the Peer PublicKey (ends with =) : AZiNh/5sk71QTy6Rk0ygzIUsSGAX8/s3EeGN6lT9oj0= TRAEFIK_VPN_CLIENT_PEER_PRESHARED_KEY: Enter the Peer PresharedKey (ends with =) : tEIW8FuxR6I+Qu79bORatbD+JgNPeigNvc9V18f7to8= TRAEFIK_VPN_CLIENT_PEER_ENDPOINT: Enter the Peer Endpoint (host:port) : sentry.example.com:51820 TRAEFIK_VPN_CLIENT_PEER_ALLOWED_IPS: Enter the Peer AllowedIPs (e.g., 10.13.16.1/32) : 10.13.16.1/32 Reinstall Traefik Press ESC twice to go back to the main menu, then re-install:\n(stdout) ? Traefik: Config \u003e Install (make install) Admin Exit (ESC) Once reinstalled, press ESC to quit the config tool.\nTest VPN connectivity Check the logs:\nRun this on the Raspberry Pi pi make traefik logs service=wireguard-client (stdout) wireguard-client-1 | 2024-09-28T08:42:09.445201647Z **** All tunnels are now active **** Enter the wireguard client shell to test networking parameters:\nRun this on the Raspberry Pi pi make traefik shell service=wireguard-client Show the connected wireguard peers:\nRun this in the WireGuard Client shell wg Look for the last handshake time The output of wg should show the peer and the latest handshake time, for example:\nlatest handshake: 45 seconds agoIf you do not see a handshake time, then there is some kind of problem connecting to the WireGuard server that you need to resolve.\nPing the WireGuard server (10.13.16.1):\nRun this in the WireGuard Client shell ping -c3 10.13.16.1 When you are done using the shell press Ctrl-D or type exit to quit.\nCheck that whoami is available publicly In the last chapter you created a layer 7 route for the URL https://whoami.pi.example.com. Now that your wireguard connection is active on both ends, it should be publicly accessible. Test the URL in your personal web browser.\nNext steps Set up public SSH. Install core services. Install apps. ", "description": "Reconfigure Traefik to enable WireGuard client Run this on the Raspberry Pi pi make traefik config (stdout) ? Traefik: \u003e Config Install (make install) Admin Exit (ESC) ? Traefik Configuration: ^ Entrypoints (including dashboard) TLS certificates and authorities Middleware (including sentry auth) \u003e Advanced Routing (Layer 7 / Layer 4 / WireGuard) Error page template Logging level Access logs ? Traefik routes Configure layer 7 TLS proxy Configure layer 4 TCP/UDP proxy \u003e Configure wireguard VPN ?", "tags": [], "title": "Configure Raspberry Pi WireGuard client", diff --git a/license/index.html b/license/index.html index d35d3823..32ee2fc4 100644 --- a/license/index.html +++ b/license/index.html @@ -33,17 +33,17 @@ LICENSE :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/app-users/digitalocean/index.html b/linux-workstation/app-users/digitalocean/index.html index 8e6b098f..38cb3ef8 100644 --- a/linux-workstation/app-users/digitalocean/index.html +++ b/linux-workstation/app-users/digitalocean/index.html @@ -29,17 +29,17 @@ DigitalOcean CLI (doctl) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/app-users/index.html b/linux-workstation/app-users/index.html index 0c07ea0a..52a59b50 100644 --- a/linux-workstation/app-users/index.html +++ b/linux-workstation/app-users/index.html @@ -29,17 +29,17 @@ Application users :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/emacs-on-fedora/index.html b/linux-workstation/config/emacs-on-fedora/index.html index de79bcc2..da34acd0 100644 --- a/linux-workstation/config/emacs-on-fedora/index.html +++ b/linux-workstation/config/emacs-on-fedora/index.html @@ -25,17 +25,17 @@ Install Emacs Because Sway runs on Wayland, you’ll want to install the Wayland (pgtk) version of Emacs. In Fedora 40 onwards, the Wayland (pgtk) version is already the default. For Fedora 39, you can use this COPR (a COPR is to Fedora what PPA is to Ubuntu and what AUR is to Arch Linux), which includes a custom build for Wayland (pgtk)."> Emacs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/firefox/index.html b/linux-workstation/config/firefox/index.html index b5345498..a60172a5 100644 --- a/linux-workstation/config/firefox/index.html +++ b/linux-workstation/config/firefox/index.html @@ -25,17 +25,17 @@ Remove clutter Remove Firefox View, right click the upper left icon and select Remove from toolbar. Remove existing bookmarks from bookmark bar, right click each one and select Delete. Remove Pocket, right click the pocket icon in the upper right toolbar, select Remove from toolbar Remove Firefox Account icon, select Remove from toolbar Firefox Settings Go into the Firefox settings: click the “hamburger” menu in the top right toolbar."> Firefox :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/index.html b/linux-workstation/config/index.html index 66c5c69a..f3ff62ce 100644 --- a/linux-workstation/config/index.html +++ b/linux-workstation/config/index.html @@ -21,17 +21,17 @@ Config :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/ssh/index.html b/linux-workstation/config/ssh/index.html index 91a413da..2e01b9bf 100644 --- a/linux-workstation/config/ssh/index.html +++ b/linux-workstation/config/ssh/index.html @@ -25,17 +25,17 @@ Access to a server’s console shell, remotely. Transfer files between the server and client (using rsync, scp, or sftp). Create network tunnels to access private servers, in both directions, either on the server, or on the client."> SSH :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/sway/index.html b/linux-workstation/config/sway/index.html index 8de67cc9..7a03656b 100644 --- a/linux-workstation/config/sway/index.html +++ b/linux-workstation/config/sway/index.html @@ -25,17 +25,17 @@ Sway Config The Fedora Atomic Sway edition includes a default configuration for Sway. It’s pretty nice out of the box, and so if you like it, you can just use it."> Sway :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/config/toolbox/index.html b/linux-workstation/config/toolbox/index.html index 08d4e8ae..ff37d046 100644 --- a/linux-workstation/config/toolbox/index.html +++ b/linux-workstation/config/toolbox/index.html @@ -21,17 +21,17 @@ Toolbox :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/firewall/index.html b/linux-workstation/firewall/index.html index d68d5f27..0d014e9f 100644 --- a/linux-workstation/firewall/index.html +++ b/linux-workstation/firewall/index.html @@ -29,17 +29,17 @@ Don’t mess with it Warning Fedora Atomic installs a good default zone for workstation use, named public."> Firewall :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/index.html b/linux-workstation/index.html index 24d5bd91..16e4941d 100644 --- a/linux-workstation/index.html +++ b/linux-workstation/index.html @@ -25,17 +25,17 @@ Linux Workstation :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/install/index.html b/linux-workstation/install/index.html index 4c28cc3c..bae65178 100644 --- a/linux-workstation/install/index.html +++ b/linux-workstation/install/index.html @@ -29,17 +29,17 @@ [bash]: Run this on your workstation: lsblk | grep disk (stdout) NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 1."> Install Linux (Fedora Atomic) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/introduction/fedora-sway-atomic/index.html b/linux-workstation/introduction/fedora-sway-atomic/index.html index 88f6c9c9..2c62d7c7 100644 --- a/linux-workstation/introduction/fedora-sway-atomic/index.html +++ b/linux-workstation/introduction/fedora-sway-atomic/index.html @@ -29,17 +29,17 @@ Sway is a minimal tiling window manager for Wayland. It is ideal for efficient keyboard centric development and for getting out of your way."> Fedora Sway Atomic :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/introduction/index.html b/linux-workstation/introduction/index.html index 9620968d..7b760813 100644 --- a/linux-workstation/introduction/index.html +++ b/linux-workstation/introduction/index.html @@ -25,17 +25,17 @@ Introduction :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/introduction/requirements/index.html b/linux-workstation/introduction/requirements/index.html index 61acd82c..c30b1283 100644 --- a/linux-workstation/introduction/requirements/index.html +++ b/linux-workstation/introduction/requirements/index.html @@ -25,17 +25,17 @@ An x86_64 desktop or laptop computer to install to. A USB drive for copying the .iso installer to. A solokey or other FIDO2 compatible hardware authentication key. (This is optional, but highly recommended for storing secure shell keys, sudo 2FA, and logging into websites with Webauthn.) "> Requirements :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/cloud-init/config-vm/index.html b/linux-workstation/kvm-libvirt/cloud-init/config-vm/index.html index a4508169..960a4a6a 100644 --- a/linux-workstation/kvm-libvirt/cloud-init/config-vm/index.html +++ b/linux-workstation/kvm-libvirt/cloud-init/config-vm/index.html @@ -33,17 +33,17 @@ Fedora 40 [bash]: Set temporary environment variables OS_VARIANT=fedora40 CLOUD_IMAGE=https://download."> Configure VM (cloud-init) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/cloud-init/create-vm/index.html b/linux-workstation/kvm-libvirt/cloud-init/create-vm/index.html index 589c1f55..0b07fe2e 100644 --- a/linux-workstation/kvm-libvirt/cloud-init/create-vm/index.html +++ b/linux-workstation/kvm-libvirt/cloud-init/create-vm/index.html @@ -21,17 +21,17 @@ Create VM (cloud-init) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/cloud-init/index.html b/linux-workstation/kvm-libvirt/cloud-init/index.html index d3900bf6..f57312f9 100644 --- a/linux-workstation/kvm-libvirt/cloud-init/index.html +++ b/linux-workstation/kvm-libvirt/cloud-init/index.html @@ -21,17 +21,17 @@ Cloud-Init VMs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/dedicated-vm-user/index.html b/linux-workstation/kvm-libvirt/dedicated-vm-user/index.html index 20fb5519..15827387 100644 --- a/linux-workstation/kvm-libvirt/dedicated-vm-user/index.html +++ b/linux-workstation/kvm-libvirt/dedicated-vm-user/index.html @@ -25,17 +25,17 @@ This separation from the normal account you use is important to limit the privileges that you have over the VM infrastructure. Your normal account should be able to SSH into the VM and have full root privleges inside the VM."> Create VM admin :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/index.html b/linux-workstation/kvm-libvirt/index.html index 7ad5db37..d406f27d 100644 --- a/linux-workstation/kvm-libvirt/index.html +++ b/linux-workstation/kvm-libvirt/index.html @@ -25,17 +25,17 @@ KVM / libvirt :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/install-libvirtd/index.html b/linux-workstation/kvm-libvirt/install-libvirtd/index.html index 958b067f..0b08d736 100644 --- a/linux-workstation/kvm-libvirt/install-libvirtd/index.html +++ b/linux-workstation/kvm-libvirt/install-libvirtd/index.html @@ -29,17 +29,17 @@ Packages for Fedora CoreOS [bash]: Run this on your workstation: sudo rpm-ostree install qemu-kvm libvirt virt-manager virt-viewer \ virt-install libvirt-daemon-config-network libvirt-daemon-kvm \ libguestfs-tools python3-libguestfs virt-top distrobox make Packages for traditional Fedora Workstation hosts Info These are the packages you would need to install on traditional Fedora Workstation (or Server, but not CoreOS nor Atomic hosts)"> Install libvirtd :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/public-routes/index.html b/linux-workstation/kvm-libvirt/public-routes/index.html index 29ee92c5..7d4f3d24 100644 --- a/linux-workstation/kvm-libvirt/public-routes/index.html +++ b/linux-workstation/kvm-libvirt/public-routes/index.html @@ -29,17 +29,17 @@ Download the port-forwarding hook [bash]: Run this on your workstation: sudo mkdir -p /usr/local/src/ sudo su -c ""> Public routes to VMs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/raw-disk/config/index.html b/linux-workstation/kvm-libvirt/raw-disk/config/index.html index 4f421056..0d2b254c 100644 --- a/linux-workstation/kvm-libvirt/raw-disk/config/index.html +++ b/linux-workstation/kvm-libvirt/raw-disk/config/index.html @@ -21,17 +21,17 @@ Configure VM (raw disk) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/raw-disk/create-vm/index.html b/linux-workstation/kvm-libvirt/raw-disk/create-vm/index.html index e92182eb..04f37284 100644 --- a/linux-workstation/kvm-libvirt/raw-disk/create-vm/index.html +++ b/linux-workstation/kvm-libvirt/raw-disk/create-vm/index.html @@ -33,17 +33,17 @@ Run this as the libvirt-admin user NAME=fedora-iot source ~/libvirt/${NAME}.env Create directories to hold the VM disks and config files: Run this as the libvirt-admin user mkdir -p ~/libvirt/{cloud-images,raw,disks,cloud-init,iso} Download the raw disk: Tip You only need to download each RAW_DISK once, they will be cached in ~/libvirt/raw, so they can be be reused."> Create VM (raw disk) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/raw-disk/index.html b/linux-workstation/kvm-libvirt/raw-disk/index.html index 9c757080..278dc1dc 100644 --- a/linux-workstation/kvm-libvirt/raw-disk/index.html +++ b/linux-workstation/kvm-libvirt/raw-disk/index.html @@ -25,17 +25,17 @@ Raw disk VMs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/setup-libvirtd/index.html b/linux-workstation/kvm-libvirt/setup-libvirtd/index.html index c85fb503..8715c8d8 100644 --- a/linux-workstation/kvm-libvirt/setup-libvirtd/index.html +++ b/linux-workstation/kvm-libvirt/setup-libvirtd/index.html @@ -21,17 +21,17 @@ Setup libvirtd :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - + + + diff --git a/linux-workstation/kvm-libvirt/setup-workstation/index.html b/linux-workstation/kvm-libvirt/setup-workstation/index.html index 99f98d0c..9bf08c75 100644 --- a/linux-workstation/kvm-libvirt/setup-workstation/index.html +++ b/linux-workstation/kvm-libvirt/setup-workstation/index.html @@ -37,17 +37,17 @@ [bash]: Run this on your workstation: ssh debian-dev whoami (stdout) root Install Docker You’re now ready to use your VM as an install target for whatever you want."> Setup workstation SSH config :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/systemd/index.html b/linux-workstation/kvm-libvirt/systemd/index.html index e8cbf5eb..bf75bea3 100644 --- a/linux-workstation/kvm-libvirt/systemd/index.html +++ b/linux-workstation/kvm-libvirt/systemd/index.html @@ -29,17 +29,17 @@ Download libvirt python interface Tip You should now be in your normal workstation account Bash shell."> Systemd services to control VMs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/vm-from-iso/bootstrap-coreos/index.html b/linux-workstation/kvm-libvirt/vm-from-iso/bootstrap-coreos/index.html index 6848fd88..6a52547d 100644 --- a/linux-workstation/kvm-libvirt/vm-from-iso/bootstrap-coreos/index.html +++ b/linux-workstation/kvm-libvirt/vm-from-iso/bootstrap-coreos/index.html @@ -29,17 +29,17 @@ SSH into Live environment From your normal workstation account, connect to the SSH server of the Fedora Live environment:"> Bootstrap CoreOS :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/vm-from-iso/configure-vm/index.html b/linux-workstation/kvm-libvirt/vm-from-iso/configure-vm/index.html index 9eacf84b..20859841 100644 --- a/linux-workstation/kvm-libvirt/vm-from-iso/configure-vm/index.html +++ b/linux-workstation/kvm-libvirt/vm-from-iso/configure-vm/index.html @@ -21,17 +21,17 @@ Configure VM with .iso boot :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/vm-from-iso/index.html b/linux-workstation/kvm-libvirt/vm-from-iso/index.html index 5da1c66d..f5cc7c8a 100644 --- a/linux-workstation/kvm-libvirt/vm-from-iso/index.html +++ b/linux-workstation/kvm-libvirt/vm-from-iso/index.html @@ -25,17 +25,17 @@ Create VM from .iso image :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/kvm-libvirt/vm-from-iso/install-vm/index.html b/linux-workstation/kvm-libvirt/vm-from-iso/install-vm/index.html index 4df753e2..e4f4fd8a 100644 --- a/linux-workstation/kvm-libvirt/vm-from-iso/install-vm/index.html +++ b/linux-workstation/kvm-libvirt/vm-from-iso/install-vm/index.html @@ -29,17 +29,17 @@ [bash]: Run this on your workstation: xhost +local:libvirt-admin sudo -u libvirt-admin /bin/bash Tip The xhost line is to allow graphical apps (virt-viewer) from the other user appear on your display. You may need to play with xhost a few times to get it to work."> Boot VM from .iso :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/layering-packages/index.html b/linux-workstation/layering-packages/index.html index b4de93b5..06dbb3c6 100644 --- a/linux-workstation/layering-packages/index.html +++ b/linux-workstation/layering-packages/index.html @@ -29,17 +29,17 @@ Layer packages with rpm-ostree To create efficient layers, and to lessen the burden of several reboots, you should try to install everything in one go, using as few layers as possible."> Layering packages :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/get-your-solokey/index.html b/linux-workstation/sudo-2fa/get-your-solokey/index.html index b35cff3d..9cc6fdcf 100644 --- a/linux-workstation/sudo-2fa/get-your-solokey/index.html +++ b/linux-workstation/sudo-2fa/get-your-solokey/index.html @@ -29,17 +29,17 @@ Recommended: Solo 2 USB-A (touch capacitive, but its long and sticks out of the USB port). Recommended: Solo 1 Tap USB-A (durable clicky button, but its long and sticks out of the USB port). Recommended: Somu (semi-permanent flush mount USB-A port, soft touch design). Get the “secure” version, don’t buy the “hacker” version. Buy at least two (and store one as a backup)."> Get your Solokey :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/index.html b/linux-workstation/sudo-2fa/index.html index f0b5aadd..96212cfc 100644 --- a/linux-workstation/sudo-2fa/index.html +++ b/linux-workstation/sudo-2fa/index.html @@ -29,17 +29,17 @@ Solokey authentication :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/solo-v1/index.html b/linux-workstation/sudo-2fa/solo-v1/index.html index 1e9a46dd..e22e3f40 100644 --- a/linux-workstation/sudo-2fa/solo-v1/index.html +++ b/linux-workstation/sudo-2fa/solo-v1/index.html @@ -25,17 +25,17 @@ https://github.com/solokeys/solo1-cli/issues/151 https://github.com/solokeys/solo1-cli/discussions/156 Both of these are related to Fido2 v1.0.0. If you lock the version to the last known good version of 0.9.1, it will work:"> Solokey v1 :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/solo-v2/index.html b/linux-workstation/sudo-2fa/solo-v2/index.html index 576cf3e4..8354e506 100644 --- a/linux-workstation/sudo-2fa/solo-v2/index.html +++ b/linux-workstation/sudo-2fa/solo-v2/index.html @@ -37,17 +37,17 @@ Solokey v2 :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/ssh-2fa/index.html b/linux-workstation/sudo-2fa/ssh-2fa/index.html index 39e26d28..f711d170 100644 --- a/linux-workstation/sudo-2fa/ssh-2fa/index.html +++ b/linux-workstation/sudo-2fa/ssh-2fa/index.html @@ -21,17 +21,17 @@ SSH with Solokey :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/sudo-2fa/sudo-2fa/index.html b/linux-workstation/sudo-2fa/sudo-2fa/index.html index a8dd9c36..d4e6d93d 100644 --- a/linux-workstation/sudo-2fa/sudo-2fa/index.html +++ b/linux-workstation/sudo-2fa/sudo-2fa/index.html @@ -21,17 +21,17 @@ Sudo with Solokey :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/linux-workstation/upgrading/index.html b/linux-workstation/upgrading/index.html index 1a509bf5..06fc3468 100644 --- a/linux-workstation/upgrading/index.html +++ b/linux-workstation/upgrading/index.html @@ -33,17 +33,17 @@ [bash]: Run this on your workstation: sudo systemctl reboot The boot manager lists the last several images, which are still available to choose from."> Upgrading :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/acknowledgements/index.html b/portable-docker/acknowledgements/index.html index ce603b7a..bc654978 100644 --- a/portable-docker/acknowledgements/index.html +++ b/portable-docker/acknowledgements/index.html @@ -29,17 +29,17 @@ Thank you to DALL-E for drawing the illustrations. We forgive any misspellings and hallucinations."> Acknowledgements :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/index.html b/portable-docker/appendix/index.html index 59f777b8..1ea6a8cf 100644 --- a/portable-docker/appendix/index.html +++ b/portable-docker/appendix/index.html @@ -21,17 +21,17 @@ Appendix :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/manual-installation/index.html b/portable-docker/appendix/manual-installation/index.html index e909250e..747a6886 100644 --- a/portable-docker/appendix/manual-installation/index.html +++ b/portable-docker/appendix/manual-installation/index.html @@ -33,17 +33,17 @@ Manual installation :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/manual-installation/install-d-rymcg-tech/index.html b/portable-docker/appendix/manual-installation/install-d-rymcg-tech/index.html index e6f3d799..6d6283e7 100644 --- a/portable-docker/appendix/manual-installation/install-d-rymcg-tech/index.html +++ b/portable-docker/appendix/manual-installation/install-d-rymcg-tech/index.html @@ -21,17 +21,17 @@ Install d.rymcg.tech :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/manual-installation/install-docker/index.html b/portable-docker/appendix/manual-installation/install-docker/index.html index cc771c4d..31cc82fb 100644 --- a/portable-docker/appendix/manual-installation/install-docker/index.html +++ b/portable-docker/appendix/manual-installation/install-docker/index.html @@ -29,17 +29,17 @@ On the pi, install docker: Run this on the Raspberry Pi curl -sSL https://get.docker.com | sh Test that docker is working: Run this on the Raspberry Pi sudo docker run hello-world If it’s working, you should see a Hello from Docker! message and some other help info. Tip Normally, you shouldn’t use sudo docker."> Install Docker :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/manual-installation/set-up-ssh/index.html b/portable-docker/appendix/manual-installation/set-up-ssh/index.html index 85323f6c..1ccee6da 100644 --- a/portable-docker/appendix/manual-installation/set-up-ssh/index.html +++ b/portable-docker/appendix/manual-installation/set-up-ssh/index.html @@ -29,17 +29,17 @@ graph LR; subgraph Raspberry Pi pi[User: pi] root[User: root] pi -->|Docker SSH context\nto root@localhost| root end RemoteComputer[Personal\nWorkstation] -->|ssh pi@pi| pi Docker == root == pi SSH is used here almost like sudo."> Set up SSH :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/appendix/mutual-tls-for-web-and-mobile/index.html b/portable-docker/appendix/mutual-tls-for-web-and-mobile/index.html index 688a443d..21650087 100644 --- a/portable-docker/appendix/mutual-tls-for-web-and-mobile/index.html +++ b/portable-docker/appendix/mutual-tls-for-web-and-mobile/index.html @@ -21,17 +21,17 @@ Mutual TLS for Web and Mobile :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/private-acme/index.html b/portable-docker/appendix/private-acme/index.html index 48f6cbc7..73512fd2 100644 --- a/portable-docker/appendix/private-acme/index.html +++ b/portable-docker/appendix/private-acme/index.html @@ -21,17 +21,17 @@ Private ACME :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/appendix/traefik-config-menu/index.html b/portable-docker/appendix/traefik-config-menu/index.html index c0c653c0..3fc0d90f 100644 --- a/portable-docker/appendix/traefik-config-menu/index.html +++ b/portable-docker/appendix/traefik-config-menu/index.html @@ -33,17 +33,17 @@ Traefik config menu :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/configure-wireguard-tunnel/configure-raspberry-pi-wireguard-client/index.html b/portable-docker/configure-wireguard-tunnel/configure-raspberry-pi-wireguard-client/index.html index 9980534c..67ff27e0 100644 --- a/portable-docker/configure-wireguard-tunnel/configure-raspberry-pi-wireguard-client/index.html +++ b/portable-docker/configure-wireguard-tunnel/configure-raspberry-pi-wireguard-client/index.html @@ -19,19 +19,19 @@ - + Configure Raspberry Pi WireGuard client :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/configure-wireguard-tunnel/configure-sentry-wireguard-server/index.html b/portable-docker/configure-wireguard-tunnel/configure-sentry-wireguard-server/index.html index 67564a0d..a94e2125 100644 --- a/portable-docker/configure-wireguard-tunnel/configure-sentry-wireguard-server/index.html +++ b/portable-docker/configure-wireguard-tunnel/configure-sentry-wireguard-server/index.html @@ -21,17 +21,17 @@ Configure sentry wireguard server :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/configure-wireguard-tunnel/index.html b/portable-docker/configure-wireguard-tunnel/index.html index 462a2757..1f68534e 100644 --- a/portable-docker/configure-wireguard-tunnel/index.html +++ b/portable-docker/configure-wireguard-tunnel/index.html @@ -29,17 +29,17 @@ Configure WireGuard VPN :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/index.html b/portable-docker/index.html index 71f4f3cb..6c92aba0 100644 --- a/portable-docker/index.html +++ b/portable-docker/index.html @@ -29,17 +29,17 @@ Portable Docker: Build and Deploy Anywhere with WireGuard Tunneling :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/index.xml b/portable-docker/index.xml index 99060bf0..11ffb167 100644 --- a/portable-docker/index.xml +++ b/portable-docker/index.xml @@ -33,7 +33,7 @@ https://book.rymcg.tech/portable-docker/set-up-raspberry-pi/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://book.rymcg.tech/portable-docker/set-up-raspberry-pi/index.html - Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami + Tip If you are not using a Raspberry Pi, you can skip to the Install d.rymcg.tech section Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami Set up sentry Droplet diff --git a/portable-docker/install-core-services/docker-registry/index.html b/portable-docker/install-core-services/docker-registry/index.html index a7bcd619..27306bd8 100644 --- a/portable-docker/install-core-services/docker-registry/index.html +++ b/portable-docker/install-core-services/docker-registry/index.html @@ -25,17 +25,17 @@ If you only have one Docker server, running a registry might be kind of pointless. But you may want to run it for any of these reasons:"> Docker Registry :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-core-services/forgejo/index.html b/portable-docker/install-core-services/forgejo/index.html index 7b8e7b10..90b29562 100644 --- a/portable-docker/install-core-services/forgejo/index.html +++ b/portable-docker/install-core-services/forgejo/index.html @@ -29,17 +29,17 @@ Self-hosting your own git repositories. Providing an OAuth2 identity service for your organization, facilitating single-sign on to all of your apps via Traefik’s forward-auth middleware. Forgejo is fundamental infrastructure You don’t need to install Forgejo on every server you make, but having at least one instance in your domain is recommended."> Forgejo :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-core-services/index.html b/portable-docker/install-core-services/index.html index dabb7ad3..e490a920 100644 --- a/portable-docker/install-core-services/index.html +++ b/portable-docker/install-core-services/index.html @@ -25,17 +25,17 @@ Install core services :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-core-services/postfix-relay/index.html b/portable-docker/install-core-services/postfix-relay/index.html index 2be2f64a..6c6d5e7c 100644 --- a/portable-docker/install-core-services/postfix-relay/index.html +++ b/portable-docker/install-core-services/postfix-relay/index.html @@ -25,17 +25,17 @@ --- title: Authorized container networks may bridge with the Postfix-Relay to send outgoing email. --- graph TD; subgraph Docker network A[Container A] -->|private mail-only network| D[Postfix-Relay] B[Container B] -->|private mail-only network| D[Postfix-Relay] C[Container C] -.- F[Blocked] end D -->|Internet| E[Public SMTP server] E --> G[Allowed Email recipient] E --> H[Allowed Email recipient] E -."> Postfix-Relay (MTA) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/install-core-services/step-ca/index.html b/portable-docker/install-core-services/step-ca/index.html index 426a294d..25177a45 100644 --- a/portable-docker/install-core-services/step-ca/index.html +++ b/portable-docker/install-core-services/step-ca/index.html @@ -21,17 +21,17 @@ Step-CA (mutual TLS) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/install-core-services/traefik-forward-auth/index.html b/portable-docker/install-core-services/traefik-forward-auth/index.html index eb0497b9..50ce3565 100644 --- a/portable-docker/install-core-services/traefik-forward-auth/index.html +++ b/portable-docker/install-core-services/traefik-forward-auth/index.html @@ -21,17 +21,17 @@ Traefik-Forward-Auth (sentry authorization) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/install-web-services/homepage/index.html b/portable-docker/install-web-services/homepage/index.html index 7d3e93a0..3edea87d 100644 --- a/portable-docker/install-web-services/homepage/index.html +++ b/portable-docker/install-web-services/homepage/index.html @@ -29,17 +29,17 @@ (stdout) HOMEPAGE_TRAEFIK_HOST: Enter the homepage domain name (eg. homepage.example.com) : homepage.pi.example.com HOMEPAGE_WEBHOOK_HOST: Enter the separate webhook domain name (eg. homepage-webhook.example.com) : homepage-webhook.pi.example.com It is recommended to enable some form of sentry authorization to protect homepage, e."> Homepage :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-web-services/immich/index.html b/portable-docker/install-web-services/immich/index.html index 9b8bbcf3..269b5783 100644 --- a/portable-docker/install-web-services/immich/index.html +++ b/portable-docker/install-web-services/immich/index.html @@ -21,17 +21,17 @@ Immich :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-web-services/index.html b/portable-docker/install-web-services/index.html index 90b47323..95a21b0c 100644 --- a/portable-docker/install-web-services/index.html +++ b/portable-docker/install-web-services/index.html @@ -25,17 +25,17 @@ Install apps :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-web-services/jupyterlab/index.html b/portable-docker/install-web-services/jupyterlab/index.html index d8e284f5..84261d4b 100644 --- a/portable-docker/install-web-services/jupyterlab/index.html +++ b/portable-docker/install-web-services/jupyterlab/index.html @@ -25,17 +25,17 @@ Configure Jupyterlab Run this on your Raspberry Pi pi make jupyterlab config Install Jupyterlab Run this on the Raspberry Pi pi make jupyterlab install wait Add a new route on the sentry Run this on your Raspberry Pi sentry route set pi jupyterlab."> Jupyterlab :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-web-services/minio-s3/index.html b/portable-docker/install-web-services/minio-s3/index.html index c4f0288f..99ab3fff 100644 --- a/portable-docker/install-web-services/minio-s3/index.html +++ b/portable-docker/install-web-services/minio-s3/index.html @@ -25,17 +25,17 @@ graph LR; Browser[Web Browser\nFileStash UI] -->|HTTP request for app page| FileStash Browser -->|API request for object data| Minio subgraph Docker FileStash[FileStash\nWWW] Minio((Minio S3\nObject store)) end Tip Running MinIO on a single Raspberry Pi is perfect for personal use."> MinIO S3 (and Filestash) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/install-web-services/nginx-and-php/index.html b/portable-docker/install-web-services/nginx-and-php/index.html index 48bb0d65..fcc0fbb3 100644 --- a/portable-docker/install-web-services/nginx-and-php/index.html +++ b/portable-docker/install-web-services/nginx-and-php/index.html @@ -25,17 +25,17 @@ Configure Nginx Run this on your Raspberry Pi pi make nginx config Make sure you choose a unique domain for this service (www is also the default for thttpd, so if you installed that too, just make sure this is unique:)"> Nginx and PHP :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/install-web-services/sftp/index.html b/portable-docker/install-web-services/sftp/index.html index 51d5fa2a..dfd87a59 100644 --- a/portable-docker/install-web-services/sftp/index.html +++ b/portable-docker/install-web-services/sftp/index.html @@ -25,17 +25,17 @@ Install a demo web server (thttpd) Thttpd is a tiny static HTTP server for hosting websites. It will be used for demonstration purposes in showing the effect of transferring files directly into its volume, via SFTP."> SFTP (and Thttpd) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/install-web-services/yourls/index.html b/portable-docker/install-web-services/yourls/index.html index 9c8c34a1..99d205ef 100644 --- a/portable-docker/install-web-services/yourls/index.html +++ b/portable-docker/install-web-services/yourls/index.html @@ -21,17 +21,17 @@ Yourls :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/introduction/index.html b/portable-docker/introduction/index.html index 5d47d477..789e7e05 100644 --- a/portable-docker/introduction/index.html +++ b/portable-docker/introduction/index.html @@ -25,17 +25,17 @@ I use this as a tiny web server that I can take anywhere I go."> Introduction :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/maintainence/backup/index.html b/portable-docker/maintainence/backup/index.html index 1685d75e..78a6d142 100644 --- a/portable-docker/maintainence/backup/index.html +++ b/portable-docker/maintainence/backup/index.html @@ -21,17 +21,17 @@ Native Backup :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/maintainence/index.html b/portable-docker/maintainence/index.html index c2e56af4..e5a476bc 100644 --- a/portable-docker/maintainence/index.html +++ b/portable-docker/maintainence/index.html @@ -21,17 +21,17 @@ Maintainence :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/maintainence/troubleshooting/index.html b/portable-docker/maintainence/troubleshooting/index.html index 3b0e8a63..0714c0bc 100644 --- a/portable-docker/maintainence/troubleshooting/index.html +++ b/portable-docker/maintainence/troubleshooting/index.html @@ -25,17 +25,17 @@ [bash]: Run this on your workstation: ## Just leave this running in a separate terminal as you keep working.. sudo dmesg -w Disable power saving on NVME storage How to disable power saving on the NVME drive Out of two identical kits, I encountered one error in the kernel log on one machine but not on the other, so you may or may not run into this error:"> Troubleshooting :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/maintainence/upgrade/index.html b/portable-docker/maintainence/upgrade/index.html index acc0eba8..3ce76371 100644 --- a/portable-docker/maintainence/upgrade/index.html +++ b/portable-docker/maintainence/upgrade/index.html @@ -25,17 +25,17 @@ The version of the app is usually controlled via an environment variable named PROJECT_IMAGE or PROJECT_VERSION. For some apps, this will be labeled as latest so that it always installs the latest version, while others are locked to a specific know working version."> Upgrade :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-cloud-sentry/configure-d-rymcg-tech-for-sentry/index.html b/portable-docker/set-up-cloud-sentry/configure-d-rymcg-tech-for-sentry/index.html index 39b847ec..6816e5af 100644 --- a/portable-docker/set-up-cloud-sentry/configure-d-rymcg-tech-for-sentry/index.html +++ b/portable-docker/set-up-cloud-sentry/configure-d-rymcg-tech-for-sentry/index.html @@ -21,17 +21,17 @@ Configure d.rymcg.tech for the sentry :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-cloud-sentry/index.html b/portable-docker/set-up-cloud-sentry/index.html index ea7e70f4..48831558 100644 --- a/portable-docker/set-up-cloud-sentry/index.html +++ b/portable-docker/set-up-cloud-sentry/index.html @@ -21,17 +21,17 @@ Set up sentry Droplet :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-cloud-sentry/index.xml b/portable-docker/set-up-cloud-sentry/index.xml index 72b9ba69..afa86992 100644 --- a/portable-docker/set-up-cloud-sentry/index.xml +++ b/portable-docker/set-up-cloud-sentry/index.xml @@ -19,7 +19,7 @@ https://book.rymcg.tech/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html Mon, 01 Jan 0001 00:00:00 +0000 https://book.rymcg.tech/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html - You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name): graph LR; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi] RaspberryPi -->|SSH| Sentry[Sentry] Append to the SSH config on the Pi Run this on the Raspberry Pi cat <<EOF >> ~/.ssh/config Host sentry User root Hostname sentry.example.com ControlMaster auto ControlPersist yes ControlPath /tmp/ssh-%u-%r@%h:%p EOF Tip The Hostname value should point to the same name you created the DNS entry for the sentry. + You now need to be able to control the droplet’s root user from the Raspberry Pi’s pi user. Create a new SSH config entry for the sentry (replace sentry.example.com with your own droplet’s DNS name): --- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts. Configure d.rymcg.tech for the sentry diff --git a/portable-docker/set-up-cloud-sentry/launch-digitalocean-droplet/index.html b/portable-docker/set-up-cloud-sentry/launch-digitalocean-droplet/index.html index b0b5bb53..8422f114 100644 --- a/portable-docker/set-up-cloud-sentry/launch-digitalocean-droplet/index.html +++ b/portable-docker/set-up-cloud-sentry/launch-digitalocean-droplet/index.html @@ -21,17 +21,17 @@ Launch DigitalOcean droplet :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html b/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html index 9c2d317a..7162e6f4 100644 --- a/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html +++ b/portable-docker/set-up-cloud-sentry/set-up-docker-context/index.html @@ -6,36 +6,36 @@ +--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts."> +--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts."> +--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts."> - +--- title: Docker admin over SSH --- graph TD; classDef dottedBox stroke-dasharray: 5 5; Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] class Docker2 dottedBox; Tip You may want to share a single sentry among several Docker servers at various locations, and this is supported, but you should designate only one machine as the main configuration point (Docker admin) for all other contexts."> + Configure the sentry context on the Pi :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-dns/create-digitalocean-api-token-for-acme-challenge/index.html b/portable-docker/set-up-dns/create-digitalocean-api-token-for-acme-challenge/index.html index b4ccf5e2..4a3f1b4f 100644 --- a/portable-docker/set-up-dns/create-digitalocean-api-token-for-acme-challenge/index.html +++ b/portable-docker/set-up-dns/create-digitalocean-api-token-for-acme-challenge/index.html @@ -21,17 +21,17 @@ Generate DigitalOcean API token for ACME challenge :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-dns/create-digitalocean-api-token/index.html b/portable-docker/set-up-dns/create-digitalocean-api-token/index.html index 83552546..af0e57b7 100644 --- a/portable-docker/set-up-dns/create-digitalocean-api-token/index.html +++ b/portable-docker/set-up-dns/create-digitalocean-api-token/index.html @@ -29,17 +29,17 @@ Sign up for a DigitalOcean account (using this referral link helps support this site), and follow along to set up your domain’s DNS."> Add the domain to DigitalOcean DNS :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-dns/index.html b/portable-docker/set-up-dns/index.html index 9d744864..f679a4c4 100644 --- a/portable-docker/set-up-dns/index.html +++ b/portable-docker/set-up-dns/index.html @@ -25,17 +25,17 @@ Set up DNS :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-dns/register-domain/index.html b/portable-docker/set-up-dns/register-domain/index.html index 19b6f07b..2742f887 100644 --- a/portable-docker/set-up-dns/register-domain/index.html +++ b/portable-docker/set-up-dns/register-domain/index.html @@ -25,17 +25,17 @@ --- title: A web browser must query DNS before it can fetch any web page --- sequenceDiagram participant Browser as Web Browser participant DNS as DNS Server participant WEB as Web Server Browser->>DNS: DNS Request (Resolve domain name) DNS-->>Browser: DNS Response (IP Address) Browser->>WEB: HTTP Request (Fetch Web Page) WEB-->>Browser: HTTP Response (Web Page Content) Domain name registration The public domain name registration system is controlled as a scarce resource that you must pay for the use of."> Register a domain name :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-public-ssh-reverse-tunnel/index.html b/portable-docker/set-up-public-ssh-reverse-tunnel/index.html index 486623d1..651a1606 100644 --- a/portable-docker/set-up-public-ssh-reverse-tunnel/index.html +++ b/portable-docker/set-up-public-ssh-reverse-tunnel/index.html @@ -25,17 +25,17 @@ Set up public SSH :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-raspberry-pi/build-your-pi/index.html b/portable-docker/set-up-raspberry-pi/build-your-pi/index.html index 2df06ad0..a453e71e 100644 --- a/portable-docker/set-up-raspberry-pi/build-your-pi/index.html +++ b/portable-docker/set-up-raspberry-pi/build-your-pi/index.html @@ -29,17 +29,17 @@ Geeekpi / 52Pi case, heatsink, NVME shield, and power supply This kit comes with the NVME shield, which is an adapter (hat) to install on top of the Raspberry Pi 5 motherboard."> Build your Raspberry Pi :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-raspberry-pi/index.html b/portable-docker/set-up-raspberry-pi/index.html index 9dffb0c8..8381448b 100644 --- a/portable-docker/set-up-raspberry-pi/index.html +++ b/portable-docker/set-up-raspberry-pi/index.html @@ -5,33 +5,37 @@ - + - + - + - - + + Set up Raspberry Pi :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-raspberry-pi/index.xml b/portable-docker/set-up-raspberry-pi/index.xml index fc7ee769..65d27176 100644 --- a/portable-docker/set-up-raspberry-pi/index.xml +++ b/portable-docker/set-up-raspberry-pi/index.xml @@ -3,7 +3,7 @@ Set up Raspberry Pi :: book.rymcg.tech https://book.rymcg.tech/portable-docker/set-up-raspberry-pi/index.html - Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami + Tip If you are not using a Raspberry Pi, you can skip to the Install d.rymcg.tech section Index Build your Raspberry Pi Install Raspberry Pi OS Set up networking Install d.rymcg.tech Install Traefik Install Whoami Hugo en-us diff --git a/portable-docker/set-up-raspberry-pi/install-docker-and-d.rymcg.tech/index.html b/portable-docker/set-up-raspberry-pi/install-docker-and-d.rymcg.tech/index.html index 3332b1cc..6600fa8c 100644 --- a/portable-docker/set-up-raspberry-pi/install-docker-and-d.rymcg.tech/index.html +++ b/portable-docker/set-up-raspberry-pi/install-docker-and-d.rymcg.tech/index.html @@ -31,19 +31,19 @@ Info Before running the command below, you should edit the environment variables defined at the top: ROOT_DOMAIN needs to be a dedicated sub-domain name assigned to the Pi (e.g., pi.example.com). ALIASES is already preset with the aliases you’ll be needing for this book: pi and sentry. You may customize the names here if you wish."> - + Install d.rymcg.tech :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-raspberry-pi/install-raspbian/index.html b/portable-docker/set-up-raspberry-pi/install-raspbian/index.html index f9c9bd68..a3151048 100644 --- a/portable-docker/set-up-raspberry-pi/install-raspbian/index.html +++ b/portable-docker/set-up-raspberry-pi/install-raspbian/index.html @@ -37,17 +37,17 @@ Choose your model of Raspberry Pi."> Install Raspberry Pi OS :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-raspberry-pi/install-traefik/index.html b/portable-docker/set-up-raspberry-pi/install-traefik/index.html index 275d45b8..a583013c 100644 --- a/portable-docker/set-up-raspberry-pi/install-traefik/index.html +++ b/portable-docker/set-up-raspberry-pi/install-traefik/index.html @@ -25,17 +25,17 @@ graph RL; Browser[Web Browser] -->|HTTP Request| Traefik[Traefik Proxy] Traefik -->|HTTP Response| Browser Whoami -->|Response| Traefik subgraph Docker Traefik[Traefik Proxy] -->|Forwards Request| Whoami[Container: whoami] end Basic Traefik config Run this on the Raspberry Pi pi make traefik config This presents the interactive configuration menu for Traefik:"> Install Traefik :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/portable-docker/set-up-raspberry-pi/install-whoami/index.html b/portable-docker/set-up-raspberry-pi/install-whoami/index.html index bcd0fc02..ad6dea9b 100644 --- a/portable-docker/set-up-raspberry-pi/install-whoami/index.html +++ b/portable-docker/set-up-raspberry-pi/install-whoami/index.html @@ -25,17 +25,17 @@ Run this later after you install it: curl https://whoami.pi.example.com (stdout) Name: default Hostname: 38704012c4b3 IP: 127.0.0.1 IP: ::1 IP: 172.19.0.2 RemoteAddr: 172.19.0.1:34610 GET / HTTP/1.1 Host: whoami.example.com User-Agent: curl/7.88.1 Accept: */* Accept-Encoding: gzip X-Forwarded-For: 198."> Install Whoami :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/set-up-raspberry-pi/set-up-networking/index.html b/portable-docker/set-up-raspberry-pi/set-up-networking/index.html index afa95e6a..aea7a059 100644 --- a/portable-docker/set-up-raspberry-pi/set-up-networking/index.html +++ b/portable-docker/set-up-raspberry-pi/set-up-networking/index.html @@ -25,17 +25,17 @@ Run this on the Raspberry Pi sudo raspi-config Enter System Options. Enter S1 Wireless LAN. Choose your current country. Enter the SSID (Wi-Fi network name) you wish to connect to. Enter the network passphrase Configure DNS By default, DNS is handled via DHCP, which will probably work in the majority of cases."> Set up networking :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/portable-docker/single.html b/portable-docker/single.html index f90d2c89..f2fbd55a 100644 --- a/portable-docker/single.html +++ b/portable-docker/single.html @@ -1202,7 +1202,7 @@

Install d.rymcg.tech

 ROOT_DOMAIN=pi.example.com \
 ALIASES=pi,sentry \
-bash <(curl -L
+bash <(curl -L \
 https://github.com/EnigmaCurry/d.rymcg.tech/blob/master/_scripts/bootstrap_sworkstation.sh?raw=true)
 
@@ -2404,10 +2404,30 @@

Configure the sentry context on the Pi

-graph LR; - Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi] +--- +title: Docker admin over SSH +--- + +graph TD; + classDef dottedBox stroke-dasharray: 5 5; + Workstation[Personal Workstation] -->|SSH| RaspberryPi[Raspberry Pi - Docker admin] RaspberryPi -->|SSH| Sentry[Sentry] + RaspberryPi .->|SSH| Docker2[Docker 2, 3, etc.] + class Docker2 dottedBox; + +
+
Tip
+
+ +

You may want to share a single sentry among several Docker servers at +various locations, and this is supported, but you should designate +only one machine as the main configuration point (Docker admin) for +all other contexts. In this example, the Raspberry Pi is the Docker +admin who controls all other Docker servers, but your Personal +Workstation or even the sentry could fulfill this role instead.

+
+

Append to the SSH config on the Pi

@@ -3207,7 +3227,7 @@

Reconfigure Traefik to e always have internet access and you still want to access these services? If so, choose No.
  • The more secure option is to choose Yes and always go through the -sentry. This will block access between the Pi and your LAN.
  • +sentry. This will block access between the Pi and your LAN. You should

    Regardless of this choice, the SSH service will be provided to the LAN, so you can change this setting at any time.

    diff --git a/publishing-with-org-mode/building-locally/index.html b/publishing-with-org-mode/building-locally/index.html index 7adbfa4e..99d5b570 100644 --- a/publishing-with-org-mode/building-locally/index.html +++ b/publishing-with-org-mode/building-locally/index.html @@ -37,17 +37,17 @@ [bash]: Run this on your workstation: ## This builds the entire site, and then runs the live reload server: make serve "> Building locally :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/dependencies/index.html b/publishing-with-org-mode/dependencies/index.html index c8ac5417..db3433dd 100644 --- a/publishing-with-org-mode/dependencies/index.html +++ b/publishing-with-org-mode/dependencies/index.html @@ -29,17 +29,17 @@ To build locally, you must install Emacs (29+), and hugo (v0.120+), using your package manager, or by downloading directly from their respective project pages. Please be aware that hugo has two editions: standard and extended, and this build requires the extended edition (TODO: verify this - I had some problems before - but maybe they are resolved - I am still using the extended edition for now)."> Dependencies :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/deeply/index.html b/publishing-with-org-mode/examples/deeply/index.html index 7123a5da..3b71b624 100644 --- a/publishing-with-org-mode/examples/deeply/index.html +++ b/publishing-with-org-mode/examples/deeply/index.html @@ -21,17 +21,17 @@ Example of a deeply … :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/deeply/nested/index.html b/publishing-with-org-mode/examples/deeply/nested/index.html index 167fa438..e22b7e44 100644 --- a/publishing-with-org-mode/examples/deeply/nested/index.html +++ b/publishing-with-org-mode/examples/deeply/nested/index.html @@ -21,17 +21,17 @@ Nested … :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter1/index.html b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter1/index.html index e42e557f..00b13d36 100644 --- a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter1/index.html +++ b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter1/index.html @@ -21,17 +21,17 @@ Sub-chapter 1 :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter2/index.html b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter2/index.html index ce91094c..5558dda2 100644 --- a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter2/index.html +++ b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter2/index.html @@ -21,17 +21,17 @@ Sub-chapter 2 :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter3/index.html b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter3/index.html index 1a14380f..2972ac5f 100644 --- a/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter3/index.html +++ b/publishing-with-org-mode/examples/deeply/nested/subchapters/subchapter3/index.html @@ -21,17 +21,17 @@ Sub-chapter 3 :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/index.html b/publishing-with-org-mode/examples/index.html index ad386df5..382c7977 100644 --- a/publishing-with-org-mode/examples/index.html +++ b/publishing-with-org-mode/examples/index.html @@ -29,17 +29,17 @@ Example Org / Hugo content :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/org-blocks/index.html b/publishing-with-org-mode/examples/org-blocks/index.html index 0379fa76..98b95118 100644 --- a/publishing-with-org-mode/examples/org-blocks/index.html +++ b/publishing-with-org-mode/examples/org-blocks/index.html @@ -45,17 +45,17 @@ This content is hidden by default."> Example Org Blocks :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/examples/shortcodes/index.html b/publishing-with-org-mode/examples/shortcodes/index.html index 33090579..70c7a5cb 100644 --- a/publishing-with-org-mode/examples/shortcodes/index.html +++ b/publishing-with-org-mode/examples/shortcodes/index.html @@ -29,17 +29,17 @@ Badges 1.0.0 99,999 867-5309 Email me@example.com Docs Dumpster Fire Buttons d."> Example Shortcodes :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - + + - + diff --git a/publishing-with-org-mode/index.html b/publishing-with-org-mode/index.html index 84186f39..13a994a8 100644 --- a/publishing-with-org-mode/index.html +++ b/publishing-with-org-mode/index.html @@ -25,17 +25,17 @@ Publishing with org-mode :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/org-mode-emacs/editing-org-mode/index.html b/publishing-with-org-mode/org-mode-emacs/editing-org-mode/index.html index 4a7996b2..f316a67f 100644 --- a/publishing-with-org-mode/org-mode-emacs/editing-org-mode/index.html +++ b/publishing-with-org-mode/org-mode-emacs/editing-org-mode/index.html @@ -25,17 +25,17 @@ Type the link text. Navigate point to the last character of the link text. Press C-SPC (Control Spacebar) to mark the position. Navigate point to the first character of the link text. The link text should now be selected. Press C-c o i (or M-x org-insert-link). Enter the hyperlink URL. Absolute URLs should start with https://."> Editing Org-mode files :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/org-mode-emacs/index.html b/publishing-with-org-mode/org-mode-emacs/index.html index e7e2b379..c99f6509 100644 --- a/publishing-with-org-mode/org-mode-emacs/index.html +++ b/publishing-with-org-mode/org-mode-emacs/index.html @@ -29,17 +29,17 @@ Using Org-mode and Emacs :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/org-mode-emacs/navigating-org-mode/index.html b/publishing-with-org-mode/org-mode-emacs/navigating-org-mode/index.html index 6ea0e383..7b2a90bb 100644 --- a/publishing-with-org-mode/org-mode-emacs/navigating-org-mode/index.html +++ b/publishing-with-org-mode/org-mode-emacs/navigating-org-mode/index.html @@ -25,17 +25,17 @@ Press C-s (or M-x isearch-forward) Of course, you might not always know the exact text (or it might not be unique enough to take you right there), so its useful to know some other ways of navigating Org documents."> Navigating Org-mode files :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/publish-with-github-pages/index.html b/publishing-with-org-mode/publish-with-github-pages/index.html index 14e594eb..ad408130 100644 --- a/publishing-with-org-mode/publish-with-github-pages/index.html +++ b/publishing-with-org-mode/publish-with-github-pages/index.html @@ -21,17 +21,17 @@ Publishing with GitHub pages :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/publishing-with-org-mode/publish-with-sftp/index.html b/publishing-with-org-mode/publish-with-sftp/index.html index 1241d833..6fb3bb6d 100644 --- a/publishing-with-org-mode/publish-with-sftp/index.html +++ b/publishing-with-org-mode/publish-with-sftp/index.html @@ -37,17 +37,17 @@ [bash]: Run this on your workstation: rclone config Follow the prompts to setup your SFTP remote, or you can see the example SFTP documentation for doing this."> Publishing with SFTP :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/create-router-vm/bootstrap-docker/index.html b/router/create-router-vm/bootstrap-docker/index.html index 4b90d823..b7263d75 100644 --- a/router/create-router-vm/bootstrap-docker/index.html +++ b/router/create-router-vm/bootstrap-docker/index.html @@ -25,17 +25,17 @@ ALIAS (e.g., “router”) is the short contextual alias used to interact with your Docker server. ROOT_DOMAIN (e.g., “lan.example.com”) is the chosen sub-domain for the new router’s LAN . SYSBOX=true (true/false) enables Sysbox to allow the router containers to run privileged tasks (e.g., systemd). [bash]: Set temporary environment variables ## These temporary variables configure bootstrap_sworkstation."> Bootstrap Docker :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/create-router-vm/create-router-vm/index.html b/router/create-router-vm/create-router-vm/index.html index c3676d77..25fa9657 100644 --- a/router/create-router-vm/create-router-vm/index.html +++ b/router/create-router-vm/create-router-vm/index.html @@ -25,17 +25,17 @@ Run this on the Proxmox PVE host export VM_ID=102 \ VM_NET=10.10.1.2/24 \ VM_GATEWAY=10.10.1.1 \ VM_HOSTNAME=router \ TEMPLATE_ID=9003 \ CPU=2 \ RAM_MB=2048 \ EXTRA_DISK_SPACE_GB=30 && \ ./proxmox_kvm.sh clone && \ qm set "${VM_ID}" \ --machine q35 \ --net0 "virtio,bridge=vmbr1" \ --ipconfig0 "ip=${VM_NET},gw=${VM_GATEWAY}" \ --cores ${CPU} \ --memory ${RAM_MB} && \ test -n "${EXTRA_DISK_SPACE_GB}" && \ test "${EXTRA_DISK_SPACE_GB}" !"> Create the Router VM :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/create-router-vm/setup-router-network/index.html b/router/create-router-vm/setup-router-network/index.html index 7428a2c0..5ba6caee 100644 --- a/router/create-router-vm/setup-router-network/index.html +++ b/router/create-router-vm/setup-router-network/index.html @@ -25,17 +25,17 @@ First, create a static network config for the management interface (name eth0 by default, but it will be renamed to mgmt):"> Setup Router Network :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/hardware/index.html b/router/hardware/index.html index 8254f7f1..3013d59a 100644 --- a/router/hardware/index.html +++ b/router/hardware/index.html @@ -21,17 +21,17 @@ Hardware :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/index.html b/router/index.html index e2d04ae2..36e5de7b 100644 --- a/router/index.html +++ b/router/index.html @@ -29,17 +29,17 @@ Linux Router :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/enable-community-repository/index.html b/router/install-proxmox/enable-community-repository/index.html index 3a3eb000..f4f0b645 100644 --- a/router/install-proxmox/enable-community-repository/index.html +++ b/router/install-proxmox/enable-community-repository/index.html @@ -29,17 +29,17 @@ To get an enterprise license visit Proxmox Support."> Choose update repository :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/index.html b/router/install-proxmox/index.html index b545078c..3b8293fe 100644 --- a/router/install-proxmox/index.html +++ b/router/install-proxmox/index.html @@ -21,17 +21,17 @@ Setup Proxmox :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/install-proxmox/index.html b/router/install-proxmox/install-proxmox/index.html index 7353b0c4..0c2e4332 100644 --- a/router/install-proxmox/install-proxmox/index.html +++ b/router/install-proxmox/install-proxmox/index.html @@ -37,17 +37,17 @@ Accept the license agreement Click I agree."> Install Proxmox :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/setup-firewall/index.html b/router/install-proxmox/setup-firewall/index.html index b0187656..c14401ad 100644 --- a/router/install-proxmox/setup-firewall/index.html +++ b/router/install-proxmox/setup-firewall/index.html @@ -25,17 +25,17 @@ Proxmox has a multi-layer firewall, which can be enabled at the Datacenter, PVE node, and VM levels. The Datacenter firewall sets the default policy. The Node firewall will be used to protect the PVE node itself, while the VM firewalls protects individual VMs."> Setup Proxmox firewall :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/setup-kvm-template/index.html b/router/install-proxmox/setup-kvm-template/index.html index 013d16b6..60177115 100644 --- a/router/install-proxmox/setup-kvm-template/index.html +++ b/router/install-proxmox/setup-kvm-template/index.html @@ -29,17 +29,17 @@ Run this on the Proxmox PVE host STORAGE=local-lvm \ DISTRO=fedora-41 \ TEMPLATE_ID=9003 \ PUBLIC_PORTS_TCP=22,80,443 \ FILESYSTEM_SIZE=20 \ ./proxmox_kvm.sh template Tip If you installed Proxmox with ZFS storage, set STORAGE=local-zfs."> Setup KVM template :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/setup-nat/index.html b/router/install-proxmox/setup-nat/index.html index d6487441..1862528f 100644 --- a/router/install-proxmox/setup-nat/index.html +++ b/router/install-proxmox/setup-nat/index.html @@ -29,17 +29,17 @@ NAT (Network Address Translation) is an alternative that creates a private network for the VMs, routing their traffic through the host’s IP as a gateway."> Setup VM network (NAT) :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/router/install-proxmox/setup-ssh/index.html b/router/install-proxmox/setup-ssh/index.html index b5a12065..96f8ba40 100644 --- a/router/install-proxmox/setup-ssh/index.html +++ b/router/install-proxmox/setup-ssh/index.html @@ -33,17 +33,17 @@ [bash]: Run this on your workstation: ssh-keygen For more information see the chapter on SSH in the Linux Workstation book."> Setup SSH :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/search.html b/search.html index 72cd27b4..a93041ec 100644 --- a/search.html +++ b/search.html @@ -29,17 +29,17 @@ Search :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + diff --git a/tags/index.html b/tags/index.html index 496aa54d..d9cb9661 100644 --- a/tags/index.html +++ b/tags/index.html @@ -17,17 +17,17 @@ Tags :: book.rymcg.tech - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - - - + + +