mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-15 10:46:34 +00:00
Fix typos/formatting
Thanks for pointing out the errors, @ReformedRedditLurker (https://www.reddit.com/user/ReformedRedditLurker)
This commit is contained in:
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Structure
|
## 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.
|
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
|
## 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)
|
||||||
|
|||||||
@@ -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:
|
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.
|
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.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ To mitigate the risk associated with public exposure of these tools (_you're on
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
3. Access to NZB indexers and Usenet servers
|
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
|
4. DNS entries configured for each of the NZB tools in this recipe that you want to use
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ So what does this mean for our stack? It means we can leverage Duplicity to back
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. Credentials for one of the Duplicity's supported upload destinations
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ hero: Ghost - A recipe for beautiful online publication.
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ While a runner isn't strictly required to use GitLab, if you want to do CI, you'
|
|||||||
|
|
||||||
## Ingredients
|
## 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)
|
2. [GitLab](/ha-docker-swarm/gitlab) installation (see previous recipe)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Docker does maintain an [official "Omnibus" container](https://docs.gitlab.com/o
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ Gollum meets all these requirements, and as an added bonus, is extremely fast an
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Huginn is a system for building agents that perform automated tasks for you onli
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Features include:
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ docker-mailserver doesn't include a webmail client, and one is not strictly need
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
3. LetsEncrypt authorized email address for domain
|
3. LetsEncrypt authorized email address for domain
|
||||||
4. Access to manage DNS records for domains
|
4. Access to manage DNS records for domains
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/rev
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer
|
|||||||
|
|
||||||
## Ingredients
|
## 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
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
Reference in New Issue
Block a user