mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-17 19:51:43 +00:00
Update for leanpub preview
This commit is contained in:
BIN
manuscript/Book.epub
Normal file
BIN
manuscript/Book.epub
Normal file
Binary file not shown.
@@ -13,14 +13,14 @@
|
|||||||
|
|
||||||
## Recently added recipes
|
## Recently added recipes
|
||||||
* Overhauled [Ceph (Shared Storage)](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/) recipe for Ceph Octopus (v15) (_25 May 2020_)
|
* Overhauled [Ceph (Shared Storage)](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/) recipe for Ceph Octopus (v15) (_25 May 2020_)
|
||||||
* Added recipe for making your own [DIY Kubernetes Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/diycluster/) (_14 December 2019_)
|
* Added recipe for making your own [DIY Kubernetes Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/diycluster/) (_14 December 2019_)
|
||||||
* Added recipe for [authenticating Traefik Forward Auth against KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/keycloak/) (_16 May 2019_)
|
* Added recipe for [authenticating Traefik Forward Auth against KeyCloak]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/keycloak/) (_16 May 2019_)
|
||||||
* Added [Bitwarden](https://geek-cookbook.funkypenguin.co.nz/)recipes/bitwarden/), an **awesome** open-source password manager, with great mobile sync support (_14 May 2019_)
|
* Added [Bitwarden]https://geek-cookbook.funkypenguin.co.nz/recipes/bitwarden/), an **awesome** open-source password manager, with great mobile sync support (_14 May 2019_)
|
||||||
* Added [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/), replacing function of multiple [oauth_proxies](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) with a single, 7MB Go application, which can authenticate against Google, [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/), and other OIDC providers (_10 May 2019_)
|
* Added [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/), replacing function of multiple [oauth_proxies]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) with a single, 7MB Go application, which can authenticate against Google, [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/), and other OIDC providers (_10 May 2019_)
|
||||||
|
|
||||||
## Recent improvements
|
## Recent improvements
|
||||||
|
|
||||||
* Added recipe for [automated snapshots of Kubernetes Persistent Volumes](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/), instructions for using [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/), and recipe for deploying [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/), which completes the Kubernetes cluster design! (_9 Feb 2019_)
|
* Added recipe for [automated snapshots of Kubernetes Persistent Volumes]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/), instructions for using [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/), and recipe for deploying [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/), which completes the Kubernetes cluster design! (_9 Feb 2019_)
|
||||||
* Added detailed description (_and diagram_) of our [Kubernetes design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/), plus a [simple load-balancer design](kubernetes/loadbalancer/) to avoid the complexities/costs of permitting ingress access to a cluster (_7 Feb 2019_)
|
* Added detailed description (_and diagram_) of our [Kubernetes design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/), plus a [simple load-balancer design](kubernetes/loadbalancer/) to avoid the complexities/costs of permitting ingress access to a cluster (_7 Feb 2019_)
|
||||||
* Added an [introductory/explanatory page, including a children's story, on Kubernetes](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) (_29 Jan 2019_)
|
* Added an [introductory/explanatory page, including a children's story, on Kubernetes]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) (_29 Jan 2019_)
|
||||||
* [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/) updated to fix CalDAV/CardDAV service discovery behind Traefik reverse proxy (_12 Dec 2018_)
|
* [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/) updated to fix CalDAV/CardDAV service discovery behind Traefik reverse proxy (_12 Dec 2018_)
|
||||||
|
|||||||
@@ -7,3 +7,78 @@ sections/ha-docker-swarm.md
|
|||||||
ha-docker-swarm/design.md
|
ha-docker-swarm/design.md
|
||||||
ha-docker-swarm/nodes.md
|
ha-docker-swarm/nodes.md
|
||||||
ha-docker-swarm/shared-storage-ceph.md
|
ha-docker-swarm/shared-storage-ceph.md
|
||||||
|
ha-docker-swarm/shared-storage-gluster.md
|
||||||
|
ha-docker-swarm/keepalived.md
|
||||||
|
ha-docker-swarm/docker-swarm-mode.md
|
||||||
|
ha-docker-swarm/traefik.md
|
||||||
|
ha-docker-swarm/traefik-forward-auth.md
|
||||||
|
ha-docker-swarm/traefik-forward-auth/keycloak.md
|
||||||
|
ha-docker-swarm/registry.md
|
||||||
|
|
||||||
|
sections/chefs-favorites-docker.md
|
||||||
|
recipes/autopirate.md
|
||||||
|
recipes/autopirate/sabnzbd.md
|
||||||
|
recipes/autopirate/nzbget.md
|
||||||
|
recipes/autopirate/rtorrent.md
|
||||||
|
recipes/autopirate/sonarr.md
|
||||||
|
recipes/autopirate/radarr.md
|
||||||
|
recipes/autopirate/mylar.md
|
||||||
|
recipes/autopirate/lazylibrarian.md
|
||||||
|
recipes/autopirate/headphones.md
|
||||||
|
recipes/autopirate/lidarr.md
|
||||||
|
recipes/autopirate/nzbhydra.md
|
||||||
|
recipes/autopirate/nzbhydra2.md
|
||||||
|
recipes/autopirate/ombi.md
|
||||||
|
recipes/autopirate/jackett.md
|
||||||
|
recipes/autopirate/heimdall.md
|
||||||
|
recipes/autopirate/end.md
|
||||||
|
|
||||||
|
recipes/duplicity.md
|
||||||
|
recipes/elkarbackup.md
|
||||||
|
recipes/emby.md
|
||||||
|
recipes/homeassistant.md
|
||||||
|
recipes/homeassistant/ibeacon.md
|
||||||
|
recipes/huginn.md
|
||||||
|
recipes/kanboard.md
|
||||||
|
recipes/miniflux.md
|
||||||
|
recipes/munin.md
|
||||||
|
recipes/nextcloud.md
|
||||||
|
recipes/owntracks.md
|
||||||
|
recipes/phpipam.md
|
||||||
|
recipes/plex.md
|
||||||
|
recipes/privatebin.md
|
||||||
|
recipes/swarmprom.md
|
||||||
|
|
||||||
|
sections/menu-docker.md
|
||||||
|
recipes/bitwarden.md
|
||||||
|
recipes/bookstack.md
|
||||||
|
recipes/calibre-web.md
|
||||||
|
recipes/collabora-online.md
|
||||||
|
recipes/ghost.md
|
||||||
|
recipes/gitlab.md
|
||||||
|
recipes/gitlab-runner.md
|
||||||
|
recipes/gollum.md
|
||||||
|
recipes/instapy.md
|
||||||
|
recipes/keycloak.md
|
||||||
|
recipes/keycloak/create-user.md
|
||||||
|
recipes/keycloak/authenticate-against-openldap.md
|
||||||
|
recipes/keycloak/setup-oidc-provider.md
|
||||||
|
recipes/openldap.md
|
||||||
|
recipes/mail.md
|
||||||
|
recipes/minio.md
|
||||||
|
recipes/piwik.md
|
||||||
|
recipes/portainer.md
|
||||||
|
recipes/realms.md
|
||||||
|
recipes/tiny-tiny-rss.md
|
||||||
|
recipes/wallabag.md
|
||||||
|
recipes/wekan.md
|
||||||
|
recipes/wetty.md
|
||||||
|
|
||||||
|
sections/reference.md
|
||||||
|
reference/oauth_proxy.md
|
||||||
|
reference/data_layout.md
|
||||||
|
reference/networks.md
|
||||||
|
reference/containers.md
|
||||||
|
reference/git-docker.md
|
||||||
|
reference/openvpn.md
|
||||||
|
reference/troubleshooting.md
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ In the design described below, our "private cloud" platform is:
|
|||||||
* **Highly-available** (_can tolerate the failure of a single component_)
|
* **Highly-available** (_can tolerate the failure of a single component_)
|
||||||
* **Scalable** (_can add resource or capacity as required_)
|
* **Scalable** (_can add resource or capacity as required_)
|
||||||
* **Portable** (_run it on your garage server today, run it in AWS tomorrow_)
|
* **Portable** (_run it on your garage server today, run it in AWS tomorrow_)
|
||||||
* **Secure** (_access protected with [LetsEncrypt certificates](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/) and optional [OIDC with 2FA](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/)_)
|
* **Secure** (_access protected with [LetsEncrypt certificates]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) and optional [OIDC with 2FA]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/)_)
|
||||||
* **Automated** (_requires minimal care and feeding_)
|
* **Automated** (_requires minimal care and feeding_)
|
||||||
|
|
||||||
## Design Decisions
|
## Design Decisions
|
||||||
@@ -15,7 +15,7 @@ In the design described below, our "private cloud" platform is:
|
|||||||
This means that:
|
This means that:
|
||||||
|
|
||||||
* At least 3 docker swarm manager nodes are required, to provide fault-tolerance of a single failure.
|
* At least 3 docker swarm manager nodes are required, to provide fault-tolerance of a single failure.
|
||||||
* [Ceph](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph/) is employed for share storage, because it too can be made tolerant of a single failure.
|
* [Ceph]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/) is employed for share storage, because it too can be made tolerant of a single failure.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
An exception to the 3-nodes decision is running a single-node configuration. If you only **have** one node, then obviously your swarm is only as resilient as that node. It's still a perfectly valid swarm configuration, ideal for starting your self-hosting journey. In fact, under the single-node configuration, you don't need ceph either, and you can simply use the local volume on your host for storage. You'll be able to migrate to ceph/more nodes if/when you expand.
|
An exception to the 3-nodes decision is running a single-node configuration. If you only **have** one node, then obviously your swarm is only as resilient as that node. It's still a perfectly valid swarm configuration, ideal for starting your self-hosting journey. In fact, under the single-node configuration, you don't need ceph either, and you can simply use the local volume on your host for storage. You'll be able to migrate to ceph/more nodes if/when you expand.
|
||||||
@@ -38,8 +38,8 @@ Under this design, the only inbound connections we're permitting to our docker s
|
|||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|
||||||
* Where the hosted application provides a trusted level of authentication (*i.e., [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/)*), or where the application requires public exposure (*i.e. [Privatebin](https://geek-cookbook.funkypenguin.co.nz/)recipes/privatebin/)*), no additional layer of authentication will be required.
|
* Where the hosted application provides a trusted level of authentication (*i.e., [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/)*), or where the application requires public exposure (*i.e. [Privatebin]https://geek-cookbook.funkypenguin.co.nz/recipes/privatebin/)*), no additional layer of authentication will be required.
|
||||||
* Where the hosted application provides inadequate (*i.e. [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget/)*) or no authentication (*i.e. [Gollum](https://geek-cookbook.funkypenguin.co.nz/)recipes/gollum/)*), a further authentication against an OAuth provider will be required.
|
* Where the hosted application provides inadequate (*i.e. [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget/)*) or no authentication (*i.e. [Gollum]https://geek-cookbook.funkypenguin.co.nz/recipes/gollum/)*), a further authentication against an OAuth provider will be required.
|
||||||
|
|
||||||
|
|
||||||
## High availability
|
## High availability
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
Launch the cleanup stack by running ```docker stack deploy docker-cleanup -c <path-to-docker-compose.yml>```
|
Launch the cleanup stack by running ```docker stack deploy docker-cleanup -c <path-to-docker-compose.yml>```
|
||||||
|
|
||||||
@@ -169,7 +169,7 @@ Launch shepherd by running ```docker stack deploy shepherd -c /var/data/config/s
|
|||||||
|
|
||||||
After completing the above, you should have:
|
After completing the above, you should have:
|
||||||
|
|
||||||
* [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/)
|
* [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
Let's start building our cluster. You can use either bare-metal machines or virtual machines - the configuration would be the same. To avoid confusion, I'll be referring to these as "nodes" from now on.
|
Let's start building our cluster. You can use either bare-metal machines or virtual machines - the configuration would be the same. To avoid confusion, I'll be referring to these as "nodes" from now on.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
In 2017, I **initially** chose the "[Atomic](https://www.projectatomic.io/)" CentOS/Fedora image for the swarm hosts, but later found its outdated version of Docker to be problematic with advanced features like GPU transcoding (in [Plex](https://geek-cookbook.funkypenguin.co.nz/)recipes/plex/)), [Swarmprom](https://geek-cookbook.funkypenguin.co.nz/)recipes/swarmprom/), etc. In the end, I went mainstream and simply preferred a modern Ubuntu installation.
|
In 2017, I **initially** chose the "[Atomic](https://www.projectatomic.io/)" CentOS/Fedora image for the swarm hosts, but later found its outdated version of Docker to be problematic with advanced features like GPU transcoding (in [Plex]https://geek-cookbook.funkypenguin.co.nz/recipes/plex/)), [Swarmprom]https://geek-cookbook.funkypenguin.co.nz/recipes/swarmprom/), etc. In the end, I went mainstream and simply preferred a modern Ubuntu installation.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ The registry mirror runs as a swarm stack, using a simple docker-compose.yml. Cu
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ The process takes about 30 seconds, after which, you'll have a MVC (*Minimum Via
|
|||||||
INFO:cephadm:Verifying time synchronization is in place...
|
INFO:cephadm:Verifying time synchronization is in place...
|
||||||
INFO:cephadm:Unit systemd-timesyncd.service is enabled and running
|
INFO:cephadm:Unit systemd-timesyncd.service is enabled and running
|
||||||
INFO:cephadm:Repeating the final host check...
|
INFO:cephadm:Repeating the final host check...
|
||||||
INFO:cephadm:podman|docker (https://geek-cookbook.funkypenguin.co.nz/)usr/bin/docker) is present
|
INFO:cephadm:podman|docker https://geek-cookbook.funkypenguin.co.nz/usr/bin/docker) is present
|
||||||
INFO:cephadm:systemctl is present
|
INFO:cephadm:systemctl is present
|
||||||
INFO:cephadm:lvcreate is present
|
INFO:cephadm:lvcreate is present
|
||||||
INFO:cephadm:Unit systemd-timesyncd.service is enabled and running
|
INFO:cephadm:Unit systemd-timesyncd.service is enabled and running
|
||||||
@@ -143,7 +143,7 @@ Path on master | Path on non-master
|
|||||||
Back on the ==master== node, run `ceph orch host add <node-name>` once for each other node you want to join to the cluster. You can validate the results by running `ceph orch host ls`
|
Back on the ==master== node, run `ceph orch host add <node-name>` once for each other node you want to join to the cluster. You can validate the results by running `ceph orch host ls`
|
||||||
|
|
||||||
!!! question "Should we be concerned about giving cephadm using root access over SSH?"
|
!!! question "Should we be concerned about giving cephadm using root access over SSH?"
|
||||||
Not really. Docker is inherently insecure at the host-level anyway (*think what would happen if you launched a global-mode stack with a malicious container image which mounted `/root/.ssh`*), so worrying about cephadm seems a little barn-door-after-horses-bolted. If you take host-level security seriously, consider switching to [Kubernetes](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) :)
|
Not really. Docker is inherently insecure at the host-level anyway (*think what would happen if you launched a global-mode stack with a malicious container image which mounted `/root/.ssh`*), so worrying about cephadm seems a little barn-door-after-horses-bolted. If you take host-level security seriously, consider switching to [Kubernetes]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) :)
|
||||||
|
|
||||||
### Add OSDs
|
### Add OSDs
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
While Docker Swarm is great for keeping containers running (_and restarting those that fail_), it does nothing for persistent storage. This means if you actually want your containers to keep any data persistent across restarts (_hint: you do!_), you need to provide shared storage to every docker node.
|
While Docker Swarm is great for keeping containers running (_and restarting those that fail_), it does nothing for persistent storage. This means if you actually want your containers to keep any data persistent across restarts (_hint: you do!_), you need to provide shared storage to every docker node.
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This recipe is deprecated. It didn't work well in 2017, and it's not likely to work any better now. It remains here as a reference. I now recommend the use of [Ceph for shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph/) instead. - 2019 Chef
|
This recipe is deprecated. It didn't work well in 2017, and it's not likely to work any better now. It remains here as a reference. I now recommend the use of [Ceph for shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/) instead. - 2019 Chef
|
||||||
|
|
||||||
## Design
|
## Design
|
||||||
|
|
||||||
|
|||||||
@@ -2,28 +2,28 @@
|
|||||||
|
|
||||||
Now that we have Traefik deployed, automatically exposing SSL access to our Docker Swarm services using LetsEncrypt wildcard certificates, let's pause to consider that we may not _want_ some services exposed directly to the internet...
|
Now that we have Traefik deployed, automatically exposing SSL access to our Docker Swarm services using LetsEncrypt wildcard certificates, let's pause to consider that we may not _want_ some services exposed directly to the internet...
|
||||||
|
|
||||||
..Wait, why not? Well, Traefik doesn't provide any form of authentication, it simply secures the **transmission** of the service between Docker Swarm and the end user. If you were to deploy a service with no native security (*[Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/) or [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/) come to mind*), then anybody would be able to use it! Even services which _may_ have a layer of authentication **might** not be safe to expose publically - often open source projects may be maintained by enthusiasts who happily add extra features, but just pay lip service to security, on the basis that "*it's the user's problem to secure it in their own network*".
|
..Wait, why not? Well, Traefik doesn't provide any form of authentication, it simply secures the **transmission** of the service between Docker Swarm and the end user. If you were to deploy a service with no native security (*[Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/) or [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/) come to mind*), then anybody would be able to use it! Even services which _may_ have a layer of authentication **might** not be safe to expose publically - often open source projects may be maintained by enthusiasts who happily add extra features, but just pay lip service to security, on the basis that "*it's the user's problem to secure it in their own network*".
|
||||||
|
|
||||||
To give us confidence that **we** can access our services, but BadGuys(tm) cannot, we'll deploy a layer of authentication **in front** of Traefik, using [Forward Authentication](https://docs.traefik.io/configuration/entrypoints/#forward-authentication). You can use your own [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) instance for authentication, but to lower the barrier to entry, this recipe will assume you're authenticating against your own Google account.
|
To give us confidence that **we** can access our services, but BadGuys(tm) cannot, we'll deploy a layer of authentication **in front** of Traefik, using [Forward Authentication](https://docs.traefik.io/configuration/entrypoints/#forward-authentication). You can use your own [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) instance for authentication, but to lower the barrier to entry, this recipe will assume you're authenticating against your own Google account.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph)
|
* [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph)
|
||||||
* [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/) configured per design
|
* [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) configured per design
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
* [ ] Client ID and secret from an OpenID-Connect provider (Google, [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/), Microsoft, etc..)
|
* [ ] Client ID and secret from an OpenID-Connect provider (Google, [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/), Microsoft, etc..)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Obtain OAuth credentials
|
### Obtain OAuth credentials
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
This recipe will demonstrate using Google OAuth for traefik forward authentication, but it's also possible to use a self-hosted KeyCloak instance - see the [KeyCloak OIDC Provider](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/setup-oidc-provider/) recipe for more details!
|
This recipe will demonstrate using Google OAuth for traefik forward authentication, but it's also possible to use a self-hosted KeyCloak instance - see the [KeyCloak OIDC Provider]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/setup-oidc-provider/) recipe for more details!
|
||||||
|
|
||||||
Log into https://console.developers.google.com/, create a new project then search for and select "Credentials" in the search bar.
|
Log into https://console.developers.google.com/, create a new project then search for and select "Credentials" in the search bar.
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ COOKIE_DOMAINS=example.com
|
|||||||
|
|
||||||
### Prepare the docker service config
|
### Prepare the docker service config
|
||||||
|
|
||||||
This is a small container, you can simply add the following content to the existing `traefik-app.yml` deployed in the previous [Traefik](https://geek-cookbook.funkypenguin.co.nz/)recipes/traefik/) recipe:
|
This is a small container, you can simply add the following content to the existing `traefik-app.yml` deployed in the previous [Traefik]https://geek-cookbook.funkypenguin.co.nz/recipes/traefik/) recipe:
|
||||||
|
|
||||||
```
|
```
|
||||||
traefik-forward-auth:
|
traefik-forward-auth:
|
||||||
@@ -110,7 +110,7 @@ What have we achieved? By adding an additional three simple labels to any servic
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. Traefik forward auth replaces the use of [oauth_proxy containers](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) found in some of the existing recipes
|
1. Traefik forward auth replaces the use of [oauth_proxy containers]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) found in some of the existing recipes
|
||||||
2. [@thomaseddon's original version](https://github.com/thomseddon/traefik-forward-auth) of traefik-forward-auth only works with Google currently, but I've created a [fork](https://www.github.com/funkypenguin/traefik-forward-auth) of a [fork](https://github.com/noelcatt/traefik-forward-auth), which implements generic OIDC providers.
|
2. [@thomaseddon's original version](https://github.com/thomseddon/traefik-forward-auth) of traefik-forward-auth only works with Google currently, but I've created a [fork](https://www.github.com/funkypenguin/traefik-forward-auth) of a [fork](https://github.com/noelcatt/traefik-forward-auth), which implements generic OIDC providers.
|
||||||
3. I reviewed several implementations of forward authenticators for Traefik, but found most to be rather heavy-handed, or specific to a single auth provider. @thomaseddon's go-based docker image is 7MB in size, and with the generic OIDC patch (above), it can be extended to work with any OIDC provider.
|
3. I reviewed several implementations of forward authenticators for Traefik, but found most to be rather heavy-handed, or specific to a single auth provider. @thomaseddon's go-based docker image is 7MB in size, and with the generic OIDC patch (above), it can be extended to work with any OIDC provider.
|
||||||
4. No, not github natively, but you can ferderate GitHub into KeyCloak, and then use KeyCloak as the OIDC provider.
|
4. No, not github natively, but you can ferderate GitHub into KeyCloak, and then use KeyCloak as the OIDC provider.
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Using Traefik Forward Auth with KeyCloak
|
# Using Traefik Forward Auth with KeyCloak
|
||||||
|
|
||||||
While the [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/) recipe demonstrated a quick way to protect a set of explicitly-specified URLs using OIDC credentials from a Google account, this recipe will illustrate how to use your own KeyCloak instance to secure **any** URLs within your DNS domain.
|
While the [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/) recipe demonstrated a quick way to protect a set of explicitly-specified URLs using OIDC credentials from a Google account, this recipe will illustrate how to use your own KeyCloak instance to secure **any** URLs within your DNS domain.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) recipe deployed successfully, with a [local user](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/create-user/) and an [OIDC client](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/setup-oidc-provider/)
|
* [X] [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) recipe deployed successfully, with a [local user]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/create-user/) and an [OIDC client]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/setup-oidc-provider/)
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ COOKIE_DOMAIN=<the root FQDN of your domain>
|
|||||||
|
|
||||||
### Prepare the docker service config
|
### Prepare the docker service config
|
||||||
|
|
||||||
This is a small container, you can simply add the following content to the existing `traefik-app.yml` deployed in the previous [Traefik](https://geek-cookbook.funkypenguin.co.nz/)recipes/traefik/) recipe:
|
This is a small container, you can simply add the following content to the existing `traefik-app.yml` deployed in the previous [Traefik]https://geek-cookbook.funkypenguin.co.nz/recipes/traefik/) recipe:
|
||||||
|
|
||||||
```
|
```
|
||||||
traefik-forward-auth:
|
traefik-forward-auth:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ To deal with these gaps, we need a front-end load-balancer, and in this design,
|
|||||||
!!! summary "You'll need"
|
!!! summary "You'll need"
|
||||||
Existing
|
Existing
|
||||||
|
|
||||||
* [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph)
|
* [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph)
|
||||||
|
|
||||||
New
|
New
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ ID NAME IMAGE
|
|||||||
|
|
||||||
You should now be able to access your traefik instance on http://<node IP\>:8080 - It'll look a little lonely currently (*below*), but we'll populate it as we add recipes :)
|
You should now be able to access your traefik instance on http://<node IP\>:8080 - It'll look a little lonely currently (*below*), but we'll populate it as we add recipes :)
|
||||||
|
|
||||||
images/traefik-post-launch.png)
|
![Screenshot of Traefik, post-launch]https://geek-cookbook.funkypenguin.co.nz/images/traefik-post-launch.png)
|
||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
|
|
||||||
@@ -236,4 +236,4 @@ You should now be able to access your traefik instance on http://<node IP\>:8080
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. Did you notice how no authentication was required to view the Traefik dashboard? Eek! We'll tackle that in the next section, regarding [Traefik Forward Authentication](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/)!
|
1. Did you notice how no authentication was required to view the Traefik dashboard? Eek! We'll tackle that in the next section, regarding [Traefik Forward Authentication]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/)!
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
# What is this?
|
# What is this?
|
||||||
|
|
||||||
Funky Penguin's "**[Geek Cookbook](https://geek-cookbook.funkypenguin.co.nz)**" is a collection of how-to guides for establishing your own container-based self-hosting platform, using either [Docker Swarm](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) or [Kubernetes](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/).
|
Funky Penguin's "**[Geek Cookbook](https://geek-cookbook.funkypenguin.co.nz)**" is a collection of how-to guides for establishing your own container-based self-hosting platform, using either [Docker Swarm]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) or [Kubernetes]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/).
|
||||||
|
|
||||||
Running such a platform enables you to run self-hosted tools such as [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) (*Radarr, Sonarr, NZBGet and friends*), [Plex][plex], [NextCloud][nextcloud], and includes elements such as:
|
Running such a platform enables you to run self-hosted tools such as [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) (*Radarr, Sonarr, NZBGet and friends*), [Plex][plex], [NextCloud][nextcloud], and includes elements such as:
|
||||||
|
|
||||||
* [Automatic SSL-secured access](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/) to all services (*with LetsEncrypt*)
|
* [Automatic SSL-secured access]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) to all services (*with LetsEncrypt*)
|
||||||
* [SSO / authentication layer](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/) to protect unsecured / vulnerable services
|
* [SSO / authentication layer]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/) to protect unsecured / vulnerable services
|
||||||
* [Automated backup](https://geek-cookbook.funkypenguin.co.nz/)recipes/elkarbackup/) of configuration and data
|
* [Automated backup]https://geek-cookbook.funkypenguin.co.nz/recipes/elkarbackup/) of configuration and data
|
||||||
* [Monitoring and metrics](https://geek-cookbook.funkypenguin.co.nz/)recipes/swarmprom/) collection, graphing and alerting
|
* [Monitoring and metrics]https://geek-cookbook.funkypenguin.co.nz/recipes/swarmprom/) collection, graphing and alerting
|
||||||
|
|
||||||
Recent updates and additions are posted on the [CHANGELOG](https://geek-cookbook.funkypenguin.co.nz/)CHANGELOG/), and there's a friendly community of like-minded geeks in the [Discord server](http://chat.funkypenguin.co.nz).
|
Recent updates and additions are posted on the [CHANGELOG]https://geek-cookbook.funkypenguin.co.nz/CHANGELOG/), and there's a friendly community of like-minded geeks in the [Discord server](http://chat.funkypenguin.co.nz).
|
||||||
|
|
||||||
## Who is this for?
|
## Who is this for?
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ So if you're familiar enough with the concepts above, and you've done self-hosti
|
|||||||
|
|
||||||
## What have you done for me lately? (CHANGELOG)
|
## What have you done for me lately? (CHANGELOG)
|
||||||
|
|
||||||
Check out recent change at [CHANGELOG](https://geek-cookbook.funkypenguin.co.nz/)CHANGELOG/)
|
Check out recent change at [CHANGELOG]https://geek-cookbook.funkypenguin.co.nz/CHANGELOG/)
|
||||||
|
|
||||||
## What do you want from me?
|
## What do you want from me?
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
IMO, the easiest Kubernetes cloud provider to experiment with is [DigitalOcean](https://m.do.co/c/e33b78ad621b) (_this is a referral link_). I've included instructions below to start a basic cluster.
|
IMO, the easiest Kubernetes cloud provider to experiment with is [DigitalOcean](https://m.do.co/c/e33b78ad621b) (_this is a referral link_). I've included instructions below to start a basic cluster.
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean.jpg)
|
![Kubernetes on Digital Ocean]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean.jpg)
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
@@ -15,27 +15,27 @@ IMO, the easiest Kubernetes cloud provider to experiment with is [DigitalOcean](
|
|||||||
|
|
||||||
Create a project, and then from your project page, click **Manage** -> **Kubernetes (LTD)** in the left-hand panel:
|
Create a project, and then from your project page, click **Manage** -> **Kubernetes (LTD)** in the left-hand panel:
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-1.png)
|
![Kubernetes on Digital Ocean Screenshot #1]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-1.png)
|
||||||
|
|
||||||
Until DigitalOcean considers their Kubernetes offering to be "production ready", you'll need the additional step of clicking on **Enable Limited Access**:
|
Until DigitalOcean considers their Kubernetes offering to be "production ready", you'll need the additional step of clicking on **Enable Limited Access**:
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-2.png)
|
![Kubernetes on Digital Ocean Screenshot #2]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-2.png)
|
||||||
|
|
||||||
The _Enable Limited Access_ button changes to read _Create a Kubernetes Cluster_ . Cleeeek it:
|
The _Enable Limited Access_ button changes to read _Create a Kubernetes Cluster_ . Cleeeek it:
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-3.png)
|
![Kubernetes on Digital Ocean Screenshot #3]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-3.png)
|
||||||
|
|
||||||
When prompted, choose some defaults for your first node pool (_your pool of "compute" resources for your cluster_), and give it a name. In more complex deployments, you can use this concept of "node pools" to run certain applications (_like an inconsequential nightly batch job_) on a particular class of compute instance (_such as cheap, preemptible instances_)
|
When prompted, choose some defaults for your first node pool (_your pool of "compute" resources for your cluster_), and give it a name. In more complex deployments, you can use this concept of "node pools" to run certain applications (_like an inconsequential nightly batch job_) on a particular class of compute instance (_such as cheap, preemptible instances_)
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-4.png)
|
![Kubernetes on Digital Ocean Screenshot #4]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-4.png)
|
||||||
|
|
||||||
That's it! Have a sip of your , a bite of your :cheese:, and wait for your cluster to build. While you wait, follow the instructions to setup kubectl (if you don't already have it)
|
That's it! Have a sip of your , a bite of your :cheese:, and wait for your cluster to build. While you wait, follow the instructions to setup kubectl (if you don't already have it)
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-5.png)
|
![Kubernetes on Digital Ocean Screenshot #5]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-5.png)
|
||||||
|
|
||||||
DigitalOcean will provide you with a "kubeconfig" file to use to access your cluster. It's at the bottom of the page (_illustrated below_), and easy to miss (_in my experience_).
|
DigitalOcean will provide you with a "kubeconfig" file to use to access your cluster. It's at the bottom of the page (_illustrated below_), and easy to miss (_in my experience_).
|
||||||
|
|
||||||
images/kubernetes-on-digitalocean-screenshot-6.png)
|
![Kubernetes on Digital Ocean Screenshot #6]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-on-digitalocean-screenshot-6.png)
|
||||||
|
|
||||||
## Release the kubectl!
|
## Release the kubectl!
|
||||||
|
|
||||||
@@ -72,13 +72,13 @@ That's it. You have a beautiful new kubernetes cluster ready for some action!
|
|||||||
|
|
||||||
Still with me? Good. Move on to creating your own external load balancer..
|
Still with me? Good. Move on to creating your own external load balancer..
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* Cluster (this page) - Setup a basic cluster
|
* Cluster (this page) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) - Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) - Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Under this design, the only inbound connections we're permitting to our Kubernet
|
|||||||
### Network Flows
|
### Network Flows
|
||||||
|
|
||||||
* HTTPS (TCP 443) : Serves individual docker containers via SSL-encrypted reverse proxy (_Traefik_)
|
* HTTPS (TCP 443) : Serves individual docker containers via SSL-encrypted reverse proxy (_Traefik_)
|
||||||
* Individual additional ports we choose to expose for specific recipes (_i.e., port 8443 for [MQTT](https://geek-cookbook.funkypenguin.co.nz/)recipes/mqtt/)_)
|
* Individual additional ports we choose to expose for specific recipes (_i.e., port 8443 for [MQTT]https://geek-cookbook.funkypenguin.co.nz/recipes/mqtt/)_)
|
||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ We use a phone-home container, which calls a simple webhook on our haproxy VM, a
|
|||||||
|
|
||||||
Here's a high-level diagram:
|
Here's a high-level diagram:
|
||||||
|
|
||||||
images/kubernetes-cluster-design.png)
|
![Kubernetes Design]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-cluster-design.png)
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ In the diagram, we have a Kubernetes cluster comprised of 3 nodes. You'll notice
|
|||||||
|
|
||||||
Our nodes are partitioned into several namespaces, which logically separate our individual recipes. (_I.e., allowing both a "gitlab" and a "nextcloud" namespace to include a service named "db", which would be challenging without namespaces_)
|
Our nodes are partitioned into several namespaces, which logically separate our individual recipes. (_I.e., allowing both a "gitlab" and a "nextcloud" namespace to include a service named "db", which would be challenging without namespaces_)
|
||||||
|
|
||||||
Outside of our cluster (_could be anywhere on the internet_) is a single VM servicing as a load-balancer, running HAProxy and a webhook service. This load-balancer is described in detail, [in its own section](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/), but what's important up-front is that this VM is the **only element of the design for which we need to provide a fixed IP address**.
|
Outside of our cluster (_could be anywhere on the internet_) is a single VM servicing as a load-balancer, running HAProxy and a webhook service. This load-balancer is described in detail, [in its own section]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/), but what's important up-front is that this VM is the **only element of the design for which we need to provide a fixed IP address**.
|
||||||
|
|
||||||
### 1 : The mosquitto pod
|
### 1 : The mosquitto pod
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ The phone-home container calls the webhook, and tells HAProxy to listen on port
|
|||||||
|
|
||||||
### 2 : The Traefik Ingress
|
### 2 : The Traefik Ingress
|
||||||
|
|
||||||
In the "default" namespace, we have a Traefik "Ingress Controller". An Ingress controller is a way to use a single port (_say, 443_) plus some intelligence (_say, a defined mapping of URLs to services_) to route incoming requests to the appropriate containers (_via services_). Basically, the Trafeik ingress does what [Traefik does for us under Docker Swarm](https://geek-cookbook.funkypenguin.co.nz/)docker-ha-swarm/traefik/).
|
In the "default" namespace, we have a Traefik "Ingress Controller". An Ingress controller is a way to use a single port (_say, 443_) plus some intelligence (_say, a defined mapping of URLs to services_) to route incoming requests to the appropriate containers (_via services_). Basically, the Trafeik ingress does what [Traefik does for us under Docker Swarm]https://geek-cookbook.funkypenguin.co.nz/docker-ha-swarm/traefik/).
|
||||||
|
|
||||||
What's happening in the diagram is that a phone-home pod is tied to the traefik pod using affinity, so that both containers will be executed on the same host. Again, the phone-home container calls a webhook on the HAProxy VM, auto-configuring HAproxy to send any HTTPs traffic to its calling address and customer NodePort port number.
|
What's happening in the diagram is that a phone-home pod is tied to the traefik pod using affinity, so that both containers will be executed on the same host. Again, the phone-home container calls a webhook on the HAProxy VM, auto-configuring HAproxy to send any HTTPs traffic to its calling address and customer NodePort port number.
|
||||||
|
|
||||||
@@ -120,10 +120,10 @@ Finally, the DNS for all externally-accessible services is pointed to the IP of
|
|||||||
|
|
||||||
Still with me? Good. Move on to creating your cluster!
|
Still with me? Good. Move on to creating your cluster!
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* Design (this page) - How does it fit together?
|
* Design (this page) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) - Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) - Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
@@ -6,7 +6,7 @@ After all, DIY its in our DNA.
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. Basic knowledge of Kubernetes terms (Will come in handy) [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start)
|
1. Basic knowledge of Kubernetes terms (Will come in handy) [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start)
|
||||||
2. Some Linux machines (Depends on what recipe you follow)
|
2. Some Linux machines (Depends on what recipe you follow)
|
||||||
|
|
||||||
## Minikube
|
## Minikube
|
||||||
@@ -118,7 +118,7 @@ From your PC,run `ssh-keygen` to generate a public and private key pair
|
|||||||
```sh
|
```sh
|
||||||
$ ssh-keygen
|
$ ssh-keygen
|
||||||
Generating public/private rsa key pair.
|
Generating public/private rsa key pair.
|
||||||
Enter file in which to save the key (https://geek-cookbook.funkypenguin.co.nz/)home/thomas/.ssh/id_rsa): [enter]
|
Enter file in which to save the key https://geek-cookbook.funkypenguin.co.nz/home/thomas/.ssh/id_rsa): [enter]
|
||||||
Enter passphrase (empty for no passphrase): [password]
|
Enter passphrase (empty for no passphrase): [password]
|
||||||
Enter same passphrase again: [password]
|
Enter same passphrase again: [password]
|
||||||
Your identification has been saved in /home/thomas/.ssh/id_rsa.
|
Your identification has been saved in /home/thomas/.ssh/id_rsa.
|
||||||
@@ -290,13 +290,13 @@ This section is WIP, instead, try using the K3S guide above
|
|||||||
|
|
||||||
Now that you have wasted half a lifetime on installing your very own cluster, you can install more to it. Like a load balancer!
|
Now that you have wasted half a lifetime on installing your very own cluster, you can install more to it. Like a load balancer!
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* Cluster (this page) - Setup a basic cluster
|
* Cluster (this page) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) - Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) - Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
|
|
||||||
## About your Chef
|
## About your Chef
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
[Helm](https://github.com/helm/helm) is a tool for managing Kubernetes "charts" (_think of it as an uber-polished collection of recipes_). Using one simple command, and by tweaking one simple config file (values.yaml), you can launch a complex stack. There are many publicly available helm charts for popular packages like [elasticsearch](https://github.com/helm/charts/tree/master/stable/elasticsearch), [ghost](https://github.com/helm/charts/tree/master/stable/ghost), [grafana](https://github.com/helm/charts/tree/master/stable/grafana), [mediawiki](https://github.com/helm/charts/tree/master/stable/mediawiki), etc.
|
[Helm](https://github.com/helm/helm) is a tool for managing Kubernetes "charts" (_think of it as an uber-polished collection of recipes_). Using one simple command, and by tweaking one simple config file (values.yaml), you can launch a complex stack. There are many publicly available helm charts for popular packages like [elasticsearch](https://github.com/helm/charts/tree/master/stable/elasticsearch), [ghost](https://github.com/helm/charts/tree/master/stable/ghost), [grafana](https://github.com/helm/charts/tree/master/stable/grafana), [mediawiki](https://github.com/helm/charts/tree/master/stable/mediawiki), etc.
|
||||||
|
|
||||||
images/kubernetes-helm.png)
|
![Kubernetes Snapshots]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-helm.png)
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Given enough interest, I may provide a helm-compatible version of the pre-mix repository for [supporters](https://geek-cookbook.funkypenguin.co.nz/)support/). [Hit me up](https://geek-cookbook.funkypenguin.co.nz/)whoami/#contact-me) if you're interested!
|
Given enough interest, I may provide a helm-compatible version of the pre-mix repository for [supporters]https://geek-cookbook.funkypenguin.co.nz/support/). [Hit me up]https://geek-cookbook.funkypenguin.co.nz/whoami/#contact-me) if you're interested!
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/)
|
||||||
2. Geek-Fu required : (_easy - copy and paste_)
|
2. Geek-Fu required : (_easy - copy and paste_)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -41,19 +41,19 @@ including installing pre-releases.
|
|||||||
|
|
||||||
After installing Helm, initialise it by running ```helm init```. This will install "tiller" pod into your cluster, which works with the locally installed helm binaries to launch/update/delete Kubernetes elements based on helm charts.
|
After installing Helm, initialise it by running ```helm init```. This will install "tiller" pod into your cluster, which works with the locally installed helm binaries to launch/update/delete Kubernetes elements based on helm charts.
|
||||||
|
|
||||||
That's it - not very exciting I know, but we'll need helm for the next and final step in building our Kubernetes cluster - deploying the [Traefik ingress controller (via helm)](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/)!
|
That's it - not very exciting I know, but we'll need helm for the next and final step in building our Kubernetes cluster - deploying the [Traefik ingress controller (via helm)]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/)!
|
||||||
|
|
||||||
## Move on..
|
## Move on..
|
||||||
|
|
||||||
Still with me? Good. Move on to understanding Helm charts...
|
Still with me? Good. Move on to understanding Helm charts...
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* Helm (this page) - Uber-recipes from fellow geeks
|
* Helm (this page) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ See further examination of the problem and possible solutions in the [Kubernetes
|
|||||||
|
|
||||||
This recipe details a simple design to permit the exposure of as many ports as you like, on a single public IP, to a cluster of Kubernetes nodes running as many pods/containers as you need, with services exposed via NodePort.
|
This recipe details a simple design to permit the exposure of as many ports as you like, on a single public IP, to a cluster of Kubernetes nodes running as many pods/containers as you need, with services exposed via NodePort.
|
||||||
|
|
||||||
images/kubernetes-cluster-design.png)
|
![Kubernetes Design]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-cluster-design.png)
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/)
|
||||||
2. VM _outside_ of Kubernetes cluster, with a fixed IP address. Perhaps, on a [$5/month Digital Ocean Droplet](https://www.digitalocean.com/?refcode=e33b78ad621b).. (_yes, another referral link. Mooar for me!_)
|
2. VM _outside_ of Kubernetes cluster, with a fixed IP address. Perhaps, on a [$5/month Digital Ocean Droplet](https://www.digitalocean.com/?refcode=e33b78ad621b).. (_yes, another referral link. Mooar for me!_)
|
||||||
3. Geek-Fu required : (_complex - inline adjustments required_)
|
3. Geek-Fu required : (_complex - inline adjustments required_)
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 Started PO
|
|||||||
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 update-haproxy got matched
|
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 update-haproxy got matched
|
||||||
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 update-haproxy hook triggered successfully
|
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 update-haproxy hook triggered successfully
|
||||||
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 Completed 200 OK in 2.123921ms
|
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 Completed 200 OK in 2.123921ms
|
||||||
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 executing /etc/webhook/update-haproxy.sh (https://geek-cookbook.funkypenguin.co.nz/)etc/webhook/update-haproxy.sh) with arguments ["/etc/webhook/update-haproxy.sh" "unifi-adoption" "8080" "30808" "35.244.91.178" "add"] and environment [] using /etc/webhook as cwd
|
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 executing /etc/webhook/update-haproxy.sh https://geek-cookbook.funkypenguin.co.nz/etc/webhook/update-haproxy.sh) with arguments ["/etc/webhook/update-haproxy.sh" "unifi-adoption" "8080" "30808" "35.244.91.178" "add"] and environment [] using /etc/webhook as cwd
|
||||||
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 command output: Configuration file is valid
|
Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 command output: Configuration file is valid
|
||||||
<HAProxy restarts>
|
<HAProxy restarts>
|
||||||
```
|
```
|
||||||
@@ -320,13 +320,13 @@ Feb 06 23:04:28 haproxy2 webhook[1433]: [webhook] 2019/02/06 23:04:28 command ou
|
|||||||
|
|
||||||
Still with me? Good. Move on to setting up an ingress SSL terminating proxy with Traefik..
|
Still with me? Good. Move on to setting up an ingress SSL terminating proxy with Traefik..
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* Load Balancer (this page) - Setup inbound access
|
* Load Balancer (this page) - Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Before we get carried away creating pods, services, deployments etc, let's spare a thought for _security_... (_DevSecPenguinOps, here we come!_). In the context of this recipe, security refers to safe-guarding your data from accidental loss, as well as malicious impact.
|
Before we get carried away creating pods, services, deployments etc, let's spare a thought for _security_... (_DevSecPenguinOps, here we come!_). In the context of this recipe, security refers to safe-guarding your data from accidental loss, as well as malicious impact.
|
||||||
|
|
||||||
Under [Docker Swarm](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/), we used [shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph/) with [Duplicity](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity/) (or [ElkarBackup](recipes/elkarbackup/)) to automate backups of our persistent data.
|
Under [Docker Swarm]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/), we used [shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/) with [Duplicity]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/) (or [ElkarBackup](recipes/elkarbackup/)) to automate backups of our persistent data.
|
||||||
|
|
||||||
Now that we're playing in the deep end with Kubernetes, we'll need a Cloud-native backup solution...
|
Now that we're playing in the deep end with Kubernetes, we'll need a Cloud-native backup solution...
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ This recipe employs a clever tool ([miracle2k/k8s-snapshots](https://github.com/
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) with either AWS or GKE (currently, but apparently other providers are [easy to implement](https://github.com/miracle2k/k8s-snapshots/blob/master/k8s_snapshots/backends/abstract.py))
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) with either AWS or GKE (currently, but apparently other providers are [easy to implement](https://github.com/miracle2k/k8s-snapshots/blob/master/k8s_snapshots/backends/abstract.py))
|
||||||
2. Geek-Fu required : (_medium - minor adjustments may be required_)
|
2. Geek-Fu required : (_medium - minor adjustments may be required_)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -114,7 +114,7 @@ spec:
|
|||||||
|
|
||||||
And here's what my snapshot list looks like after a few days:
|
And here's what my snapshot list looks like after a few days:
|
||||||
|
|
||||||
images/kubernetes-snapshots.png)
|
![Kubernetes Snapshots]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-snapshots.png)
|
||||||
|
|
||||||
### Snapshot a non-Kubernetes volume (optional)
|
### Snapshot a non-Kubernetes volume (optional)
|
||||||
|
|
||||||
@@ -165,13 +165,13 @@ EOF
|
|||||||
|
|
||||||
Still with me? Good. Move on to understanding Helm charts...
|
Still with me? Good. Move on to understanding Helm charts...
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) Setup inbound access
|
||||||
* Snapshots (this page) - Automatically backup your persistent data
|
* Snapshots (this page) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -44,24 +44,24 @@ Let's talk some definitions. Kubernetes.io provides a [glossary](https://kuberne
|
|||||||
|
|
||||||
## Mm.. maaaaybe, how do I start?
|
## Mm.. maaaaybe, how do I start?
|
||||||
|
|
||||||
If you're like me, and you learn by doing, either play with the examples at https://labs.play-with-k8s.com/, or jump right in by setting up a Google Cloud trial (_you get $300 credit for 12 months_), or a small cluster on [Digital Ocean](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/digitalocean/).
|
If you're like me, and you learn by doing, either play with the examples at https://labs.play-with-k8s.com/, or jump right in by setting up a Google Cloud trial (_you get $300 credit for 12 months_), or a small cluster on [Digital Ocean]https://geek-cookbook.funkypenguin.co.nz/kubernetes/digitalocean/).
|
||||||
|
|
||||||
If you're the learn-by-watching type, just search for "Kubernetes introduction video". There's a **lot** of great content available.
|
If you're the learn-by-watching type, just search for "Kubernetes introduction video". There's a **lot** of great content available.
|
||||||
|
|
||||||
## I'm ready, gimme some recipes!
|
## I'm ready, gimme some recipes!
|
||||||
|
|
||||||
As of Jan 2019, our first (_and only!_) Kubernetes recipe is a WIP for the Mosquitto [MQTT](https://geek-cookbook.funkypenguin.co.nz/)recipes/mqtt/) broker. It's a good, simple starter if you're into home automation (_shoutout to [Home Assistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/homeassistant/)!_), since it only requires a single container, and a simple NodePort service.
|
As of Jan 2019, our first (_and only!_) Kubernetes recipe is a WIP for the Mosquitto [MQTT]https://geek-cookbook.funkypenguin.co.nz/recipes/mqtt/) broker. It's a good, simple starter if you're into home automation (_shoutout to [Home Assistant]https://geek-cookbook.funkypenguin.co.nz/recipes/homeassistant/)!_), since it only requires a single container, and a simple NodePort service.
|
||||||
|
|
||||||
I'd love for your [feedback](https://geek-cookbook.funkypenguin.co.nz/)support/) on the Kubernetes recipes, as well as suggestions for what to add next. The current rough plan is to replicate the Chef's Favorites recipes (_see the left-hand panel_) into Kubernetes first.
|
I'd love for your [feedback]https://geek-cookbook.funkypenguin.co.nz/support/) on the Kubernetes recipes, as well as suggestions for what to add next. The current rough plan is to replicate the Chef's Favorites recipes (_see the left-hand panel_) into Kubernetes first.
|
||||||
|
|
||||||
## Move on..
|
## Move on..
|
||||||
|
|
||||||
Still with me? Good. Move on to reviewing the design elements
|
Still with me? Good. Move on to reviewing the design elements
|
||||||
|
|
||||||
* Start (this page) - Why Kubernetes?
|
* Start (this page) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) - Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) - Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* [Traefik](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) - Traefik Ingress via Helm
|
* [Traefik]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) - Traefik Ingress via Helm
|
||||||
@@ -4,8 +4,8 @@ This recipe utilises the [traefik helm chart](https://github.com/helm/charts/tre
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/)
|
||||||
2. [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) installed and initialised in your cluster
|
2. [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) installed and initialised in your cluster
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ metrics:
|
|||||||
|
|
||||||
### Prepare phone-home pod
|
### Prepare phone-home pod
|
||||||
|
|
||||||
[Remember](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) how our load balancer design ties a phone-home container to another container using a pod, so that the phone-home container can tell our external load balancer (_using a webhook_) where to send our traffic?
|
[Remember]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) how our load balancer design ties a phone-home container to another container using a pod, so that the phone-home container can tell our external load balancer (_using a webhook_) where to send our traffic?
|
||||||
|
|
||||||
Since we deployed Traefik using helm, we need to take a slightly different approach, so we'll create a pod with an affinity which ensures it runs on the same host which runs the Traefik container (_more precisely, containers with the label app=traefik_).
|
Since we deployed Traefik using helm, we need to take a slightly different approach, so we'll create a pod with an affinity which ensures it runs on the same host which runs the Traefik container (_more precisely, containers with the label app=traefik_).
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ You can confirm this by running ```kubectl get pods```, and even watch the traef
|
|||||||
|
|
||||||
### Deploy the phone-home pod
|
### Deploy the phone-home pod
|
||||||
|
|
||||||
We still can't access traefik yet, since it's listening on port 30443 on node it happens to be running on. We'll launch our phone-home pod, to tell our [load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) where to send incoming traffic on port 443.
|
We still can't access traefik yet, since it's listening on port 30443 on node it happens to be running on. We'll launch our phone-home pod, to tell our [load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) where to send incoming traffic on port 443.
|
||||||
|
|
||||||
Optionally, on your loadbalancer VM, run ```journalctl -u webhook -f``` to watch for the container calling the webhook.
|
Optionally, on your loadbalancer VM, run ```journalctl -u webhook -f``` to watch for the container calling the webhook.
|
||||||
|
|
||||||
@@ -191,22 +191,22 @@ helm upgrade --values values.yml traefik stable/traefik --recreate-pods
|
|||||||
We're doneburgers! We now have all the pieces to safely deploy recipes into our Kubernetes cluster, knowing:
|
We're doneburgers! We now have all the pieces to safely deploy recipes into our Kubernetes cluster, knowing:
|
||||||
|
|
||||||
1. Our HTTPS traffic will be secured with LetsEncrypt (thanks Traefik!)
|
1. Our HTTPS traffic will be secured with LetsEncrypt (thanks Traefik!)
|
||||||
2. Our non-HTTPS ports (like UniFi adoption) will be load-balanced using an free-to-scale [external load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/)
|
2. Our non-HTTPS ports (like UniFi adoption) will be load-balanced using an free-to-scale [external load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/)
|
||||||
3. Our persistent data will be [automatically backed up](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/)
|
3. Our persistent data will be [automatically backed up]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/)
|
||||||
|
|
||||||
Here's a recap:
|
Here's a recap:
|
||||||
|
|
||||||
* [Start](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/start/) - Why Kubernetes?
|
* [Start]https://geek-cookbook.funkypenguin.co.nz/kubernetes/start/) - Why Kubernetes?
|
||||||
* [Design](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) - How does it fit together?
|
* [Design]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) - How does it fit together?
|
||||||
* [Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/cluster/) - Setup a basic cluster
|
* [Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/cluster/) - Setup a basic cluster
|
||||||
* [Load Balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/) Setup inbound access
|
* [Load Balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/) Setup inbound access
|
||||||
* [Snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) - Automatically backup your persistent data
|
* [Snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) - Automatically backup your persistent data
|
||||||
* [Helm](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/helm/) - Uber-recipes from fellow geeks
|
* [Helm]https://geek-cookbook.funkypenguin.co.nz/kubernetes/helm/) - Uber-recipes from fellow geeks
|
||||||
* Traefik (this page) - Traefik Ingress via Helm
|
* Traefik (this page) - Traefik Ingress via Helm
|
||||||
|
|
||||||
## Where to next?
|
## Where to next?
|
||||||
|
|
||||||
I'll be adding more Kubernetes versions of existing recipes soon. Check out the [MQTT](https://geek-cookbook.funkypenguin.co.nz/)recipes/mqtt/) recipe for a start!
|
I'll be adding more Kubernetes versions of existing recipes soon. Check out the [MQTT]https://geek-cookbook.funkypenguin.co.nz/recipes/mqtt/) recipe for a start!
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ Tools included in the AutoPirate stack are:
|
|||||||
* **[Mylar](https://github.com/evilhero/mylar)** : finds, downloads and manages comic books
|
* **[Mylar](https://github.com/evilhero/mylar)** : finds, downloads and manages comic books
|
||||||
* **[Headphones](https://github.com/rembo10/headphones)** : finds, downloads and manages music
|
* **[Headphones](https://github.com/rembo10/headphones)** : finds, downloads and manages music
|
||||||
* **[Lazy Librarian](https://github.com/itsmegb/LazyLibrarian)** : finds, downloads and manages ebooks
|
* **[Lazy Librarian](https://github.com/itsmegb/LazyLibrarian)** : finds, downloads and manages ebooks
|
||||||
* **[Ombi](https://github.com/tidusjar/Ombi)** : provides an interface to request additions to a [Plex](https://geek-cookbook.funkypenguin.co.nz/)recipes/plex/)/[Emby](https://geek-cookbook.funkypenguin.co.nz/)recipes/emby/) library using the above tools
|
* **[Ombi](https://github.com/tidusjar/Ombi)** : provides an interface to request additions to a [Plex]https://geek-cookbook.funkypenguin.co.nz/recipes/plex/)/[Emby]https://geek-cookbook.funkypenguin.co.nz/recipes/emby/) library using the above tools
|
||||||
* **[Jackett](https://github.com/Jackett/Jackett)** : Provides an local, caching, API-based interface to torrent trackers, simplifying the way your tools search for torrents.
|
* **[Jackett](https://github.com/Jackett/Jackett)** : Provides an local, caching, API-based interface to torrent trackers, simplifying the way your tools search for torrents.
|
||||||
|
|
||||||
Since this recipe is so long, and so many of the tools are optional to the final result (_i.e., if you're not interested in comics, you won't want Mylar_), I've described each individual tool on its own sub-recipe page (_below_), even though most of them are deployed very similarly.
|
Since this recipe is so long, and so many of the tools are optional to the final result (_i.e., if you're not interested in comics, you won't want Mylar_), I've described each individual tool on its own sub-recipe page (_below_), even though most of them are deployed very similarly.
|
||||||
@@ -32,8 +32,8 @@ Since this recipe is so long, and so many of the tools are optional to the final
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/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
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ Create a user to "own" the above directories, and note the uid and gid of the cr
|
|||||||
|
|
||||||
### Secure public access
|
### Secure public access
|
||||||
|
|
||||||
What you'll quickly notice about this recipe is that __every__ web interface is protected by an [OAuth proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/).
|
What you'll quickly notice about this recipe is that __every__ web interface is protected by an [OAuth proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/).
|
||||||
|
|
||||||
Why? Because these tools are developed by a handful of volunteer developers who are focused on adding features, not necessarily implementing robust security. Most users wouldn't expose these tools directly to the internet, so the tools have rudimentary (if any) access control.
|
Why? Because these tools are developed by a handful of volunteer developers who are focused on adding features, not necessarily implementing robust security. Most users wouldn't expose these tools directly to the internet, so the tools have rudimentary (if any) access control.
|
||||||
|
|
||||||
@@ -105,22 +105,22 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
#### Assemble the tools..
|
#### Assemble the tools..
|
||||||
|
|
||||||
Now work your way through the list of tools below, adding whichever tools your want to use, and finishing with the **end** section:
|
Now work your way through the list of tools below, adding whichever tools your want to use, and finishing with the **end** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget/)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget/)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's the conclusion to the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's the conclusion to the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
### Launch Autopirate stack
|
### Launch Autopirate stack
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and organising your media
|
hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and organising your media
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Headphones
|
# Headphones
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Headphones in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Headphones in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
headphones:
|
headphones:
|
||||||
@@ -51,23 +51,23 @@ headphones_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* Headphones (this page)
|
* Headphones (this page)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Heimdall
|
# Heimdall
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
Heimdall is an elegant solution to organise all your web applications. Its dedicated to this purpose so you wont lose your links in a sea of bookmarks.
|
Heimdall is an elegant solution to organise all your web applications. Its dedicated to this purpose so you wont lose your links in a sea of bookmarks.
|
||||||
|
|
||||||
Heimdall provides a single URL to manage access to all of your autopirate tools, and includes "enhanced" (_i.e., display stats within Heimdall without launching the app_) access to [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md), [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/), and friends.
|
Heimdall provides a single URL to manage access to all of your autopirate tools, and includes "enhanced" (_i.e., display stats within Heimdall without launching the app_) access to [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md), [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/), and friends.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Heimdall in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Heimdall in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
heimdall:
|
heimdall:
|
||||||
@@ -57,23 +57,23 @@ To include Heimdall in your [AutoPirate](https://geek-cookbook.funkypenguin.co.n
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylarr/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylarr/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* Heimdall (this page)
|
* Heimdall (this page)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Jackett
|
# Jackett
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ This allows for getting recent uploads (like RSS) and performing searches. Jacke
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Jackett in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Jackett in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
jackett:
|
jackett:
|
||||||
@@ -51,23 +51,23 @@ jackett_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylarr/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylarr/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* Jackett (this page)
|
* Jackett (this page)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# LazyLibrarian
|
# LazyLibrarian
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include LazyLibrarian in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include LazyLibrarian in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
lazylibrarian:
|
lazylibrarian:
|
||||||
@@ -63,26 +63,26 @@ calibre-server:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* Lazy Librarian (this page)
|
* Lazy Librarian (this page)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. The calibre-server container co-exists within the Lazy Librarian (LL) containers so that LL can automatically add a book to Calibre using the calibre-server interface. The calibre library can then be properly viewed using the [calibre-web](https://geek-cookbook.funkypenguin.co.nz/)recipes/calibre-web) recipe.
|
1. The calibre-server container co-exists within the Lazy Librarian (LL) containers so that LL can automatically add a book to Calibre using the calibre-server interface. The calibre library can then be properly viewed using the [calibre-web]https://geek-cookbook.funkypenguin.co.nz/recipes/calibre-web) recipe.
|
||||||
2. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
2. In many cases, tools will integrate with each other. I.e., Radarr needs to talk to SABnzbd and NZBHydra, Ombi needs to talk to Radarr, etc. Since each tool runs within the stack under its own name, just refer to each tool by name (i.e. "radarr"), and docker swarm will resolve the name to the appropriate container. You can identify the tool-specific port by looking at the docker-compose service definition.
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and organising your media
|
hero: AutoPirate - A fully-featured recipe to automate finding, downloading, and organising your media
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Lidarr
|
# Lidarr
|
||||||
|
|
||||||
[Lidarr](https://lidarr.audio/) is an automated music downloader for NZB and Torrent. It performs the same function as [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones), but is written using the same(ish) codebase as [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/) and [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr). It's blazingly fast, and includes beautiful album/artist art. Lidarr supports [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/), [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget/), Transmission, Torrent, Deluge and Blackhole (_just like Sonarr / Radarr_)
|
[Lidarr](https://lidarr.audio/) is an automated music downloader for NZB and Torrent. It performs the same function as [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones), but is written using the same(ish) codebase as [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/) and [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr). It's blazingly fast, and includes beautiful album/artist art. Lidarr supports [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/), [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget/), Transmission, Torrent, Deluge and Blackhole (_just like Sonarr / Radarr_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Lidarr in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Lidarr in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
lidarr:
|
lidarr:
|
||||||
@@ -51,24 +51,24 @@ lidarr_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* Lidarr (this page)
|
* Lidarr (this page)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Mylar
|
# Mylar
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Mylar in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Mylar in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
mylar:
|
mylar:
|
||||||
@@ -49,23 +49,23 @@ mylar_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* Mylar (this page)
|
* Mylar (this page)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# NZBGet
|
# NZBGet
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
NZBGet performs the same function as [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md) (_downloading content from Usenet servers_), but it's lightweight and fast(er), written in C++ (_as opposed to Python_).
|
NZBGet performs the same function as [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md) (_downloading content from Usenet servers_), but it's lightweight and fast(er), written in C++ (_as opposed to Python_).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include NZBGet in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack
|
To include NZBGet in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack
|
||||||
(_The only reason you **wouldn't** use NZBGet, would be if you were using [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/) instead_), include the following in your autopirate.yml stack definition file:
|
(_The only reason you **wouldn't** use NZBGet, would be if you were using [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/) instead_), include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy```
|
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy```
|
||||||
@@ -56,23 +56,23 @@ nzbget_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* NZBGet (this page)
|
* NZBGet (this page)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
|
|
||||||
# NZBHydra
|
# NZBHydra
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include NZBHydra in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include NZBHydra in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
nzbhydra:
|
nzbhydra:
|
||||||
@@ -55,23 +55,23 @@ nzbhydra_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* NZBHydra (this page)
|
* NZBHydra (this page)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
|
|
||||||
# NZBHydra 2
|
# NZBHydra 2
|
||||||
@@ -7,22 +7,22 @@
|
|||||||
[NZBHydra 2](https://github.com/theotherp/nzbhydra2) is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as an indexer source for tools like Sonarr, Radarr or CouchPotato.
|
[NZBHydra 2](https://github.com/theotherp/nzbhydra2) is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as an indexer source for tools like Sonarr, Radarr or CouchPotato.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
NZBHydra 2 is a complete rewrite of [NZBHydra (1)](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhybra/). It's currently in Beta. It works mostly fine but some functions might not be completely done and incompatibilities with some tools might still exist. You might want to run both in parallel for migration / testing purposes, but ultimately you'll probably want to switch over to NZBHydra 2 exclusively.
|
NZBHydra 2 is a complete rewrite of [NZBHydra (1)]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhybra/). It's currently in Beta. It works mostly fine but some functions might not be completely done and incompatibilities with some tools might still exist. You might want to run both in parallel for migration / testing purposes, but ultimately you'll probably want to switch over to NZBHydra 2 exclusively.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Features include:
|
Features include:
|
||||||
|
|
||||||
* Searches Anizb, BinSearch, NZBIndex and any newznab compatible indexers. Merges all results, filters them by a number of configurable restrictions, recognizes duplicates and returns them all in one place
|
* Searches Anizb, BinSearch, NZBIndex and any newznab compatible indexers. Merges all results, filters them by a number of configurable restrictions, recognizes duplicates and returns them all in one place
|
||||||
* Add results to [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget/) or [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/)
|
* Add results to [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget/) or [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/)
|
||||||
* Support for all relevant media IDs (IMDB, TMDB, TVDB, TVRage, TVMaze) and conversion between them
|
* Support for all relevant media IDs (IMDB, TMDB, TVDB, TVRage, TVMaze) and conversion between them
|
||||||
* Query generation, meaning a query will be generated if only a media ID is provided in the search and the indexer doesn't support the ID or if no results were found
|
* Query generation, meaning a query will be generated if only a media ID is provided in the search and the indexer doesn't support the ID or if no results were found
|
||||||
* Compatible with [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/), [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/), [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md), [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/), nzb360, CouchPotato, [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/), [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/), Sick Beard, [Jackett/Cardigann](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/), Watcher, etc.
|
* Compatible with [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/), [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/), [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md), [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/), nzb360, CouchPotato, [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/), [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/), Sick Beard, [Jackett/Cardigann]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/), Watcher, etc.
|
||||||
* Search and download history and extensive stats. E.g. indexer response times, download shares, NZB age, etc.
|
* Search and download history and extensive stats. E.g. indexer response times, download shares, NZB age, etc.
|
||||||
* Authentication and multi-user support
|
* Authentication and multi-user support
|
||||||
* Automatic update of NZB download status by querying configured downloaders
|
* Automatic update of NZB download status by querying configured downloaders
|
||||||
* RSS support with configurable cache times
|
* RSS support with configurable cache times
|
||||||
* Torrent support (_Although I prefer [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/) for this_):
|
* Torrent support (_Although I prefer [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/) for this_):
|
||||||
* For GUI searches, allowing you to download torrents to a blackhole folder
|
* For GUI searches, allowing you to download torrents to a blackhole folder
|
||||||
* A separate Torznab compatible endpoint for API requests, allowing you to merge multiple trackers
|
* A separate Torznab compatible endpoint for API requests, allowing you to merge multiple trackers
|
||||||
* Extensive configurability
|
* Extensive configurability
|
||||||
@@ -31,7 +31,7 @@ Features include:
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include NZBHydra2 in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include NZBHydra2 in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
nzbhydra2:
|
nzbhydra2:
|
||||||
@@ -70,23 +70,23 @@ nzbhydra2_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* NZBHydra2 (this page)
|
* NZBHydra2 (this page)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Ombi
|
# Ombi
|
||||||
|
|
||||||
[Ombi](https://github.com/tidusjar/Ombi) is a useful addition to the [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack. Features include:
|
[Ombi](https://github.com/tidusjar/Ombi) is a useful addition to the [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack. Features include:
|
||||||
|
|
||||||
* Lets users request Movies and TV Shows (_whether it being the entire series, an entire season, or even single episodes._)
|
* Lets users request Movies and TV Shows (_whether it being the entire series, an entire season, or even single episodes._)
|
||||||
* Easily manage your requests
|
* Easily manage your requests
|
||||||
@@ -17,7 +17,7 @@ Automatically updates the status of requests when they are available on Plex/Emb
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Ombi in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Ombi in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
ombi:
|
ombi:
|
||||||
@@ -56,23 +56,23 @@ ombi_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* Ombi (this page)
|
* Ombi (this page)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Radarr
|
# Radarr
|
||||||
|
|
||||||
@@ -23,11 +23,11 @@
|
|||||||

|

|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Sonarr is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I forget it's there until I (reliably) receive an email with new and exciting updates
|
Sonarr is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I forget it's there until I (reliably) receive an email with new and exciting updates
|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Radarr in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Radarr in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
radarr:
|
radarr:
|
||||||
@@ -67,23 +67,23 @@ radarr_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* Radarr (this page)
|
* Radarr (this page)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# RTorrent / ruTorrent
|
# RTorrent / ruTorrent
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ When using a torrent client from behind NAT (_which swarm, by nature, is_), you
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include ruTorrent in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include ruTorrent in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
rtorrent:
|
rtorrent:
|
||||||
@@ -56,23 +56,23 @@ rtorrent_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* RTorrent (this page)
|
* RTorrent (this page)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# SABnzbd
|
# SABnzbd
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
SABnzbd is the workhorse of the stack. It takes .nzb files as input (_manually or from other [autopirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack tools_), then connects to your chosen Usenet provider, downloads all the individual binaries referenced by the .nzb, and then tests/repairs/combines/uncompresses them all into the final result - media files.
|
SABnzbd is the workhorse of the stack. It takes .nzb files as input (_manually or from other [autopirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack tools_), then connects to your chosen Usenet provider, downloads all the individual binaries referenced by the .nzb, and then tests/repairs/combines/uncompresses them all into the final result - media files.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
SABnzbd is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. It's not sexy, but it's consistent and reliable, and I enjoy the fruits of its labor near-daily.
|
SABnzbd is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. It's not sexy, but it's consistent and reliable, and I enjoy the fruits of its labor near-daily.
|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include SABnzbd in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack
|
To include SABnzbd in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack
|
||||||
(_The only reason you **wouldn't** use SABnzbd, would be if you were using [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md) instead_), include the following in your autopirate.yml stack definition file:
|
(_The only reason you **wouldn't** use SABnzbd, would be if you were using [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md) instead_), include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy```
|
I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy```
|
||||||
@@ -63,23 +63,23 @@ sabnzbd_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* SABnzbd (this page)
|
* SABnzbd (this page)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/)
|
* [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's a component of the [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
|
|
||||||
# Sonarr
|
# Sonarr
|
||||||
@@ -9,11 +9,11 @@
|
|||||||

|

|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Sonarr is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I forget it's there until I (reliably) receive an email with new and exciting updates
|
Sonarr is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I forget it's there until I (reliably) receive an email with new and exciting updates
|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Sonarr in your [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Sonarr in your [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
```
|
```
|
||||||
sonarr:
|
sonarr:
|
||||||
@@ -53,23 +53,23 @@ sonarr_proxy:
|
|||||||
|
|
||||||
## Assemble more tools..
|
## Assemble more tools..
|
||||||
|
|
||||||
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd.md)
|
* [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbget.md)
|
* [NZBGet]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/rtorrent/)
|
* [RTorrent]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/rtorrent/)
|
||||||
* Sonarr (this page)
|
* Sonarr (this page)
|
||||||
* [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/)
|
* [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/mylar/)
|
* [Mylar]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lazylibrarian/)
|
* [Lazy Librarian]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/headphones/)
|
* [Headphones]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/lidarr/)
|
* [Lidarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/)
|
* [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra2/)
|
* [NZBHydra2]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/ombi/)
|
* [Ombi]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/ombi/)
|
||||||
* [Jackett](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/jackett/)
|
* [Jackett]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/heimdall/)
|
* [Heimdall]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/heimdall/)
|
||||||
* [End](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/end/) (launch the stack)
|
* [End]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ Bitwarden is a free and open source password management solution for individuals
|
|||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information.
|
BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information.
|
||||||
|
|
||||||
A friendly middle ground between heavyweights like MediaWiki or Confluence and [Gollum](https://geek-cookbook.funkypenguin.co.nz/)recipes/gollum/), BookStack relies on a database backend (so searching and versioning is easy), but limits itself to a pre-defined, 3-tier structure (book, chapter, page). The result is a lightweight, approachable personal documentation stack, which includes search and Markdown editing.
|
A friendly middle ground between heavyweights like MediaWiki or Confluence and [Gollum]https://geek-cookbook.funkypenguin.co.nz/recipes/gollum/), BookStack relies on a database backend (so searching and versioning is easy), but limits itself to a pre-defined, 3-tier structure (book, chapter, page). The result is a lightweight, approachable personal documentation stack, which includes search and Markdown editing.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
I like to protect my public-facing web UIs with an [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy), ensuring that if an application bug (or a user misconfiguration) exposes the app to unplanned public scrutiny, I have a second layer of defense.
|
I like to protect my public-facing web UIs with an [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy), ensuring that if an application bug (or a user misconfiguration) exposes the app to unplanned public scrutiny, I have a second layer of defense.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -27,7 +27,7 @@ mkdir -p /var/data/runtime/bookstack/db
|
|||||||
|
|
||||||
### Prepare environment
|
### Prepare environment
|
||||||
|
|
||||||
Create bookstack.env, and populate with the following variables. Set the [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy) variables provided by your OAuth provider (if applicable.)
|
Create bookstack.env, and populate with the following variables. Set the [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy) variables provided by your OAuth provider (if applicable.)
|
||||||
|
|
||||||
```
|
```
|
||||||
# For oauth-proxy (optional)
|
# For oauth-proxy (optional)
|
||||||
@@ -127,7 +127,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ hero: Manage your ebook collection. Like a BOSS.
|
|||||||
|
|
||||||
# Calibre-Web
|
# Calibre-Web
|
||||||
|
|
||||||
The [AutoPirate](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/) recipe includes [Lazy Librarian](https://github.com/itsmegb/LazyLibrarian), a tool for tracking, finding, and downloading eBooks. However, after the eBooks are downloaded, Lazy Librarian is not much use for organising, tracking, and actually **reading** them.
|
The [AutoPirate]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) recipe includes [Lazy Librarian](https://github.com/itsmegb/LazyLibrarian), a tool for tracking, finding, and downloading eBooks. However, after the eBooks are downloaded, Lazy Librarian is not much use for organising, tracking, and actually **reading** them.
|
||||||
|
|
||||||
[Calibre-Web](https://github.com/janeczku/calibre-web) could be described as "_[Plex](https://geek-cookbook.funkypenguin.co.nz/)recipes/plex/) (or [Emby](https://geek-cookbook.funkypenguin.co.nz/)recipes/emby/)) for eBooks_" - it's a web-based interface to manage your eBook library, screenshot below:
|
[Calibre-Web](https://github.com/janeczku/calibre-web) could be described as "_[Plex]https://geek-cookbook.funkypenguin.co.nz/recipes/plex/) (or [Emby]https://geek-cookbook.funkypenguin.co.nz/recipes/emby/)) for eBooks_" - it's a web-based interface to manage your eBook library, screenshot below:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -23,8 +23,8 @@ Support for editing eBook metadata and deleting eBooks from Calibre library
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -42,7 +42,7 @@ Ensure that your Calibre library is accessible to the swarm (_i.e., exists on sh
|
|||||||
|
|
||||||
### Prepare environment
|
### Prepare environment
|
||||||
|
|
||||||
We'll use an [oauth-proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) to protect the UI from public access, so create calibre-web.env, and populate with the following variables:
|
We'll use an [oauth-proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) to protect the UI from public access, so create calibre-web.env, and populate with the following variables:
|
||||||
|
|
||||||
```
|
```
|
||||||
OAUTH2_PROXY_CLIENT_ID=
|
OAUTH2_PROXY_CLIENT_ID=
|
||||||
@@ -110,7 +110,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -125,4 +125,4 @@ Log into your new instance at https://**YOUR-FQDN**. You'll be directed to the i
|
|||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. Yes, Calibre does provide a server component. But it's not as fully-featured as Calibre-Web (_i.e., you can't use it to send ebooks directly to your Kindle_)
|
1. Yes, Calibre does provide a server component. But it's not as fully-featured as Calibre-Web (_i.e., you can't use it to send ebooks directly to your Kindle_)
|
||||||
2. A future enhancement might be integrating this recipe with the filestore for [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/), so that the desktop database (Calibre) can be kept synced with Calibre-Web.
|
2. A future enhancement might be integrating this recipe with the filestore for [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/), so that the desktop database (Calibre) can be kept synced with Calibre-Web.
|
||||||
@@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
Collabora Online Development Edition (or "[CODE](https://www.collaboraoffice.com/code/#what_is_code)"), is the lightweight, or "home" edition of the commercially-supported [Collabora Online](https://www.collaboraoffice.com/collabora-online/) platform. It
|
Collabora Online Development Edition (or "[CODE](https://www.collaboraoffice.com/code/#what_is_code)"), is the lightweight, or "home" edition of the commercially-supported [Collabora Online](https://www.collaboraoffice.com/collabora-online/) platform. It
|
||||||
|
|
||||||
It's basically the [LibreOffice](https://www.libreoffice.org/) interface in a web-browser. CODE is not a standalone app, it's a backend intended to be accessed via "WOPI" from an existing interface (_in our case, [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/)_)
|
It's basically the [LibreOffice](https://www.libreoffice.org/) interface in a web-browser. CODE is not a standalone app, it's a backend intended to be accessed via "WOPI" from an existing interface (_in our case, [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/)_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname (_i.e. "collabora.your-domain.com"_) you intend to use for LDAP Account Manager, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname (_i.e. "collabora.your-domain.com"_) you intend to use for LDAP Account Manager, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
4. [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/) installed and operational
|
4. [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/) installed and operational
|
||||||
5. [Docker-compose](https://docs.docker.com/compose/install/) installed on your node(s) - this is a special case which needs to run outside of Docker Swarm
|
5. [Docker-compose](https://docs.docker.com/compose/install/) installed on your node(s) - this is a special case which needs to run outside of Docker Swarm
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -56,7 +56,7 @@ Create /var/data/config/collabora/collabora.env, and populate with the following
|
|||||||
Note the following:
|
Note the following:
|
||||||
|
|
||||||
1. Variables are in lower-case, unlike our standard convention. This is to align with the CODE container
|
1. Variables are in lower-case, unlike our standard convention. This is to align with the CODE container
|
||||||
2. Set domain to your [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/) domain, and escape all the periods as per the example
|
2. Set domain to your [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/) domain, and escape all the periods as per the example
|
||||||
3. Set your server_name to collabora.<yourdomain\>. Escaping periods is unnecessary
|
3. Set your server_name to collabora.<yourdomain\>. Escaping periods is unnecessary
|
||||||
4. Your password cannot include triangular brackets - the entrypoint script will insert this password into an XML document, and triangular brackets will make bad(tm) things happen
|
4. Your password cannot include triangular brackets - the entrypoint script will insert this password into an XML document, and triangular brackets will make bad(tm) things happen
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# CryptoNote Mining Pool
|
# CryptoNote Mining Pool
|
||||||
|
|
||||||
[Cryptocurrency miners](https://geek-cookbook.funkypenguin.co.nz/)recipes/cryptominer) will "pool" their GPU resources ("_hashpower_") into aggregate "_mining pools_", so that by the combined effort of all the miners, the pool will receive a reward for the blocks "mined" into the blockchain, and this reward will be distributed among the miners.
|
[Cryptocurrency miners]https://geek-cookbook.funkypenguin.co.nz/recipes/cryptominer) will "pool" their GPU resources ("_hashpower_") into aggregate "_mining pools_", so that by the combined effort of all the miners, the pool will receive a reward for the blocks "mined" into the blockchain, and this reward will be distributed among the miners.
|
||||||
|
|
||||||
[CryptoNote](https://cryptonote.org/) is an open-source toolset designed to facilitate the creation of new privacy-focused [cryptocurrencies](https://cryptonote.org/coins)
|
[CryptoNote](https://cryptonote.org/) is an open-source toolset designed to facilitate the creation of new privacy-focused [cryptocurrencies](https://cryptonote.org/coins)
|
||||||
|
|
||||||
(_CryptoNote = 'Kryptonite'. In a pool. Get it?_)
|
(_CryptoNote = 'Kryptonite'. In a pool. Get it?_)
|
||||||
|
|
||||||
images/cryptonote-mining-pool.png)
|
![CryptoNote Mining Pool Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/cryptonote-mining-pool.png)
|
||||||
|
|
||||||
The fact that all these currencies share a common ancestry means that a common mining pool platform can be used for miners. The following recipes all use variations of [Dvandal's cryptonote-nodejs-pool ](https://github.com/dvandal/cryptonote-nodejs-pool)
|
The fact that all these currencies share a common ancestry means that a common mining pool platform can be used for miners. The following recipes all use variations of [Dvandal's cryptonote-nodejs-pool ](https://github.com/dvandal/cryptonote-nodejs-pool)
|
||||||
|
|
||||||
## Mining Pool Recipies
|
## Mining Pool Recipies
|
||||||
|
|
||||||
* [TurtleCoin](https://geek-cookbook.funkypenguin.co.nz/)recipes/turtle-pool/), the no-BS, fun baby cryptocurrency
|
* [TurtleCoin]https://geek-cookbook.funkypenguin.co.nz/recipes/turtle-pool/), the no-BS, fun baby cryptocurrency
|
||||||
* [Athena](https://geek-cookbook.funkypenguin.co.nz/)recipes/cryptonote-mining-pool/athena/), TurtleCoin's newborn baby sister
|
* [Athena]https://geek-cookbook.funkypenguin.co.nz/recipes/cryptonote-mining-pool/athena/), TurtleCoin's newborn baby sister
|
||||||
|
|||||||
@@ -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](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/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
|
||||||
@@ -68,7 +68,7 @@ PASSPHRASE=<YOUR CHOSEN PASSPHRASE>
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
See the [data layout reference](https://geek-cookbook.funkypenguin.co.nz/)reference/data_layout/) for an explanation of the included/excluded paths above.
|
See the [data layout reference]https://geek-cookbook.funkypenguin.co.nz/reference/data_layout/) for an explanation of the included/excluded paths above.
|
||||||
|
|
||||||
### Run a test backup
|
### Run a test backup
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ Repeat after me: "If you don't verify your backup, **it's not a backup**".
|
|||||||
!!! warning
|
!!! warning
|
||||||
Depending on what tier of storage you chose from your provider (_i.e., Google Coldline, or Amazon S3_), you may be charged for downloading data.
|
Depending on what tier of storage you chose from your provider (_i.e., Google Coldline, or Amazon S3_), you may be charged for downloading data.
|
||||||
|
|
||||||
Run a variation of the following to confirm a file you expect to be backed up, **is** backed up. (_I used traefik.yml from the [traefik recipie](https://geek-cookbook.funkypenguin.co.nz/)recipie/traefik/), since this is likely to exist for every reader_).
|
Run a variation of the following to confirm a file you expect to be backed up, **is** backed up. (_I used traefik.yml from the [traefik recipie]https://geek-cookbook.funkypenguin.co.nz/recipie/traefik/), since this is likely to exist for every reader_).
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run --env-file duplicity.env -it --rm \
|
docker run --env-file duplicity.env -it --rm \
|
||||||
@@ -148,7 +148,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Don't be like [Cameron](http://haltandcatchfire.wikia.com/wiki/Cameron_Howe). Ba
|
|||||||
|
|
||||||
[](https://www.observe.global/)
|
[](https://www.observe.global/)
|
||||||
|
|
||||||
ElkarBackup is a free open-source backup solution based on RSync/RSnapshot. It's basically a web wrapper around rsync/rsnapshot, which means that your backups are just files on a filesystem, utilising hardlinks for tracking incremental changes. I find this result more reassuring than a blob of compressed, (encrypted?) data that [more sophisticated backup solutions](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity/) would produce for you.
|
ElkarBackup is a free open-source backup solution based on RSync/RSnapshot. It's basically a web wrapper around rsync/rsnapshot, which means that your backups are just files on a filesystem, utilising hardlinks for tracking incremental changes. I find this result more reassuring than a blob of compressed, (encrypted?) data that [more sophisticated backup solutions]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/) would produce for you.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -19,8 +19,8 @@ ElkarBackup is a free open-source backup solution based on RSync/RSnapshot. It's
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -159,7 +159,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -171,11 +171,11 @@ Launch the ElkarBackup stack by running ```docker stack deploy elkarbackup -c <p
|
|||||||
|
|
||||||
Log into your new instance at https://**YOUR-FQDN**, with user "root" and the password default password "root":
|
Log into your new instance at https://**YOUR-FQDN**, with user "root" and the password default password "root":
|
||||||
|
|
||||||
images/elkarbackup-setup-1.png)
|
![ElkarBackup Login Screen]https://geek-cookbook.funkypenguin.co.nz/images/elkarbackup-setup-1.png)
|
||||||
|
|
||||||
First thing you do, change your password, using the gear icon, and "Change Password" link:
|
First thing you do, change your password, using the gear icon, and "Change Password" link:
|
||||||
|
|
||||||
images/elkarbackup-setup-2.png)
|
![ElkarBackup Login Screen]https://geek-cookbook.funkypenguin.co.nz/images/elkarbackup-setup-2.png)
|
||||||
|
|
||||||
Have a read of the [Elkarbackup Docs](https://docs.elkarbackup.org/docs/introduction.html) - they introduce the concept of **clients** (_hosts containing data to be backed up_), **jobs** (_what data gets backed up_), **policies** (_when is data backed up and how long is it kept_).
|
Have a read of the [Elkarbackup Docs](https://docs.elkarbackup.org/docs/introduction.html) - they introduce the concept of **clients** (_hosts containing data to be backed up_), **jobs** (_what data gets backed up_), **policies** (_when is data backed up and how long is it kept_).
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ Repeat after me : "**It's not a backup unless you've tested a restore**"
|
|||||||
|
|
||||||
To restore files form a job, click on the "Restore" button in the WebUI, while on the **Jobs** tab:
|
To restore files form a job, click on the "Restore" button in the WebUI, while on the **Jobs** tab:
|
||||||
|
|
||||||
images/elkarbackup-setup-3.png)
|
![ElkarBackup Login Screen]https://geek-cookbook.funkypenguin.co.nz/images/elkarbackup-setup-3.png)
|
||||||
|
|
||||||
This takes you to a list of backup names and file paths. You can choose to download the entire contents of the backup from your browser as a .tar.gz, or to restore the backup to the client. If you click on the **name** of the backup, you can also drill down into the file structure, choosing to restore a single file or directory.
|
This takes you to a list of backup names and file paths. You can choose to download the entire contents of the backup from your browser as a .tar.gz, or to restore the backup to the client. If you click on the **name** of the backup, you can also drill down into the file structure, choosing to restore a single file or directory.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Emby
|
# Emby
|
||||||
|
|
||||||
[Emby](https://emby.media/) (_think "M.B." or "Media Browser"_) is best described as "_like [Plex](https://geek-cookbook.funkypenguin.co.nz/)recipes/plex/) but different_" - It's a bit geekier and less polished than Plex, but it allows for more flexibility and customization.
|
[Emby](https://emby.media/) (_think "M.B." or "Media Browser"_) is best described as "_like [Plex]https://geek-cookbook.funkypenguin.co.nz/recipes/plex/) but different_" - It's a bit geekier and less polished than Plex, but it allows for more flexibility and customization.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -8,8 +8,8 @@ I've started experimenting with Emby as an alternative to Plex, because of the a
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -71,7 +71,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -85,6 +85,6 @@ Log into your new instance at https://**YOUR-FQDN**, and complete the wizard-bas
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. I didn't use an [oauth2_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) for this stack, because it would interfere with mobile client support.
|
1. I didn't use an [oauth2_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) for this stack, because it would interfere with mobile client support.
|
||||||
2. Got an NVIDIA GPU? See [this blog post](https://www.funkypenguin.co.nz/note/gpu-transcoding-with-emby-plex-using-docker-nvidia/) re how to use your GPU to transcode your media!
|
2. Got an NVIDIA GPU? See [this blog post](https://www.funkypenguin.co.nz/note/gpu-transcoding-with-emby-plex-using-docker-nvidia/) re how to use your GPU to transcode your media!
|
||||||
3. We don't bother exposing the HTTPS port for Emby, since [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/) is doing the SSL termination for us already.
|
3. We don't bother exposing the HTTPS port for Emby, since [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) is doing the SSL termination for us already.
|
||||||
@@ -4,15 +4,15 @@ hero: Ghost - A recipe for beautiful online publication.
|
|||||||
|
|
||||||
[Ghost](https://ghost.org) is "a fully open source, hackable platform for building and running a modern online publication."
|
[Ghost](https://ghost.org) is "a fully open source, hackable platform for building and running a modern online publication."
|
||||||
|
|
||||||
images/ghost.png)
|
![]https://geek-cookbook.funkypenguin.co.nz/images/ghost.png)
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ While a runner isn't strictly required to use GitLab, if you want to do CI, you'
|
|||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
4. [X] [GitLab](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/gitlab) installation (see previous recipe)
|
4. [X] [GitLab]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/gitlab) installation (see previous recipe)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ Docker does maintain an [official "Omnibus" container](https://docs.gitlab.com/o
|
|||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -116,7 +116,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ As you'll note in the (_real world_) screenshot above, my requirements for a per
|
|||||||
Gollum meets all these requirements, and as an added bonus, is extremely fast and lightweight.
|
Gollum meets all these requirements, and as an added bonus, is extremely fast and lightweight.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Since Gollum itself offers no user authentication, this design secures gollum behind an [oauth2 proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/), so that in order to gain access to the Gollum UI at all, oauth2 authentication (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
Since Gollum itself offers no user authentication, this design secures gollum behind an [oauth2 proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/), so that in order to gain access to the Gollum UI at all, oauth2 authentication (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
||||||
|
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
@@ -36,8 +36,8 @@ Gollum meets all these requirements, and as an added bonus, is extremely fast an
|
|||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -117,7 +117,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ This recipie combines the [extensibility](https://home-assistant.io/components/)
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -118,7 +118,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
## Serving
|
## Serving
|
||||||
|
|
||||||
@@ -130,4 +130,4 @@ Log into your new instance at https://**YOUR-FQDN**, the password you created in
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. I **tried** to protect Home Assistant using [oauth2_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy), but HA is incompatible with the websockets implementation used by Home Assistant. Until this can be fixed, I suggest that geeks set frontend: api_key to a long and complex string, and rely on this to prevent malevolent internet miscreants from turning their lights on at 2am!
|
1. I **tried** to protect Home Assistant using [oauth2_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy), but HA is incompatible with the websockets implementation used by Home Assistant. Until this can be fixed, I suggest that geeks set frontend: api_key to a long and complex string, and rely on this to prevent malevolent internet miscreants from turning their lights on at 2am!
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
# iBeacons with Home assistant
|
# iBeacons with Home assistant
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's an optional additional of the [HomeAssistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/homeassistant/) "recipe", since it only applies to a subset of users
|
This is not a complete recipe - it's an optional additional of the [HomeAssistant]https://geek-cookbook.funkypenguin.co.nz/recipes/homeassistant/) "recipe", since it only applies to a subset of users
|
||||||
|
|
||||||
One of the most useful features of Home Assistant is location awareness. I don't care if someone opens my office door when I'm home, but you bet I care about (_and want to be notified_) it if I'm away!
|
One of the most useful features of Home Assistant is location awareness. I don't care if someone opens my office door when I'm home, but you bet I care about (_and want to be notified_) it if I'm away!
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [HomeAssistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/home-assistant/) per recipe
|
1. [HomeAssistant]https://geek-cookbook.funkypenguin.co.nz/recipes/home-assistant/) per recipe
|
||||||
2. iBeacon(s) - This recipe is for https://s.click.aliexpress.com/e/bzyLCnAp
|
2. iBeacon(s) - This recipe is for https://s.click.aliexpress.com/e/bzyLCnAp
|
||||||
4. [LightBlue Explorer](https://itunes.apple.com/nz/app/lightblue-explorer/id557428110?mt=8)
|
4. [LightBlue Explorer](https://itunes.apple.com/nz/app/lightblue-explorer/id557428110?mt=8)
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ Huginn is a system for building agents that perform automated tasks for you onli
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ Great power, right? A client (_yes, you can [hire](https://www.funkypenguin.co.n
|
|||||||
!!! summary "Ingredients"
|
!!! summary "Ingredients"
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
1. [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. [X] DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ services:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
### Command your bot
|
### Command your bot
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Description. IPFS is a peer-to-peer distributed file system that seeks to connec
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ hero: Kanboard - A recipe to get your personal kanban on
|
|||||||
|
|
||||||
# Kanboard
|
# Kanboard
|
||||||
|
|
||||||
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux](https://geek-cookbook.funkypenguin.co.nz/)recipes/miniflux/)_)
|
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux]https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux/)_)
|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Kanboard is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
Kanboard is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
||||||
|
|
||||||
Features include:
|
Features include:
|
||||||
|
|
||||||
@@ -20,12 +20,12 @@ Features include:
|
|||||||
* Free, open source and self-hosted
|
* Free, open source and self-hosted
|
||||||
* Super simple installation
|
* Super simple installation
|
||||||
|
|
||||||
images/kanboard.png)
|
![]https://geek-cookbook.funkypenguin.co.nz/images/kanboard.png)
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry pointing your NextCloud url (_kanboard.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry pointing your NextCloud url (_kanboard.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ mkdir -p /var/data/kanboard
|
|||||||
|
|
||||||
### Setup Environment
|
### Setup Environment
|
||||||
|
|
||||||
If you intend to use an [OAuth proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) to further secure public access to your instance, create a ```kanboard.env``` file to hold your environment variables, and populate with your OAuth provider's details (_the cookie secret you can just make up_):
|
If you intend to use an [OAuth proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) to further secure public access to your instance, create a ```kanboard.env``` file to hold your environment variables, and populate with your OAuth provider's details (_the cookie secret you can just make up_):
|
||||||
|
|
||||||
```
|
```
|
||||||
# If you decide to protect kanboard with an oauth_proxy, complete these
|
# If you decide to protect kanboard with an oauth_proxy, complete these
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# KeyCloak
|
# KeyCloak
|
||||||
|
|
||||||
[KeyCloak](https://www.keycloak.org/) is "*an open source identity and access management solution*". Using a local database, or a variety of backends (_think [OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/)_), you can provide Single Sign-On (SSO) using OpenID, OAuth 2.0, and SAML. KeyCloak's OpenID provider can be used in combination with [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/), to protect [vulnerable services](https://geek-cookbook.funkypenguin.co.nz/)recipe/nzbget/) with an extra layer of authentication.
|
[KeyCloak](https://www.keycloak.org/) is "*an open source identity and access management solution*". Using a local database, or a variety of backends (_think [OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/)_), you can provide Single Sign-On (SSO) using OpenID, OAuth 2.0, and SAML. KeyCloak's OpenID provider can be used in combination with [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/), to protect [vulnerable services]https://geek-cookbook.funkypenguin.co.nz/recipe/nzbget/) with an extra layer of authentication.
|
||||||
|
|
||||||
!!! important
|
!!! important
|
||||||
Initial development of this recipe was sponsored by [The Common Observatory](https://www.observe.global/). Thanks guys!
|
Initial development of this recipe was sponsored by [The Common Observatory](https://www.observe.global/). Thanks guys!
|
||||||
@@ -14,9 +14,9 @@
|
|||||||
!!! Summary
|
!!! Summary
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph/)
|
* [X] [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph/)
|
||||||
* [X] [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
* [X] [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
* [X] DNS entry for the hostname (_i.e. "keycloak.your-domain.com"_) you intend to use, pointed to your [keepalived](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/keepalived/) IP
|
* [X] DNS entry for the hostname (_i.e. "keycloak.your-domain.com"_) you intend to use, pointed to your [keepalived]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
## Serving
|
## Serving
|
||||||
|
|||||||
@@ -1,34 +1,34 @@
|
|||||||
# Authenticate KeyCloak against OpenLDAP
|
# Authenticate KeyCloak against OpenLDAP
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's an **optional** component of the [Keycloak recipe](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/), but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's an **optional** component of the [Keycloak recipe]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/), but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
KeyCloak gets really sexy when you integrate it into your [OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/) stack (_also, it's great not to have to play with ugly LDAP tree UIs_). Note that OpenLDAP integration is **not necessary** if you want to use KeyCloak with [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/) - all you need for that is [local users](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/create-user/), and an [OIDC client](http://localhost:8000/recipes/keycloak/setup-oidc-provider/).
|
KeyCloak gets really sexy when you integrate it into your [OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/) stack (_also, it's great not to have to play with ugly LDAP tree UIs_). Note that OpenLDAP integration is **not necessary** if you want to use KeyCloak with [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/) - all you need for that is [local users]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/create-user/), and an [OIDC client](http://localhost:8000/recipes/keycloak/setup-oidc-provider/).
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) recipe deployed successfully
|
* [X] [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) recipe deployed successfully
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
* [ ] An [OpenLDAP server](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/) (*assuming you want to authenticate against it*)
|
* [ ] An [OpenLDAP server]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/) (*assuming you want to authenticate against it*)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
You'll need to have completed the [OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/) recipe
|
You'll need to have completed the [OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/) recipe
|
||||||
|
|
||||||
You start in the "Master" realm - but mouseover the realm name, to a dropdown box allowing you add an new realm:
|
You start in the "Master" realm - but mouseover the realm name, to a dropdown box allowing you add an new realm:
|
||||||
|
|
||||||
### Create Realm
|
### Create Realm
|
||||||
|
|
||||||
images/sso-stack-keycloak-1.png)
|
![KeyCloak Add Realm Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/sso-stack-keycloak-1.png)
|
||||||
|
|
||||||
Enter a name for your new realm, and click "_Create_":
|
Enter a name for your new realm, and click "_Create_":
|
||||||
|
|
||||||
images/sso-stack-keycloak-2.png)
|
![KeyCloak Add Realm Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/sso-stack-keycloak-2.png)
|
||||||
|
|
||||||
### Setup User Federation
|
### Setup User Federation
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ Once in the desired realm, click on **User Federation**, and click **Add Provide
|
|||||||
|
|
||||||
Save your changes, and then navigate back to "User Federation" > Your LDAP name > Mappers:
|
Save your changes, and then navigate back to "User Federation" > Your LDAP name > Mappers:
|
||||||
|
|
||||||
images/sso-stack-keycloak-3.png)
|
![KeyCloak Add Realm Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/sso-stack-keycloak-3.png)
|
||||||
|
|
||||||
For each of the following mappers, click the name, and set the "_Read Only_" flag to "_Off_" (_this enables 2-way sync between KeyCloak and OpenLDAP_)
|
For each of the following mappers, click the name, and set the "_Read Only_" flag to "_Off_" (_this enables 2-way sync between KeyCloak and OpenLDAP_)
|
||||||
|
|
||||||
@@ -53,16 +53,16 @@ For each of the following mappers, click the name, and set the "_Read Only_" fla
|
|||||||
* email
|
* email
|
||||||
* first name
|
* first name
|
||||||
|
|
||||||
images/sso-stack-keycloak-4.png)
|
![KeyCloak Add Realm Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/sso-stack-keycloak-4.png)
|
||||||
|
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
We've setup a new realm in KeyCloak, and configured read-write federation to an [OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/) backend. We can now manage our LDAP users using either KeyCloak or LDAP directly, and we can protect vulnerable services using [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/).
|
We've setup a new realm in KeyCloak, and configured read-write federation to an [OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/) backend. We can now manage our LDAP users using either KeyCloak or LDAP directly, and we can protect vulnerable services using [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/).
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Created:
|
Created:
|
||||||
|
|
||||||
* [X] KeyCloak realm in read-write federation with [OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/openldap/) directory
|
* [X] KeyCloak realm in read-write federation with [OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/openldap/) directory
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,38 +1,38 @@
|
|||||||
# Create KeyCloak Users
|
# Create KeyCloak Users
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's an optional component of the [Keycloak recipe](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/), but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's an optional component of the [Keycloak recipe]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/), but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
Unless you plan to authenticate against an outside provider (*[OpenLDAP](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/openldap/), below, for example*), you'll want to create some local users..
|
Unless you plan to authenticate against an outside provider (*[OpenLDAP]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/openldap/), below, for example*), you'll want to create some local users..
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) recipe deployed successfully
|
* [X] [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) recipe deployed successfully
|
||||||
|
|
||||||
### Create User
|
### Create User
|
||||||
|
|
||||||
Within the "Master" realm (*no need for more realms yet*), navigate to **Manage** -> **Users**, and then click **Add User** at the top right:
|
Within the "Master" realm (*no need for more realms yet*), navigate to **Manage** -> **Users**, and then click **Add User** at the top right:
|
||||||
|
|
||||||
images/keycloak-add-user-1.png)
|
![Navigating to the add user interface in Keycloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-user-1.png)
|
||||||
|
|
||||||
Populate your new user's username (it's the only mandatory field)
|
Populate your new user's username (it's the only mandatory field)
|
||||||
|
|
||||||
images/keycloak-add-user-2.png)
|
![Populating a username in the add user interface in Keycloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-user-2.png)
|
||||||
|
|
||||||
### Set User Credentials
|
### Set User Credentials
|
||||||
|
|
||||||
Once your user is created, to set their password, click on the "**Credentials**" tab, and procede to reset it. Set the password to non-temporary, unless you like extra work!
|
Once your user is created, to set their password, click on the "**Credentials**" tab, and procede to reset it. Set the password to non-temporary, unless you like extra work!
|
||||||
|
|
||||||
images/keycloak-add-user-3.png)
|
![Resetting a user's password in Keycloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-user-3.png)
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
We've setup users in KeyCloak, which we can now use to authenticate to KeyCloak, when it's used as an [OIDC Provider](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/setup-oidc-provider/), potentially to secure vulnerable services using [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/).
|
We've setup users in KeyCloak, which we can now use to authenticate to KeyCloak, when it's used as an [OIDC Provider]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/setup-oidc-provider/), potentially to secure vulnerable services using [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/).
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Created:
|
Created:
|
||||||
|
|
||||||
* [X] Username / password to authenticate against [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/)
|
* [X] Username / password to authenticate against [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/)
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
# Add OIDC Provider to KeyCloak
|
# Add OIDC Provider to KeyCloak
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's an optional component of the [Keycloak recipe](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/), but has been split into its own page to reduce complexity.
|
This is not a complete recipe - it's an optional component of the [Keycloak recipe]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/), but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
Having an authentication provider is not much use until you start authenticating things against it! In order to authenticate against KeyCloak using OpenID Connect (OIDC), which is required for [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)recipe/traefik-forward-auth/), we'll setup a client in KeyCloak...
|
Having an authentication provider is not much use until you start authenticating things against it! In order to authenticate against KeyCloak using OpenID Connect (OIDC), which is required for [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/recipe/traefik-forward-auth/), we'll setup a client in KeyCloak...
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Existing:
|
Existing:
|
||||||
|
|
||||||
* [X] [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) recipe deployed successfully
|
* [X] [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) recipe deployed successfully
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
* [ ] The URI(s) to protect with the OIDC provider. Refer to the [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)recipe/traefik-forward-auth/) recipe for more information
|
* [ ] The URI(s) to protect with the OIDC provider. Refer to the [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/recipe/traefik-forward-auth/) recipe for more information
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -22,11 +22,11 @@ Having an authentication provider is not much use until you start authenticating
|
|||||||
|
|
||||||
Within the "Master" realm (*no need for more realms yet*), navigate to **Clients**, and then click **Create** at the top right:
|
Within the "Master" realm (*no need for more realms yet*), navigate to **Clients**, and then click **Create** at the top right:
|
||||||
|
|
||||||
images/keycloak-add-client-1.png)
|
![Navigating to the add user interface in Keycloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-client-1.png)
|
||||||
|
|
||||||
Enter a name for your client (*remember, we're authenticating **applications** now, not users, so use an application-specific name*):
|
Enter a name for your client (*remember, we're authenticating **applications** now, not users, so use an application-specific name*):
|
||||||
|
|
||||||
images/keycloak-add-client-2.png)
|
![Adding a client in KeyCloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-client-2.png)
|
||||||
|
|
||||||
### Configure Client
|
### Configure Client
|
||||||
|
|
||||||
@@ -35,17 +35,17 @@ Once your client is created, set at **least** the following, and click **Save**
|
|||||||
* **Access Type** : Confidential
|
* **Access Type** : Confidential
|
||||||
* **Valid Redirect URIs** : <The URIs you want to protect\>
|
* **Valid Redirect URIs** : <The URIs you want to protect\>
|
||||||
|
|
||||||
images/keycloak-add-client-3.png)
|
![Set KeyCloak client to confidential access type, add redirect URIs]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-client-3.png)
|
||||||
|
|
||||||
### Retrieve Client Secret
|
### Retrieve Client Secret
|
||||||
|
|
||||||
Now that you've changed the access type, and clicked **Save**, an additional **Credentials** tab appears at the top of the window. Click on the tab, and capture the KeyCloak-generated secret. This secret, plus your client name, is required to authenticate against KeyCloak via OIDC.
|
Now that you've changed the access type, and clicked **Save**, an additional **Credentials** tab appears at the top of the window. Click on the tab, and capture the KeyCloak-generated secret. This secret, plus your client name, is required to authenticate against KeyCloak via OIDC.
|
||||||
|
|
||||||
images/keycloak-add-client-4.png)
|
![Capture client secret from KeyCloak]https://geek-cookbook.funkypenguin.co.nz/images/keycloak-add-client-4.png)
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
We've setup an OIDC client in KeyCloak, which we can now use to protect vulnerable services using [Traefik Forward Auth](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik-forward-auth/). The OIDC URL provided by KeyCloak in the master realm, is *https://<your-keycloak-url\>/realms/master/.well-known/openid-configuration*
|
We've setup an OIDC client in KeyCloak, which we can now use to protect vulnerable services using [Traefik Forward Auth]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik-forward-auth/). The OIDC URL provided by KeyCloak in the master realm, is *https://<your-keycloak-url\>/realms/master/.well-known/openid-configuration*
|
||||||
|
|
||||||
!!! Summary
|
!!! Summary
|
||||||
Created:
|
Created:
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#Kanboard
|
#Kanboard
|
||||||
|
|
||||||
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux](https://geek-cookbook.funkypenguin.co.nz/)recipes/miniflux/)_)
|
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux]https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux/)_)
|
||||||
|
|
||||||
images/kanboard.png)
|
![Kanboard Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/kanboard.png)
|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Kanboard is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
Kanboard is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
||||||
|
|
||||||
Features include:
|
Features include:
|
||||||
|
|
||||||
@@ -22,14 +22,14 @@ Features include:
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. A [Kubernetes Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) including [Traefik Ingress](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/)
|
1. A [Kubernetes Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) including [Traefik Ingress]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/)
|
||||||
2. A DNS name for your kanboard instance (*kanboard.example.com*, below) pointing to your [load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/), fronting your Traefik ingress
|
2. A DNS name for your kanboard instance (*kanboard.example.com*, below) pointing to your [load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/), fronting your Traefik ingress
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Prepare traefik for namespace
|
### Prepare traefik for namespace
|
||||||
|
|
||||||
When you deployed [Traefik via the helm chart](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *kanboard* namespace, as illustrated below:
|
When you deployed [Traefik via the helm chart]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *kanboard* namespace, as illustrated below:
|
||||||
|
|
||||||
```
|
```
|
||||||
<snip>
|
<snip>
|
||||||
@@ -90,7 +90,7 @@ kubectl create -f /var/data/config/kanboard/kanboard-volumeclaim.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! question "What's that annotation about?"
|
!!! question "What's that annotation about?"
|
||||||
The annotation is used by [k8s-snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
The annotation is used by [k8s-snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
||||||
|
|
||||||
### Create ConfigMap
|
### Create ConfigMap
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ kubectl patch -n kanboard deployment app -p "{\"spec\":{\"template\":{\"metadata
|
|||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
To look at the Kanboard pod's logs, run ```kubectl logs -n kanboard <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting](https://geek-cookbook.funkypenguin.co.nz/)reference/kubernetes/troubleshooting/).
|
To look at the Kanboard pod's logs, run ```kubectl logs -n kanboard <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting]https://geek-cookbook.funkypenguin.co.nz/reference/kubernetes/troubleshooting/).
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Yes, Kubernetes is complicated. There are lots of moving parts, and debugging _w
|
|||||||
|
|
||||||
Fortunately, to assist in day-to-day operation of our cluster, and in the occasional "how-did-that-ever-work" troubleshooting, we have available to us, the mighty **[Kubernetes Dashboard](https://github.com/kubernetes/dashboard)**:
|
Fortunately, to assist in day-to-day operation of our cluster, and in the occasional "how-did-that-ever-work" troubleshooting, we have available to us, the mighty **[Kubernetes Dashboard](https://github.com/kubernetes/dashboard)**:
|
||||||
|
|
||||||
images/kubernetes-dashboard.png)
|
![Kubernetes Dashboard Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/kubernetes-dashboard.png)
|
||||||
|
|
||||||
Using the dashboard, you can:
|
Using the dashboard, you can:
|
||||||
|
|
||||||
@@ -16,11 +16,11 @@ Using the dashboard, you can:
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. A [Kubernetes Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/), with
|
1. A [Kubernetes Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/), with
|
||||||
2. OIDC-enabled authentication
|
2. OIDC-enabled authentication
|
||||||
3. An Ingress Controller ([Traefik Ingress](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/) or [NGinx Ingress](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/nginx-ingress/))
|
3. An Ingress Controller ([Traefik Ingress]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/) or [NGinx Ingress]https://geek-cookbook.funkypenguin.co.nz/kubernetes/nginx-ingress/))
|
||||||
4. A DNS name for your dashboard instance (*dashboard.example.com*, below) pointing to your [load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/), fronting your ingress controller
|
4. A DNS name for your dashboard instance (*dashboard.example.com*, below) pointing to your [load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/), fronting your ingress controller
|
||||||
5. A [KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/) instance for authentication
|
5. A [KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) instance for authentication
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#Miniflux
|
#Miniflux
|
||||||
|
|
||||||
Miniflux is a lightweight RSS reader, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard](https://geek-cookbook.funkypenguin.co.nz/)recipes/kanboard/)_)
|
Miniflux is a lightweight RSS reader, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard]https://geek-cookbook.funkypenguin.co.nz/recipes/kanboard/)_)
|
||||||
|
|
||||||
images/miniflux.png)
|
![Miniflux Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/miniflux.png)
|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Miniflux is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. Although I get to process my RSS feeds less frequently than I'd like to!
|
Miniflux is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. Although I get to process my RSS feeds less frequently than I'd like to!
|
||||||
|
|
||||||
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
||||||
|
|
||||||
@@ -20,14 +20,14 @@ I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/rev
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. A [Kubernetes Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) including [Traefik Ingress](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/)
|
1. A [Kubernetes Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) including [Traefik Ingress]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/)
|
||||||
2. A DNS name for your miniflux instance (*miniflux.example.com*, below) pointing to your [load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/), fronting your Traefik ingress
|
2. A DNS name for your miniflux instance (*miniflux.example.com*, below) pointing to your [load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/), fronting your Traefik ingress
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Prepare traefik for namespace
|
### Prepare traefik for namespace
|
||||||
|
|
||||||
When you deployed [Traefik via the helm chart](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *miniflux* namespace, as illustrated below:
|
When you deployed [Traefik via the helm chart]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *miniflux* namespace, as illustrated below:
|
||||||
|
|
||||||
```
|
```
|
||||||
<snip>
|
<snip>
|
||||||
@@ -88,7 +88,7 @@ kubectl create -f /var/data/config/miniflux/db-persistent-volumeclaim.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! question "What's that annotation about?"
|
!!! question "What's that annotation about?"
|
||||||
The annotation is used by [k8s-snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
The annotation is used by [k8s-snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
||||||
|
|
||||||
### Create secrets
|
### Create secrets
|
||||||
|
|
||||||
@@ -317,4 +317,4 @@ At this point, you should be able to access your instance on your chosen DNS nam
|
|||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
To look at the Miniflux pod's logs, run ```kubectl logs -n miniflux <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting](https://geek-cookbook.funkypenguin.co.nz/)reference/kubernetes/troubleshooting/).
|
To look at the Miniflux pod's logs, run ```kubectl logs -n miniflux <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting]https://geek-cookbook.funkypenguin.co.nz/reference/kubernetes/troubleshooting/).
|
||||||
@@ -15,7 +15,7 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/digital-ocean/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/digital-ocean/)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/digital-ocean/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/digital-ocean/)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/digital-ocean/)
|
1. [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/digital-ocean/)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#Kanboard
|
#Kanboard
|
||||||
|
|
||||||
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux](https://geek-cookbook.funkypenguin.co.nz/)recipes/miniflux/)_)
|
Kanboard is a Kanban tool, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux]https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux/)_)
|
||||||
|
|
||||||
images/kanboard.png)
|
![Kanboard Screenshot]https://geek-cookbook.funkypenguin.co.nz/images/kanboard.png)
|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Kanboard is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
Kanboard is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. I use it both in my DayJob(tm), and to manage my overflowing, overly-optimistic personal commitments!
|
||||||
|
|
||||||
Features include:
|
Features include:
|
||||||
|
|
||||||
@@ -22,14 +22,14 @@ Features include:
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. A [Kubernetes Cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/design/) including [Traefik Ingress](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/)
|
1. A [Kubernetes Cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/design/) including [Traefik Ingress]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/)
|
||||||
2. A DNS name for your kanboard instance (*kanboard.example.com*, below) pointing to your [load balancer](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/loadbalancer/), fronting your Traefik ingress
|
2. A DNS name for your kanboard instance (*kanboard.example.com*, below) pointing to your [load balancer]https://geek-cookbook.funkypenguin.co.nz/kubernetes/loadbalancer/), fronting your Traefik ingress
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Prepare traefik for namespace
|
### Prepare traefik for namespace
|
||||||
|
|
||||||
When you deployed [Traefik via the helm chart](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *kanboard* namespace, as illustrated below:
|
When you deployed [Traefik via the helm chart]https://geek-cookbook.funkypenguin.co.nz/kubernetes/traefik/), you would have customized ```values.yml``` for your deployment. In ```values.yml``` is a list of namespaces which Traefik is permitted to access. Update ```values.yml``` to include the *kanboard* namespace, as illustrated below:
|
||||||
|
|
||||||
```
|
```
|
||||||
<snip>
|
<snip>
|
||||||
@@ -90,7 +90,7 @@ kubectl create -f /var/data/config/kanboard/kanboard-volumeclaim.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! question "What's that annotation about?"
|
!!! question "What's that annotation about?"
|
||||||
The annotation is used by [k8s-snapshots](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
The annotation is used by [k8s-snapshots]https://geek-cookbook.funkypenguin.co.nz/kubernetes/snapshots/) to create daily incremental snapshots of your persistent volumes. In this case, our volume is snapshotted daily, and copies kept for 7 days.
|
||||||
|
|
||||||
### Create ConfigMap
|
### Create ConfigMap
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ kubectl patch -n kanboard deployment app -p "{\"spec\":{\"template\":{\"metadata
|
|||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
To look at the Kanboard pod's logs, run ```kubectl logs -n kanboard <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting](https://geek-cookbook.funkypenguin.co.nz/)reference/kubernetes/troubleshooting/).
|
To look at the Kanboard pod's logs, run ```kubectl logs -n kanboard <name of pod per above> -f```. For further troubleshooting hints, see [Troubleshooting]https://geek-cookbook.funkypenguin.co.nz/reference/kubernetes/troubleshooting/).
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ docker-mailserver doesn't include a webmail client, and one is not strictly need
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/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
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -104,7 +104,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ hero: Miniflux - A recipe for a lightweight minimalist RSS reader
|
|||||||
|
|
||||||
# Miniflux
|
# Miniflux
|
||||||
|
|
||||||
Miniflux is a lightweight RSS reader, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard](https://geek-cookbook.funkypenguin.co.nz/)recipes/kanboard/)_)
|
Miniflux is a lightweight RSS reader, developed by [Frdric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard]https://geek-cookbook.funkypenguin.co.nz/recipes/kanboard/)_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Miniflux is one of my [sponsored projects](https://geek-cookbook.funkypenguin.co.nz/)sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. Although I get to process my RSS feeds less frequently than I'd like to!
|
Miniflux is one of my [sponsored projects]https://geek-cookbook.funkypenguin.co.nz/sponsored-projects/) - a project I financially support on a regular basis because of its utility to me. Although I get to process my RSS feeds less frequently than I'd like to!
|
||||||
|
|
||||||
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
||||||
|
|
||||||
@@ -21,8 +21,8 @@ I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/rev
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry pointing your Miniflux url (i.e. _miniflux.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry pointing your Miniflux url (i.e. _miniflux.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ Possible use-cases:
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -173,6 +173,6 @@ goofys#bucket /mnt/mountpoint fuse _netdev,allow_other,--file-mode=
|
|||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. There are many S3-filesystem-mounting tools available, I just picked Goofys because it's simple. Google is your friend :)
|
1. There are many S3-filesystem-mounting tools available, I just picked Goofys because it's simple. Google is your friend :)
|
||||||
2. Some applications (_like [NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipes/nextcloud/)_) can natively mount S3 buckets
|
2. Some applications (_like [NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/)_) can natively mount S3 buckets
|
||||||
3. Some backup tools (_like [Duplicity](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity/)_) can backup directly to S3 buckets
|
3. Some backup tools (_like [Duplicity]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/)_) can backup directly to S3 buckets
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ hero: Kubernetes. The hero we deserve.
|
|||||||
|
|
||||||
# MQTT broker
|
# MQTT broker
|
||||||
|
|
||||||
I use Elias Kotlyar's [excellent custom firmware](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) for Xiaomi DaFang/XiaoFang cameras, enabling RTSP, MQTT, motion tracking, and other features, integrating directly with [Home Assistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/homeassistant/).
|
I use Elias Kotlyar's [excellent custom firmware](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) for Xiaomi DaFang/XiaoFang cameras, enabling RTSP, MQTT, motion tracking, and other features, integrating directly with [Home Assistant]https://geek-cookbook.funkypenguin.co.nz/recipes/homeassistant/).
|
||||||
|
|
||||||
There's currently a [mysterious bug](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/issues/638) though, which prevents TCP communication between Home Assistant and the camera, when MQTT services are enabled on the camera and the mqtt broker runs on the same Raspberry Pi as Home Assistant, using [Hass.io](https://www.home-assistant.io/hassio/).
|
There's currently a [mysterious bug](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/issues/638) though, which prevents TCP communication between Home Assistant and the camera, when MQTT services are enabled on the camera and the mqtt broker runs on the same Raspberry Pi as Home Assistant, using [Hass.io](https://www.home-assistant.io/hassio/).
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ A workaround to this bug is to run an MQTT broker **external** to the raspberry
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. A [Kubernetes cluster](https://geek-cookbook.funkypenguin.co.nz/)kubernetes/digital-ocean/)
|
1. A [Kubernetes cluster]https://geek-cookbook.funkypenguin.co.nz/kubernetes/digital-ocean/)
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ Munin uses the excellent RRDTool (written by Tobi Oetiker) and the framework is
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -46,7 +46,7 @@ mkdir -p {log,lib,run,cache}
|
|||||||
|
|
||||||
### Prepare environment
|
### Prepare environment
|
||||||
|
|
||||||
Create /var/data/config/munin/munin.env, and populate with the following variables. Use the OAUTH2 variables if you plan to use an [oauth2_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) to protect munin, and set at a **minimum** the ```MUNIN_USER```, ```MUNIN_PASSWORD```, and ```NODES``` values:
|
Create /var/data/config/munin/munin.env, and populate with the following variables. Use the OAUTH2 variables if you plan to use an [oauth2_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) to protect munin, and set at a **minimum** the ```MUNIN_USER```, ```MUNIN_PASSWORD```, and ```NODES``` values:
|
||||||
|
|
||||||
```
|
```
|
||||||
# Use these if you plan to protect the webUI with an oauth_proxy
|
# Use these if you plan to protect the webUI with an oauth_proxy
|
||||||
@@ -123,7 +123,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
## Serving
|
## Serving
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ This recipe is based on the official NextCloud docker image, but includes seprat
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry pointing your NextCloud url (_nextcloud.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry pointing your NextCloud url (_nextcloud.example.com_) to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Setup data locations
|
### Setup data locations
|
||||||
|
|
||||||
We'll need several directories for [static data](https://geek-cookbook.funkypenguin.co.nz/)reference/data_layout/#static-data) to bind-mount into our container, so create them in /var/data/nextcloud (_so that they can be [backed up](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity/)_)
|
We'll need several directories for [static data]https://geek-cookbook.funkypenguin.co.nz/reference/data_layout/#static-data) to bind-mount into our container, so create them in /var/data/nextcloud (_so that they can be [backed up]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/)_)
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir /var/data/nextcloud
|
mkdir /var/data/nextcloud
|
||||||
@@ -32,7 +32,7 @@ cd /var/data/nextcloud
|
|||||||
mkdir -p {html,apps,config,data,database-dump}
|
mkdir -p {html,apps,config,data,database-dump}
|
||||||
```
|
```
|
||||||
|
|
||||||
Now make **more** directories for [runtime data](https://geek-cookbook.funkypenguin.co.nz/)reference/data_layout/#runtime-data) (_so that they can be **not** backed-up_):
|
Now make **more** directories for [runtime data]https://geek-cookbook.funkypenguin.co.nz/reference/data_layout/#runtime-data) (_so that they can be **not** backed-up_):
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir /var/data/runtime/nextcloud
|
mkdir /var/data/runtime/nextcloud
|
||||||
@@ -159,7 +159,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ Want to use Calendar/Contacts on your iOS device? Want to avoid dictating long,
|
|||||||
|
|
||||||
Huzzah! NextCloud supports [service discovery for CalDAV/CardDAV](https://tools.ietf.org/html/rfc6764), allowing you to simply tell your device the primary URL of your server (_**nextcloud.batcave.org**, for example_), and have the device figure out the correct WebDAV path to use.
|
Huzzah! NextCloud supports [service discovery for CalDAV/CardDAV](https://tools.ietf.org/html/rfc6764), allowing you to simply tell your device the primary URL of your server (_**nextcloud.batcave.org**, for example_), and have the device figure out the correct WebDAV path to use.
|
||||||
|
|
||||||
We (_and anyone else using the [NextCloud Docker image](https://hub.docker.com/_/nextcloud/)_) are using an SSL-terminating reverse proxy ([Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/)) in front of our NextCloud container. In fact, it's not **possible** to setup SSL **within** the NextCloud container.
|
We (_and anyone else using the [NextCloud Docker image](https://hub.docker.com/_/nextcloud/)_) are using an SSL-terminating reverse proxy ([Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/)) in front of our NextCloud container. In fact, it's not **possible** to setup SSL **within** the NextCloud container.
|
||||||
|
|
||||||
When using a reverse proxy, your device requests a URL from your proxy (https://nextcloud.batcave.com/.well-known/caldav), and the reverse proxy then passes that request **unencrypted** to the internal URL of the NextCloud instance (i.e., http://172.16.12.123/.well-known/caldav)
|
When using a reverse proxy, your device requests a URL from your proxy (https://nextcloud.batcave.com/.well-known/caldav), and the reverse proxy then passes that request **unencrypted** to the internal URL of the NextCloud instance (i.e., http://172.16.12.123/.well-known/caldav)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
[](https://www.observe.global/)
|
[](https://www.observe.global/)
|
||||||
|
|
||||||
LDAP is probably the most ubiquitous authentication backend, before the current era of "[stupid social sign-ons](https://www.usatoday.com/story/tech/columnist/2018/10/23/how-separate-your-social-networks-your-regular-sites/1687763002/)". Many of the recipes featured in the cookbook (_[NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipe/nextcloud/), [Kanboard](https://geek-cookbook.funkypenguin.co.nz/)recipe/kanboard/), [Gitlab](https://geek-cookbook.funkypenguin.co.nz/)recipe/gitlab/), etc_) offer LDAP integration.
|
LDAP is probably the most ubiquitous authentication backend, before the current era of "[stupid social sign-ons](https://www.usatoday.com/story/tech/columnist/2018/10/23/how-separate-your-social-networks-your-regular-sites/1687763002/)". Many of the recipes featured in the cookbook (_[NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipe/nextcloud/), [Kanboard]https://geek-cookbook.funkypenguin.co.nz/recipe/kanboard/), [Gitlab]https://geek-cookbook.funkypenguin.co.nz/recipe/gitlab/), etc_) offer LDAP integration.
|
||||||
|
|
||||||
## Big deal, who cares?
|
## Big deal, who cares?
|
||||||
|
|
||||||
@@ -21,12 +21,12 @@ This recipe combines the raw power of OpenLDAP with the flexibility and features
|
|||||||
|
|
||||||
## What's the takeaway?
|
## What's the takeaway?
|
||||||
|
|
||||||
What you'll end up with is a directory structure which will allow integration with popular tools (_[NextCloud](https://geek-cookbook.funkypenguin.co.nz/)recipe/nextcloud/), [Kanboard](https://geek-cookbook.funkypenguin.co.nz/)recipe/kanboard/), [Gitlab](https://geek-cookbook.funkypenguin.co.nz/)recipe/gitlab/), etc_), as well as with KeyCloak (_an upcoming recipe_), for **true** SSO.
|
What you'll end up with is a directory structure which will allow integration with popular tools (_[NextCloud]https://geek-cookbook.funkypenguin.co.nz/recipe/nextcloud/), [Kanboard]https://geek-cookbook.funkypenguin.co.nz/recipe/kanboard/), [Gitlab]https://geek-cookbook.funkypenguin.co.nz/recipe/gitlab/), etc_), as well as with KeyCloak (_an upcoming recipe_), for **true** SSO.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname (_i.e. "lam.your-domain.com"_) you intend to use for LDAP Account Manager, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname (_i.e. "lam.your-domain.com"_) you intend to use for LDAP Account Manager, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -41,7 +41,7 @@ mkdir /var/data/runtime/openldap/
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note "Why 2 directories?"
|
!!! note "Why 2 directories?"
|
||||||
For rationale, see my [data layout explanation](https://geek-cookbook.funkypenguin.co.nz/)reference/data_layout/)
|
For rationale, see my [data layout explanation]https://geek-cookbook.funkypenguin.co.nz/reference/data_layout/)
|
||||||
|
|
||||||
### Prepare environment
|
### Prepare environment
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ OAUTH2_PROXY_COOKIE_SECRET=
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
I use an [OAuth proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) to protect access to the web UI, when the sensitivity of the protected data (i.e. my authentication store) warrants it, or if I don't necessarily trust the security of the webUI.
|
I use an [OAuth proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) to protect access to the web UI, when the sensitivity of the protected data (i.e. my authentication store) warrants it, or if I don't necessarily trust the security of the webUI.
|
||||||
|
|
||||||
Create ```authenticated-emails.txt```, and populate with the email addresses (_matched to GitHub user accounts, in my case_) to which you want grant access, using OAuth2.
|
Create ```authenticated-emails.txt```, and populate with the email addresses (_matched to GitHub user accounts, in my case_) to which you want grant access, using OAuth2.
|
||||||
|
|
||||||
@@ -389,7 +389,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
**Normally**, we set unique static subnets for every stack you deploy, and put the non-public facing components (like databases) in an dedicated <stack\>_internal network. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
**Normally**, we set unique static subnets for every stack you deploy, and put the non-public facing components (like databases) in an dedicated <stack\>_internal network. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
However, you're likely to want to use OpenLdap with KeyCloak, whose JBOSS startup script assumes a single interface, and will crash in a ball of if you try to assign multiple interfaces to the container.
|
However, you're likely to want to use OpenLdap with KeyCloak, whose JBOSS startup script assumes a single interface, and will crash in a ball of if you try to assign multiple interfaces to the container.
|
||||||
|
|
||||||
@@ -447,4 +447,4 @@ Create your users using the "**New User**" button.
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. [The KeyCloak](https://geek-cookbook.funkypenguin.co.nz/)recipes/keycloak/authenticate-against-openldap/) recipe illustrates how to integrate KeyCloak with your LDAP directory, giving you a cleaner interface to manage users, and a raft of SSO / OAuth features.
|
1. [The KeyCloak]https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/authenticate-against-openldap/) recipe illustrates how to integrate KeyCloak with your LDAP directory, giving you a cleaner interface to manage users, and a raft of SSO / OAuth features.
|
||||||
|
|||||||
@@ -7,12 +7,12 @@
|
|||||||
Using a smartphone app, OwnTracks allows you to collect and analyse your own location data **without** sharing this data with a cloud provider (_i.e. Apple, Google_). Potential use cases are:
|
Using a smartphone app, OwnTracks allows you to collect and analyse your own location data **without** sharing this data with a cloud provider (_i.e. Apple, Google_). Potential use cases are:
|
||||||
|
|
||||||
* Sharing family locations without relying on Apple Find-My-friends
|
* Sharing family locations without relying on Apple Find-My-friends
|
||||||
* Performing automated actions in [HomeAssistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/homeassistant/) when you arrive/leave home
|
* Performing automated actions in [HomeAssistant]https://geek-cookbook.funkypenguin.co.nz/recipes/homeassistant/) when you arrive/leave home
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -96,7 +96,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,18 +8,18 @@ phpIPAM fulfils a non-sexy, but important role - It helps you manage your IP add
|
|||||||
|
|
||||||
## Why should you care about this?
|
## Why should you care about this?
|
||||||
|
|
||||||
You probably have a home network, with 20-30 IP addresses, for your family devices, your recipe/home-assistant), your smart TV, etc. If you want to (a) monitor them, and (b) audit who does what, you care about what IPs they're assigned by your DHCP server.
|
You probably have a home network, with 20-30 IP addresses, for your family devices, your ![IoT devices]https://geek-cookbook.funkypenguin.co.nz/recipe/home-assistant), your smart TV, etc. If you want to (a) monitor them, and (b) audit who does what, you care about what IPs they're assigned by your DHCP server.
|
||||||
|
|
||||||
You could simple keep track of all devices with leases in your DHCP server, but what happens if your (_hypothetical?_) Ubiquity Edge Router X crashes and burns due to lack of disk space, and you loose track of all your leases? Well, you have to start from scratch, is what!
|
You could simple keep track of all devices with leases in your DHCP server, but what happens if your (_hypothetical?_) Ubiquity Edge Router X crashes and burns due to lack of disk space, and you loose track of all your leases? Well, you have to start from scratch, is what!
|
||||||
|
|
||||||
And that [HomeAssistant](https://geek-cookbook.funkypenguin.co.nz/)recipes/homeassistant/) config, which you so carefully compiled, refers to each device by IP/DNS name, so you'd better make sure you recreate it consistently!
|
And that [HomeAssistant]https://geek-cookbook.funkypenguin.co.nz/recipes/homeassistant/) config, which you so carefully compiled, refers to each device by IP/DNS name, so you'd better make sure you recreate it consistently!
|
||||||
|
|
||||||
Enter phpIPAM. A tool designed to help home keeps as well as large organisations keep track of their IP (_and VLAN, VRF, and AS number_) allocations.
|
Enter phpIPAM. A tool designed to help home keeps as well as large organisations keep track of their IP (_and VLAN, VRF, and AS number_) allocations.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname (_i.e. "phpipam.your-domain.com"_) you intend to use for phpIPAM, pointed to your [keepalived](ha-docker-swarm/keepalived/) IPIP
|
3. DNS entry for the hostname (_i.e. "phpipam.your-domain.com"_) you intend to use for phpIPAM, pointed to your [keepalived](ha-docker-swarm/keepalived/) IPIP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -75,7 +75,7 @@ BACKUP_FREQUENCY=1d
|
|||||||
|
|
||||||
### Create nginx.conf
|
### Create nginx.conf
|
||||||
|
|
||||||
I usually protect my stacks using an [oauth proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) container in front of the app. This protects me from either accidentally exposing a platform to the world, or having a insecure platform accessed and abused.
|
I usually protect my stacks using an [oauth proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) container in front of the app. This protects me from either accidentally exposing a platform to the world, or having a insecure platform accessed and abused.
|
||||||
|
|
||||||
In the case of phpIPAM, the oauth_proxy creates an additional complexity, since it passes the "Authorization" HTTP header to the phpIPAM container. phpIPAH then examines the header, determines that the provided username (_my email address associated with my oauth provider_) doesn't match a local user account, and denies me access without the opportunity to retry.
|
In the case of phpIPAM, the oauth_proxy creates an additional complexity, since it passes the "Authorization" HTTP header to the phpIPAM container. phpIPAH then examines the header, determines that the provided username (_my email address associated with my oauth provider_) doesn't match a local user account, and denies me access without the opportunity to retry.
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -83,7 +83,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
## Serving
|
## Serving
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ hero: A recipe to manage your Media
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. A DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. A DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -82,7 +82,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ This is a "lightweight" recipe, because Portainer is so "lightweight". But it **
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ PrivateBin is a minimalist, open source online pastebin where the server (can) h
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Realms
|
# Realms
|
||||||
|
|
||||||
Realms is a git-based wiki (_like [Gollum](https://geek-cookbook.funkypenguin.co.nz/)recipes/gollum/), but with basic authentication and registration_)
|
Realms is a git-based wiki (_like [Gollum]https://geek-cookbook.funkypenguin.co.nz/recipes/gollum/), but with basic authentication and registration_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -16,14 +16,14 @@ Features include:
|
|||||||
|
|
||||||
!!! warning "Project likely abandoned"
|
!!! warning "Project likely abandoned"
|
||||||
|
|
||||||
In my limited trial, Realms seems _less_ useful than [Gollum](https://geek-cookbook.funkypenguin.co.nz/)recipes/gollum/) for my particular use-case (_i.e., you're limited to markdown syntax only_), but other users may enjoy the basic user authentication and registration features, which Gollum lacks.
|
In my limited trial, Realms seems _less_ useful than [Gollum]https://geek-cookbook.funkypenguin.co.nz/recipes/gollum/) for my particular use-case (_i.e., you're limited to markdown syntax only_), but other users may enjoy the basic user authentication and registration features, which Gollum lacks.
|
||||||
|
|
||||||
Also of note is that the docker image is 1.17GB in size, and the handful of commits to the [source GitHub repo](https://github.com/scragg0x/realms-wiki/commits/master) in the past year has listed TravisCI build failures. This has many of the hallmarks of an abandoned project, to my mind.
|
Also of note is that the docker image is 1.17GB in size, and the handful of commits to the [source GitHub repo](https://github.com/scragg0x/realms-wiki/commits/master) in the past year has listed TravisCI build failures. This has many of the hallmarks of an abandoned project, to my mind.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -36,7 +36,7 @@ Since we'll start with a basic Realms install, let's just create a single direct
|
|||||||
mkdir /var/data/realms/
|
mkdir /var/data/realms/
|
||||||
```
|
```
|
||||||
|
|
||||||
Create realms.env, and populate with the following variables (_if you intend to use an [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy) to double-secure your installation, which I recommend_)
|
Create realms.env, and populate with the following variables (_if you intend to use an [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy) to double-secure your installation, which I recommend_)
|
||||||
```
|
```
|
||||||
OAUTH2_PROXY_CLIENT_ID=
|
OAUTH2_PROXY_CLIENT_ID=
|
||||||
OAUTH2_PROXY_CLIENT_SECRET=
|
OAUTH2_PROXY_CLIENT_SECRET=
|
||||||
@@ -96,7 +96,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ I'd encourage you to spend some time reading https://github.com/stefanprodan/swa
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) on **17.09.0 or newer** (_doesn't work with CentOS Atomic, unfortunately_) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) on **17.09.0 or newer** (_doesn't work with CentOS Atomic, unfortunately_) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostnames you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostnames you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -31,7 +31,7 @@ This is basically a rehash of stefanprodan's [instructions](https://github.com/s
|
|||||||
|
|
||||||
### Setup oauth provider
|
### Setup oauth provider
|
||||||
|
|
||||||
Grafana includes decent login protections, but from what I can see, Prometheus, AlertManager, and Unsee do no authentication. In order to expose these publicly for your own consumption (my assumption for the rest of this recipe), you'll want to prepare to run [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) containers in front of each of the 4 web UIs in this recipe.
|
Grafana includes decent login protections, but from what I can see, Prometheus, AlertManager, and Unsee do no authentication. In order to expose these publicly for your own consumption (my assumption for the rest of this recipe), you'll want to prepare to run [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) containers in front of each of the 4 web UIs in this recipe.
|
||||||
|
|
||||||
### Setup metrics
|
### Setup metrics
|
||||||
|
|
||||||
@@ -379,7 +379,7 @@ Create a docker swarm config file in docker-compose syntax (v3), based on the or
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ Details
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
@@ -102,7 +102,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
## Serving
|
## Serving
|
||||||
|
|||||||
@@ -8,21 +8,21 @@ All saved data (_pages, annotations, images, tags, etc_) are stored on your own
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
There are plugins for [Chrome](https://chrome.google.com/webstore/detail/wallabagger/gbmgphmejlcoihgedabhgjdkcahacjlj) and [Firefox](https://addons.mozilla.org/firefox/addon/wallabagger/), as well as apps for [iOS](https://appsto.re/fr/YeqYfb.i), [Android](https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche), etc. Wallabag will also integrate nicely with my favorite RSS reader, [Miniflux](https://miniflux.net/) (_for which there is an [existing recipe](https://geek-cookbook.funkypenguin.co.nz/)recipes/miniflux)_).
|
There are plugins for [Chrome](https://chrome.google.com/webstore/detail/wallabagger/gbmgphmejlcoihgedabhgjdkcahacjlj) and [Firefox](https://addons.mozilla.org/firefox/addon/wallabagger/), as well as apps for [iOS](https://appsto.re/fr/YeqYfb.i), [Android](https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche), etc. Wallabag will also integrate nicely with my favorite RSS reader, [Miniflux](https://miniflux.net/) (_for which there is an [existing recipe]https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux)_).
|
||||||
|
|
||||||
[Here's a video](https://player.vimeo.com/video/167435064) which shows off the UI a bit more.
|
[Here's a video](https://player.vimeo.com/video/167435064) which shows off the UI a bit more.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Setup data locations
|
### Setup data locations
|
||||||
|
|
||||||
We need a filesystem location to store images that Wallabag downloads from the original sources, to re-display when you read your articles, as well as nightly database dumps (_which you **should [backup](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity/)**_), so create something like this:
|
We need a filesystem location to store images that Wallabag downloads from the original sources, to re-display when you read your articles, as well as nightly database dumps (_which you **should [backup]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/)**_), so create something like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir -p /var/data/wallabag
|
mkdir -p /var/data/wallabag
|
||||||
@@ -175,7 +175,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ Wekan allows to create Boards, on which Cards can be moved around between a numb
|
|||||||
There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer showing off the app, as well as a f[unctional demo](https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap).
|
There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer showing off the app, as well as a f[unctional demo](https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap).
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
For added privacy, this design secures wekan behind an [oauth2 proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/), so that in order to gain access to the wekan UI at all, oauth2 authentication (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
For added privacy, this design secures wekan behind an [oauth2 proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/), so that in order to gain access to the wekan UI at all, oauth2 authentication (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik) configured per design
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ hero: Terminal in a browser, baby!
|
|||||||
|
|
||||||
## Why would you need SSH in a browser window?
|
## Why would you need SSH in a browser window?
|
||||||
|
|
||||||
Need shell access to a node with no external access? Deploy Wetty behind an [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) with a SSL-terminating reverse proxy ([traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik/)), and suddenly you have the means to SSH to your private host from any web browser (_protected by your [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) of course, and your OAuth provider's 2FA_)
|
Need shell access to a node with no external access? Deploy Wetty behind an [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) with a SSL-terminating reverse proxy ([traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/)), and suddenly you have the means to SSH to your private host from any web browser (_protected by your [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) of course, and your OAuth provider's 2FA_)
|
||||||
|
|
||||||
Here are some other possible use cases:
|
Here are some other possible use cases:
|
||||||
|
|
||||||
@@ -18,15 +18,15 @@ Here are some other possible use cases:
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. [Docker swarm cluster](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/design/) with [persistent shared storage](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/shared-storage-ceph.md)
|
1. [Docker swarm cluster]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design/) with [persistent shared storage]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
2. [Traefik](https://geek-cookbook.funkypenguin.co.nz/)ha-docker-swarm/traefik_public) configured per design
|
2. [Traefik]https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik_public) configured per design
|
||||||
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
### Prepare environment
|
### Prepare environment
|
||||||
|
|
||||||
Create wetty.env, and populate with the following variables per the [oauth_proxy](https://geek-cookbook.funkypenguin.co.nz/)reference/oauth_proxy/) instructions:
|
Create wetty.env, and populate with the following variables per the [oauth_proxy]https://geek-cookbook.funkypenguin.co.nz/reference/oauth_proxy/) instructions:
|
||||||
```
|
```
|
||||||
OAUTH2_PROXY_CLIENT_ID=
|
OAUTH2_PROXY_CLIENT_ID=
|
||||||
OAUTH2_PROXY_CLIENT_SECRET=
|
OAUTH2_PROXY_CLIENT_SECRET=
|
||||||
@@ -86,7 +86,7 @@ networks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list](https://geek-cookbook.funkypenguin.co.nz/)reference/networks/) here.
|
Setup unique static subnets for every stack you deploy. This avoids IP/gateway conflicts which can otherwise occur when you're creating/removing stacks a lot. See [my list]https://geek-cookbook.funkypenguin.co.nz/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Data layout
|
# Data layout
|
||||||
|
|
||||||
The applications deployed in the stack utilize a combination of data-at-rest (_static config, files, etc_) and runtime data (_live database files_). The realtime data can't be [backed up](https://geek-cookbook.funkypenguin.co.nz/)recipes/duplicity) with a simple copy-paste, so where we employ databases, we also include containers to perform a regular export of database data to a filesystem location.
|
The applications deployed in the stack utilize a combination of data-at-rest (_static config, files, etc_) and runtime data (_live database files_). The realtime data can't be [backed up]https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity) with a simple copy-paste, so where we employ databases, we also include containers to perform a regular export of database data to a filesystem location.
|
||||||
|
|
||||||
So that we can confidently backup all our data, I've setup a data layout as follows:
|
So that we can confidently backup all our data, I've setup a data layout as follows:
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ This is the role of the OAuth proxy.
|
|||||||
When employing the **OAuth proxy** , the proxy sits in the middle of this transaction - traefik sends the web client to the OAuth proxy, the proxy authenticates the user against a 3rd-party source (_GitHub, Google, etc_), and then passes authenticated requests on to the web app in the container.
|
When employing the **OAuth proxy** , the proxy sits in the middle of this transaction - traefik sends the web client to the OAuth proxy, the proxy authenticates the user against a 3rd-party source (_GitHub, Google, etc_), and then passes authenticated requests on to the web app in the container.
|
||||||
|
|
||||||
Illustrated below:
|
Illustrated below:
|
||||||
images/oauth_proxy.png)
|
![OAuth proxy]https://geek-cookbook.funkypenguin.co.nz/images/oauth_proxy.png)
|
||||||
|
|
||||||
The advantage under this design is additional security. If I'm deploying a web app which I expect only myself to require access to, I'll put the oauth_proxy in front of it. The overhead is negligible, and the additional layer of security is well-worth it.
|
The advantage under this design is additional security. If I'm deploying a web app which I expect only myself to require access to, I'll put the oauth_proxy in front of it. The overhead is negligible, and the additional layer of security is well-worth it.
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ I created **/var/data/oauth_proxy/authenticated-emails.txt**, and add my own ema
|
|||||||
|
|
||||||
### Configure stack
|
### Configure stack
|
||||||
|
|
||||||
You'll need to define a service for the oauth_proxy in every stack which you want to protect. Here's an example from the [Wekan](https://geek-cookbook.funkypenguin.co.nz/)recipes/wekan/) recipe:
|
You'll need to define a service for the oauth_proxy in every stack which you want to protect. Here's an example from the [Wekan]https://geek-cookbook.funkypenguin.co.nz/recipes/wekan/) recipe:
|
||||||
|
|
||||||
```
|
```
|
||||||
proxy:
|
proxy:
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ I regularly donate to / sponsor the following projects. **Join me** in supportin
|
|||||||
|
|
||||||
| Project | Donate via..
|
| Project | Donate via..
|
||||||
| ------------- |-------------|
|
| ------------- |-------------|
|
||||||
| [Kanboard](https://geek-cookbook.funkypenguin.co.nz/)recipes/kanboard/) | [PayPal](https://kanboard.org/#donations)
|
| [Kanboard]https://geek-cookbook.funkypenguin.co.nz/recipes/kanboard/) | [PayPal](https://kanboard.org/#donations)
|
||||||
| [Miniflux](https://geek-cookbook.funkypenguin.co.nz/)recipes/miniflux/) | [PayPal](https://miniflux.net/#donations)
|
| [Miniflux]https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux/) | [PayPal](https://miniflux.net/#donations)
|
||||||
| [SABnzbd](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sabnzbd/) | [Paypal / Credit Card / Crypto](https://sabnzbd.org/donate/)
|
| [SABnzbd]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sabnzbd/) | [Paypal / Credit Card / Crypto](https://sabnzbd.org/donate/)
|
||||||
| [Radarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/radarr/) | [OpenCollective](https://opencollective.com/radarr#budget)
|
| [Radarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/radarr/) | [OpenCollective](https://opencollective.com/radarr#budget)
|
||||||
| [Sonarr](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/sonarr/) | [BitCoin/CC](https://sonarr.tv/donate)
|
| [Sonarr]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/sonarr/) | [BitCoin/CC](https://sonarr.tv/donate)
|
||||||
| [NZBHydra](https://geek-cookbook.funkypenguin.co.nz/)recipes/autopirate/nzbhydra/) | [Cryptocurrency](https://github.com/theotherp/nzbhydra2)
|
| [NZBHydra]https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/nzbhydra/) | [Cryptocurrency](https://github.com/theotherp/nzbhydra2)
|
||||||
| [Calibre](https://calibre-ebook.com/) | [Credit Card](https://calibre-ebook.com/donate) / [Patreon](https://www.patreon.com/kovidgoyal) / [LibrePay](https://liberapay.com/kovidgoyal/donate)
|
| [Calibre](https://calibre-ebook.com/) | [Credit Card](https://calibre-ebook.com/donate) / [Patreon](https://www.patreon.com/kovidgoyal) / [LibrePay](https://liberapay.com/kovidgoyal/donate)
|
||||||
| [LinuxServer.io](https://www.linuxserver.io) | [PayPal](https://www.linuxserver.io/donate)
|
| [LinuxServer.io](https://www.linuxserver.io) | [PayPal](https://www.linuxserver.io/donate)
|
||||||
| [Pi-hole](https://pi-hole.net/) | [Patreon](https://www.patreon.com/pihole/posts)
|
| [Pi-hole](https://pi-hole.net/) | [Patreon](https://www.patreon.com/pihole/posts)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ do
|
|||||||
sed -i "s/\`\`\`\`/\`\`\`/g" $file
|
sed -i "s/\`\`\`\`/\`\`\`/g" $file
|
||||||
|
|
||||||
# Can't use relative paths in a book, so make all paths static
|
# Can't use relative paths in a book, so make all paths static
|
||||||
sed -i 's/(\//(https:\/\/geek-cookbook.funkypenguin.co.nz\/)/g' $file
|
sed -i 's/(\//https:\/\/geek-cookbook.funkypenguin.co.nz\//g' $file
|
||||||
|
|
||||||
# strip emojis
|
# strip emojis
|
||||||
tr -cd '\11\12\15\40-\176' < $file > $file-clean
|
tr -cd '\11\12\15\40-\176' < $file > $file-clean
|
||||||
|
|||||||
Reference in New Issue
Block a user