diff --git a/manuscript/README.md b/manuscript/README.md index 2d12d8f..635418c 100644 --- a/manuscript/README.md +++ b/manuscript/README.md @@ -2,10 +2,10 @@ ## Structure -1. "Recipies" generally follow on from each other. I.e., if a particular recipe requires a mail server, that mail server would have been described in an earlier recipe. +1. "Recipes" generally follow on from each other. I.e., if a particular recipe requires a mail server, that mail server would have been described in an earlier recipe. 2. Each recipe contains enough detail in a single page to take a project from start to completion. -3. When there are optional add-ons/integrations possible to a project (i.e., the addition of "smart LED bulbs" to Home Assistant), this will be reflected either as a brief "Chef's note" after the recipe, or if they're substantial enough, as a sub-page of the main project +3. When there are optional add-ons/integrations possible to a project (_i.e., the addition of "smart LED bulbs" to Home Assistant_), this will be reflected either as a brief "Chef's note" after the recipe, or if they're substantial enough, as a sub-page of the main project ## Conventions -1. When creating swarm networks, we always explicitly set the subnet in the overlay network, to avoid potential conflicts (which docker won't prevent, but which will generate errors) (https://github.com/moby/moby/issues/26912) +1. When creating swarm networks, we always explicitly set the subnet in the overlay network, to avoid potential conflicts (_which docker won't prevent, but which will generate errors_) (https://github.com/moby/moby/issues/26912) diff --git a/manuscript/ha-docker-swarm/vms.md b/manuscript/ha-docker-swarm/vms.md index 267845a..8c7e882 100644 --- a/manuscript/ha-docker-swarm/vms.md +++ b/manuscript/ha-docker-swarm/vms.md @@ -4,7 +4,7 @@ Let's start building our cloud with virtual machines. You could use bare-metal m I chose the "[Atomic](https://www.projectatomic.io/)" CentOS/Fedora image for the VM layer because: -1. I want less responsibility for maintaining the system, including ensuring regular software updates and reboots. Atomic's idempotent nature means the OS is largely real-only, and updates/rollbacks are "atomic" (haha) procedures, which can be easily rolled back if required. +1. I want less responsibility for maintaining the system, including ensuring regular software updates and reboots. Atomic's idempotent nature means the OS is largely read-only, and updates/rollbacks are "atomic" (haha) procedures, which can be easily rolled back if required. 2. For someone used to administrating servers individually, Atomic is a PITA. You have to employ [tricky](https://spinningmatt.wordpress.com/2014/01/08/a-recipe-for-starting-cloud-images-with-virt-install/) [tricks](http://blog.oddbit.com/2015/03/10/booting-cloud-images-with-libvirt/) to get it to install in a non-cloud environment. It's not designed for tweaking or customizing beyond what cloud-config is capable of. For my purposes, this is good, because it forces me to change my thinking - to consider every daemon as a container, and every config as code, to be checked in and version-controlled. Atomic forces this thinking on you. 3. I want the design to be as "portable" as possible. While I run it on VPSs now, I may want to migrate it to a "cloud" provider in the future, and I'll want the most portable, reproducible design. diff --git a/manuscript/recipies/autopirate.md b/manuscript/recipies/autopirate.md index 899e3d3..9b18f91 100644 --- a/manuscript/recipies/autopirate.md +++ b/manuscript/recipies/autopirate.md @@ -32,7 +32,7 @@ To mitigate the risk associated with public exposure of these tools (_you're on ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design 3. Access to NZB indexers and Usenet servers 4. DNS entries configured for each of the NZB tools in this recipe that you want to use diff --git a/manuscript/recipies/duplicity.md b/manuscript/recipies/duplicity.md index f8c7a60..7d16ef9 100644 --- a/manuscript/recipies/duplicity.md +++ b/manuscript/recipies/duplicity.md @@ -28,7 +28,7 @@ So what does this mean for our stack? It means we can leverage Duplicity to back ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. Credentials for one of the Duplicity's supported upload destinations ## Preparation diff --git a/manuscript/recipies/ghost.md b/manuscript/recipies/ghost.md index 0e9da82..1f1aa94 100644 --- a/manuscript/recipies/ghost.md +++ b/manuscript/recipies/ghost.md @@ -8,7 +8,7 @@ hero: Ghost - A recipe for beautiful online publication. ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/gitlab-runner.md b/manuscript/recipies/gitlab-runner.md index a4b7bb0..0088b78 100644 --- a/manuscript/recipies/gitlab-runner.md +++ b/manuscript/recipies/gitlab-runner.md @@ -6,7 +6,7 @@ While a runner isn't strictly required to use GitLab, if you want to do CI, you' ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [GitLab](/ha-docker-swarm/gitlab) installation (see previous recipe) ## Preparation diff --git a/manuscript/recipies/gitlab.md b/manuscript/recipies/gitlab.md index 22b68f1..a8eb33c 100644 --- a/manuscript/recipies/gitlab.md +++ b/manuscript/recipies/gitlab.md @@ -8,7 +8,7 @@ Docker does maintain an [official "Omnibus" container](https://docs.gitlab.com/o ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/gollum.md b/manuscript/recipies/gollum.md index 75207b7..3ff0c99 100644 --- a/manuscript/recipies/gollum.md +++ b/manuscript/recipies/gollum.md @@ -33,7 +33,7 @@ Gollum meets all these requirements, and as an added bonus, is extremely fast an ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/huginn.md b/manuscript/recipies/huginn.md index 84e036c..e62e431 100644 --- a/manuscript/recipies/huginn.md +++ b/manuscript/recipies/huginn.md @@ -8,7 +8,7 @@ Huginn is a system for building agents that perform automated tasks for you onli ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/kanboard.md b/manuscript/recipies/kanboard.md index a58c98e..89323f5 100644 --- a/manuscript/recipies/kanboard.md +++ b/manuscript/recipies/kanboard.md @@ -21,7 +21,7 @@ Features include: ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/mail.md b/manuscript/recipies/mail.md index 3b581a9..261fd11 100644 --- a/manuscript/recipies/mail.md +++ b/manuscript/recipies/mail.md @@ -14,7 +14,7 @@ docker-mailserver doesn't include a webmail client, and one is not strictly need ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design 3. LetsEncrypt authorized email address for domain 4. Access to manage DNS records for domains diff --git a/manuscript/recipies/miniflux.md b/manuscript/recipies/miniflux.md index ab2c658..f72e806 100644 --- a/manuscript/recipies/miniflux.md +++ b/manuscript/recipies/miniflux.md @@ -14,7 +14,7 @@ I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/rev ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/piwik.md b/manuscript/recipies/piwik.md index e8aa88f..a160805 100644 --- a/manuscript/recipies/piwik.md +++ b/manuscript/recipies/piwik.md @@ -6,7 +6,7 @@ ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design diff --git a/manuscript/recipies/template.md b/manuscript/recipies/template.md index f94dc87..2daa957 100644 --- a/manuscript/recipies/template.md +++ b/manuscript/recipies/template.md @@ -8,7 +8,7 @@ Details ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/tiny-tiny-rss.md b/manuscript/recipies/tiny-tiny-rss.md index 2275c2f..408e0f7 100644 --- a/manuscript/recipies/tiny-tiny-rss.md +++ b/manuscript/recipies/tiny-tiny-rss.md @@ -10,7 +10,7 @@ ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation diff --git a/manuscript/recipies/wekan.md b/manuscript/recipies/wekan.md index 91f44e2..c537e14 100644 --- a/manuscript/recipies/wekan.md +++ b/manuscript/recipies/wekan.md @@ -13,7 +13,7 @@ There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer ## Ingredients -1. [Docker swarm cluster](/ha-docker-swarm/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) 2. [Traefik](/ha-docker-swarm/traefik) configured per design ## Preparation