Correct spelling of recipes once and for all
@@ -9,15 +9,15 @@
|
|||||||
|
|
||||||
## Recently added recipes
|
## Recently added recipes
|
||||||
|
|
||||||
* Added [Wetty](/recipies/wetty/), a remote terminal client in your web browser (_22 Nov 2018_)
|
* Added [Wetty](/recipes/wetty/), a remote terminal client in your web browser (_22 Nov 2018_)
|
||||||
* Added [PrivateBin](/recipies/privatebin/), a self-hosted pastebin alternative (_5 Nov 2018_)
|
* Added [PrivateBin](/recipes/privatebin/), a self-hosted pastebin alternative (_5 Nov 2018_)
|
||||||
* Added [Realms](/recipies/realms/), another git-based wiki, like [Gollum](/recipies/gollum/), but including basic user auth and registration
|
* Added [Realms](/recipes/realms/), another git-based wiki, like [Gollum](/recipes/gollum/), but including basic user auth and registration
|
||||||
* Added a list of useful funkypenguin Docker [containers](/reference/containers/) (_7 Oct 2018_)
|
* Added a list of useful funkypenguin Docker [containers](/reference/containers/) (_7 Oct 2018_)
|
||||||
* Added [Swarmprom](/recipies/swarmprom/), the sexiest way visualise detailed performance metrics from your swarm (_17 Sep 2018_)
|
* Added [Swarmprom](/recipes/swarmprom/), the sexiest way visualise detailed performance metrics from your swarm (_17 Sep 2018_)
|
||||||
|
|
||||||
## Recent improvements
|
## Recent improvements
|
||||||
|
|
||||||
* [Autopirate](/recipies/autopirate/start/) uber-recipe updated for [Heimdall](/recipies/autopirate/heimdall/) (_an application-launching dashboard with support for inline stats from supported applications_) (_7 Oct 2018_)
|
* [Autopirate](/recipes/autopirate/start/) uber-recipe updated for [Heimdall](/recipes/autopirate/heimdall/) (_an application-launching dashboard with support for inline stats from supported applications_) (_7 Oct 2018_)
|
||||||
* [Autopirate](/recipies/autopirate/start/) uber-recipe updated for [Lidarr](/recipies/autopirate/lidarr/) (_like Sonarr/Radarr for music, an alternative to Headphones_) (_19 Sep 2018_)
|
* [Autopirate](/recipes/autopirate/start/) uber-recipe updated for [Lidarr](/recipes/autopirate/lidarr/) (_like Sonarr/Radarr for music, an alternative to Headphones_) (_19 Sep 2018_)
|
||||||
* [GitLab](/recipies/gitlab/) recipe updated with missing env variables, brought up to scratch with more recent design conventions (_14 Jun 2018_)
|
* [GitLab](/recipes/gitlab/) recipe updated with missing env variables, brought up to scratch with more recent design conventions (_14 Jun 2018_)
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd/) component of [autopirate](/recipies/autopirate/start/) recipe updated for new hostname validation check in recent version (_10 Jun 2018_)
|
* [SABnzbd](/recipes/autopirate/sabnzbd/) component of [autopirate](/recipes/autopirate/start/) recipe updated for new hostname validation check in recent version (_10 Jun 2018_)
|
||||||
|
|||||||
@@ -14,19 +14,19 @@ ha-docker-swarm/traefik.md
|
|||||||
ha-docker-swarm/docker-swarm-mode.md
|
ha-docker-swarm/docker-swarm-mode.md
|
||||||
ha-docker-swarm/duplicity.md
|
ha-docker-swarm/duplicity.md
|
||||||
|
|
||||||
sections/recipies.md
|
sections/recipes.md
|
||||||
recipies/mail.md
|
recipes/mail.md
|
||||||
recipies/gitlab.md
|
recipes/gitlab.md
|
||||||
recipies/gitlab-runner.md
|
recipes/gitlab-runner.md
|
||||||
recipies/wekan.md
|
recipes/wekan.md
|
||||||
recipies/huginn.md
|
recipes/huginn.md
|
||||||
recipies/kanboard.md
|
recipes/kanboard.md
|
||||||
recipies/miniflux.md
|
recipes/miniflux.md
|
||||||
recipies/ghost.md
|
recipes/ghost.md
|
||||||
recipies/piwik.md
|
recipes/piwik.md
|
||||||
recipies/autopirate.md
|
recipes/autopirate.md
|
||||||
recipies/nextcloud.md
|
recipes/nextcloud.md
|
||||||
recipies/portainer.md
|
recipes/portainer.md
|
||||||
|
|
||||||
sections/reference.md
|
sections/reference.md
|
||||||
reference/oauth_proxy.md
|
reference/oauth_proxy.md
|
||||||
|
|||||||
BIN
manuscript/images/sso-stack-keycloak-1.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
manuscript/images/sso-stack-keycloak-2.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
manuscript/images/sso-stack-keycloak-3.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
manuscript/images/sso-stack-keycloak-4.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
manuscript/images/sso-stack-lam-1.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
manuscript/images/sso-stack-lam-2.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
manuscript/images/sso-stack-lam-3.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
manuscript/images/sso-stack-lam-4.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
manuscript/images/sso-stack-lam-5.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
manuscript/images/sso-stack-lam-6.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
manuscript/images/sso-stack-lam-7.png
Normal file
|
After Width: | Height: | Size: 251 KiB |
@@ -1,6 +1,6 @@
|
|||||||
# What is this?
|
# What is this?
|
||||||
|
|
||||||
The "**[Geek's Cookbook](https://geek-cookbook.funkypenguin.co.nz)**" is a collection of guides for establishing your own highly-available docker container cluster (swarm). This swarm enables you to run self-hosted services such as [GitLab](/recipies/gitlab/), [Plex](/recipies/plex/), [NextCloud](/recipies/nextcloud/), etc. Recent updates and additions are posted on the [CHANGELOG](/CHANGELOG/).
|
The "**[Geek's Cookbook](https://geek-cookbook.funkypenguin.co.nz)**" is a collection of guides for establishing your own highly-available docker container cluster (swarm). This swarm enables you to run self-hosted services such as [GitLab](/recipes/gitlab/), [Plex](/recipes/plex/), [NextCloud](/recipes/nextcloud/), etc. Recent updates and additions are posted on the [CHANGELOG](/CHANGELOG/).
|
||||||
|
|
||||||
## Who is this for?
|
## Who is this for?
|
||||||
|
|
||||||
|
|||||||
@@ -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](/recipies/plex/)/[Emby](/recipies/emby/) library using the above tools
|
* **[Ombi](https://github.com/tidusjar/Ombi)** : provides an interface to request additions to a [Plex](/recipes/plex/)/[Emby](/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.
|
||||||
@@ -111,19 +111,19 @@ networks:
|
|||||||
|
|
||||||
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](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
### Tip your waiter (donate) 👏
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's the conclusion to the [AutoPirate](/recipies/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](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Headphones in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* Headphones (this page)
|
* Headphones (this page)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.
|
Heimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t 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](/recipies/autopirate/nzbget.md), [SABnzbd](/recipies/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](/recipes/autopirate/nzbget.md), [SABnzbd](/recipes/autopirate/sabnzbd/), and friends.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Heimdall in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Heimdall in your [AutoPirate](/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](/recipies/autopirate/) stack, include t
|
|||||||
|
|
||||||
## 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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylarr/)
|
* [Mylar](/recipes/autopirate/mylarr/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones)
|
* [Headphones](/recipes/autopirate/headphones)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* Heimdall (this page)
|
* Heimdall (this page)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Jackett in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylarr/)
|
* [Mylar](/recipes/autopirate/mylarr/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones)
|
* [Headphones](/recipes/autopirate/headphones)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* Jackett (this page)
|
* Jackett (this page)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include LazyLibrarian in your [AutoPirate](/recipes/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
||||||
|
|
||||||
````
|
````
|
||||||
lazylibrarian:
|
lazylibrarian:
|
||||||
@@ -63,28 +63,28 @@ 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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* Lazy Librarian (this page)
|
* Lazy Librarian (this page)
|
||||||
* [Headphones](/recipies/autopirate/headphones)
|
* [Headphones](/recipes/autopirate/headphones)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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.
|
||||||
|
|
||||||
### Tip your waiter (donate) 👏
|
### Tip your waiter (donate) 👏
|
||||||
@@ -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](/recipies/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](/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](/recipies/autopirate/headphones), but is written using the same(ish) codebase as [Radarr](/recipies/autopirate/radarr/) and [Sonarr](/recipies/autopirate/sonarr). It's blazingly fast, and includes beautiful album/artist art. Lidarr supports [SABnzbd](/recipies/autopirate/sabnzbd/), [NZBGet](/recipies/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](/recipes/autopirate/headphones), but is written using the same(ish) codebase as [Radarr](/recipes/autopirate/radarr/) and [Sonarr](/recipes/autopirate/sonarr). It's blazingly fast, and includes beautiful album/artist art. Lidarr supports [SABnzbd](/recipes/autopirate/sabnzbd/), [NZBGet](/recipes/autopirate/nzbget/), Transmission, µTorrent, Deluge and Blackhole (_just like Sonarr / Radarr_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Lidarr in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Lidarr in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](https://github.com/evilhero/mylar)
|
* [Mylar](https://github.com/evilhero/mylar)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* Lidarr (this page)
|
* Lidarr (this page)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Mylar in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* Mylar (this page)
|
* Mylar (this page)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones)
|
* [Headphones](/recipes/autopirate/headphones)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/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](/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](/recipies/autopirate/) stack
|
To include NZBGet in your [AutoPirate](/recipes/autopirate/) stack
|
||||||
(_The only reason you **wouldn't** use NZBGet, would be if you were using [SABnzbd](/recipies/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](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* NZBGet (this page)
|
* NZBGet (this page)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include NZBHydra in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* NZBHydra (this page)
|
* NZBHydra (this page)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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)](/recipies/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)](/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](/recipies/autopirate/nzbget/) or [SABnzbd](/recipies/autopirate/sabnzbd/)
|
* Add results to [NZBGet](/recipes/autopirate/nzbget/) or [SABnzbd](/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](/recipies/autopirate/sonarr/), [Radarr](/recipies/autopirate/radarr/), [NZBGet](/recipies/autopirate/nzbget.md), [SABnzbd](/recipies/autopirate/sabnzbd/), nzb360, CouchPotato, [Mylar](/recipies/autopirate/mylar/), [Lazy Librarian](/recipies/autopirate/lazylibrarian/), Sick Beard, [Jackett/Cardigann](/recipies/autopirate/jackett/), Watcher, etc.
|
* Compatible with [Sonarr](/recipes/autopirate/sonarr/), [Radarr](/recipes/autopirate/radarr/), [NZBGet](/recipes/autopirate/nzbget.md), [SABnzbd](/recipes/autopirate/sabnzbd/), nzb360, CouchPotato, [Mylar](/recipes/autopirate/mylar/), [Lazy Librarian](/recipes/autopirate/lazylibrarian/), Sick Beard, [Jackett/Cardigann](/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](/recipies/autopirate/jackett/) for this_):
|
* Torrent support (_Although I prefer [Jackett](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include NZBHydra2 in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* NZBHydra2 (this page)
|
* NZBHydra2 (this page)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack. Features include:
|
[Ombi](https://github.com/tidusjar/Ombi) is a useful addition to the [autopirate](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Ombi in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* Ombi (this page)
|
* Ombi (this page)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Radarr
|
# Radarr
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Radarr in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Radarr in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* Radarr (this page)
|
* Radarr (this page)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/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](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include ruTorrent in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* RTorrent (this page)
|
* RTorrent (this page)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes 📓
|
## Chef's Notes 📓
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [AutoPirate](/recipies/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](/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](/recipies/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](/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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -14,8 +14,8 @@ SABnzbd is the workhorse of the stack. It takes .nzb files as input (_manually o
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include SABnzbd in your [AutoPirate](/recipies/autopirate/) stack
|
To include SABnzbd in your [AutoPirate](/recipes/autopirate/) stack
|
||||||
(_The only reason you **wouldn't** use SABnzbd, would be if you were using [NZBGet](/recipies/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](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* SABnzbd (this page)
|
* SABnzbd (this page)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* [Sonarr](/recipies/autopirate/sonarr/)
|
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/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](/recipies/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](/recipes/autopirate/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
|
|
||||||
# Sonarr
|
# Sonarr
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
## Inclusion into AutoPirate
|
## Inclusion into AutoPirate
|
||||||
|
|
||||||
To include Sonarr in your [AutoPirate](/recipies/autopirate/) stack, include the following in your autopirate.yml stack definition file:
|
To include Sonarr in your [AutoPirate](/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](/recipies/autopirate/end/)** section:
|
Continue through the list of tools below, adding whichever tools your want to use, and finishing with the **[end](/recipes/autopirate/end/)** section:
|
||||||
|
|
||||||
* [SABnzbd](/recipies/autopirate/sabnzbd.md)
|
* [SABnzbd](/recipes/autopirate/sabnzbd.md)
|
||||||
* [NZBGet](/recipies/autopirate/nzbget.md)
|
* [NZBGet](/recipes/autopirate/nzbget.md)
|
||||||
* [RTorrent](/recipies/autopirate/rtorrent/)
|
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||||
* Sonarr (this page)
|
* Sonarr (this page)
|
||||||
* [Radarr](/recipies/autopirate/radarr/)
|
* [Radarr](/recipes/autopirate/radarr/)
|
||||||
* [Mylar](/recipies/autopirate/mylar/)
|
* [Mylar](/recipes/autopirate/mylar/)
|
||||||
* [Lazy Librarian](/recipies/autopirate/lazylibrarian/)
|
* [Lazy Librarian](/recipes/autopirate/lazylibrarian/)
|
||||||
* [Headphones](/recipies/autopirate/headphones/)
|
* [Headphones](/recipes/autopirate/headphones/)
|
||||||
* [Lidarr](/recipies/autopirate/lidarr/)
|
* [Lidarr](/recipes/autopirate/lidarr/)
|
||||||
* [NZBHydra](/recipies/autopirate/nzbhydra/)
|
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||||
* [NZBHydra2](/recipies/autopirate/nzbhydra2/)
|
* [NZBHydra2](/recipes/autopirate/nzbhydra2/)
|
||||||
* [Ombi](/recipies/autopirate/ombi/)
|
* [Ombi](/recipes/autopirate/ombi/)
|
||||||
* [Jackett](/recipies/autopirate/jackett/)
|
* [Jackett](/recipes/autopirate/jackett/)
|
||||||
* [Heimdall](/recipies/autopirate/heimdall/)
|
* [Heimdall](/recipes/autopirate/heimdall/)
|
||||||
* [End](/recipies/autopirate/end/) (launch the stack)
|
* [End](/recipes/autopirate/end/) (launch the stack)
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes 📓
|
## Chef's Notes 📓
|
||||||
@@ -4,7 +4,7 @@ hero: Heroic Hero
|
|||||||
|
|
||||||
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](/recipies/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](/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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -2,9 +2,9 @@ hero: Manage your ebook collection. Like a BOSS.
|
|||||||
|
|
||||||
# Calibre-Web
|
# Calibre-Web
|
||||||
|
|
||||||
The [AutoPirate](/recipies/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](/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](/recipies/plex/) (or [Emby](/recipies/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](/recipes/plex/) (or [Emby](/recipes/emby/)) for eBooks_" - it's a web-based interface to manage your eBook library, screenshot below:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ 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](/recipies/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](/recipes/nextcloud/), so that the desktop database (Calibre) can be kept synced with Calibre-Web.
|
||||||
|
|
||||||
### Tip your waiter (donate) 👏
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ This is a diversion from my usual recipes - recently I've become interested in c
|
|||||||
|
|
||||||
I honestly didn't expect to enjoy the mining process as much as I did. Part of the enjoyment was getting my hands dirty with hardware.
|
I honestly didn't expect to enjoy the mining process as much as I did. Part of the enjoyment was getting my hands dirty with hardware.
|
||||||
|
|
||||||
Since a [mining rig](/recipies/cryptominer/mining-rig/) relies on hardware, we can't really use a docker swarm for this one!
|
Since a [mining rig](/recipes/cryptominer/mining-rig/) relies on hardware, we can't really use a docker swarm for this one!
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -14,22 +14,22 @@ This recipe isn't for everyone - if you just want to make some money from crypto
|
|||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
1. Suitable system guts (_CPU, motherboard, RAM, PSU_) for your [mining rig](/recipies/cryptominer/mining-rig/)
|
1. Suitable system guts (_CPU, motherboard, RAM, PSU_) for your [mining rig](/recipes/cryptominer/mining-rig/)
|
||||||
2. [AMD](/recipies/cryptominer/amd-gpu/) / [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs (_yes, plural, since although you **can** start with just one, you'll soon get hooked!_)
|
2. [AMD](/recipes/cryptominer/amd-gpu/) / [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs (_yes, plural, since although you **can** start with just one, you'll soon get hooked!_)
|
||||||
3. A friendly operating system ([Ubuntu](https://www.ubuntu.com/)/[Debian](https://www.debian.org/)/[CentOS7](https://www.centos.org/download/)) are known to work
|
3. A friendly operating system ([Ubuntu](https://www.ubuntu.com/)/[Debian](https://www.debian.org/)/[CentOS7](https://www.centos.org/download/)) are known to work
|
||||||
4. Patience and time
|
4. Patience and time
|
||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
For readability, I've split this recipe into multiple sub-recipies, which can be found below, or in the navigation links on the right-hand side:
|
For readability, I've split this recipe into multiple sub-recipes, which can be found below, or in the navigation links on the right-hand side:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# AMD GPU
|
# AMD GPU
|
||||||
|
|
||||||
@@ -149,13 +149,13 @@ If you want to tweak the BIOS yourself, download the [Polaris bios editor](https
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your AMD (_this page_) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your AMD (_this page_) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
3. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
3. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
4. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
4. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
5. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
5. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
6. [Profit](/recipies/cryptominer/profit/)! 💰
|
6. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Exchange
|
# Exchange
|
||||||
|
|
||||||
You may be mining a particular coin, and want to hold onto it, in the hopes of long-term growth. In that case, stick it in a [wallet](/recipies/cryptominer/wallet/) and be done with it.
|
You may be mining a particular coin, and want to hold onto it, in the hopes of long-term growth. In that case, stick it in a [wallet](/recipes/cryptominer/wallet/) and be done with it.
|
||||||
|
|
||||||
You may also not care too much about the coin (you're mining for money, right?), in which case you want to "cash out" your coins into something you can spend.
|
You may also not care too much about the coin (you're mining for money, right?), in which case you want to "cash out" your coins into something you can spend.
|
||||||
|
|
||||||
@@ -37,13 +37,13 @@ Once you have enough coins in your exchange wallet, you can "trade" them into th
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to exchanges (_This page_) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to exchanges (_This page_) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
# Minerhotel
|
# Minerhotel
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
So, you have GPUs. You can mine cryptocurrency. But **what** cryptocurrency should you mine?
|
So, you have GPUs. You can mine cryptocurrency. But **what** cryptocurrency should you mine?
|
||||||
|
|
||||||
1. You could manually keep track of [whattomine](http://whattomine.com/), and launch/stop miners based on profitability/convenience, as you see fit.
|
1. You could manually keep track of [whattomine](http://whattomine.com/), and launch/stop miners based on profitability/convenience, as you see fit.
|
||||||
2. You can automate the process of mining the most profitable coin based on your GPUs' capabilities and the current market prices, and do better things with your free time! (_[receiving alerts](/recipies/crytominer/monitor/), of course, if anything stops working!_)
|
2. You can automate the process of mining the most profitable coin based on your GPUs' capabilities and the current market prices, and do better things with your free time! (_[receiving alerts](/recipes/crytominer/monitor/), of course, if anything stops working!_)
|
||||||
|
|
||||||
This recipe covers option #2 😁
|
This recipe covers option #2 😁
|
||||||
|
|
||||||
@@ -87,13 +87,13 @@ To make whattomine start automatically in future, run ```systemctl enable minerh
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with Miner Hotel 🏨 (_This page_)
|
4. Setup your miners with Miner Hotel 🏨 (_This page_)
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Mining Pools
|
# Mining Pools
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ You and your puny GPUs don't have a snowball's chance of mining a block on your
|
|||||||
|
|
||||||
This'll save you some frustration later... Next time you're watching a movie or doing something mindless, visit http://whattomine.com/, and take note of the 10-15 most profitable coins for your GPU type(s).
|
This'll save you some frustration later... Next time you're watching a movie or doing something mindless, visit http://whattomine.com/, and take note of the 10-15 most profitable coins for your GPU type(s).
|
||||||
|
|
||||||
On your [exchanges](/recipies/cryptominer/exchange/), identify the "_deposit address_" for each popular coin, and note them down for the next step.
|
On your [exchanges](/recipes/cryptominer/exchange/), identify the "_deposit address_" for each popular coin, and note them down for the next step.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
If you're wanting to mine directly to a wallet for long-term holding, then substitute your wallet public address for this deposit address.
|
If you're wanting to mine directly to a wallet for long-term holding, then substitute your wallet public address for this deposit address.
|
||||||
@@ -20,7 +20,7 @@ Now work your way through the following list of pools, creating an account on ea
|
|||||||
|
|
||||||
* [Mining Pool Hub](https://miningpoolhub.com/) (Lots of coins)
|
* [Mining Pool Hub](https://miningpoolhub.com/) (Lots of coins)
|
||||||
* [NiceHash](https://nicehash.com) (Ethereum, Decred)
|
* [NiceHash](https://nicehash.com) (Ethereum, Decred)
|
||||||
* [suprnova](https://suprnova.cc/) - Lots of coins, but, you generally need a separate login for each pool. You _also_ need to create a worker in each pool with a common username and password, for [Minerhotel](/recipies/crytominer/minerhotel/).
|
* [suprnova](https://suprnova.cc/) - Lots of coins, but, you generally need a separate login for each pool. You _also_ need to create a worker in each pool with a common username and password, for [Minerhotel](/recipes/crytominer/minerhotel/).
|
||||||
* [nanopool](https://nanopool.org/) (Ethereum, Ethereum Classic, SiaCoin, ZCash, Monero, Pascal and Electroneum)
|
* [nanopool](https://nanopool.org/) (Ethereum, Ethereum Classic, SiaCoin, ZCash, Monero, Pascal and Electroneum)
|
||||||
* [slushpool](https://slushpool.com/home/) (BTC and ZCash)
|
* [slushpool](https://slushpool.com/home/) (BTC and ZCash)
|
||||||
|
|
||||||
@@ -40,13 +40,13 @@ As noted by IronicBadger [here](https://www.linuxserver.io/2018/01/20/how-to-bui
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to exchanges (_This page_) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to exchanges (_This page_) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Mining Rig
|
# Mining Rig
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ You don't need anything fancy. Here's a photo of the rig my wife built me:
|
|||||||
I recommend this design (_with the board with little holes in it_) - it takes up more space, but I have more room to place extra components (_PSUs, hard drives, etc_), as illustrated below:
|
I recommend this design (_with the board with little holes in it_) - it takes up more space, but I have more room to place extra components (_PSUs, hard drives, etc_), as illustrated below:
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
You'll note the hard drives in the picture - that's not part of the mining requirements, it's because my rig doubles as my [Plex](/recipies/plex/) server ;)
|
You'll note the hard drives in the picture - that's not part of the mining requirements, it's because my rig doubles as my [Plex](/recipes/plex/) server ;)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -31,12 +31,12 @@ I recommend this design (_with the board with little holes in it_) - it takes up
|
|||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your mining rig 💻 (This page)
|
1. Build your mining rig 💻 (This page)
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Monitor
|
# Monitor
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
So, you're a miner! But if you're not **actively** mining, are you still a miner? This page details how to **measure** your mining activity, and how to raise an alert when a profit-affecting issue affects your miners.
|
So, you're a miner! But if you're not **actively** mining, are you still a miner? This page details how to **measure** your mining activity, and how to raise an alert when a profit-affecting issue affects your miners.
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ So, you're a miner! But if you're not **actively** mining, are you still a miner
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Since [Minerhotel](/recipies/crytominer/minerhotel/) switches currency based on what's most profitable in the moment, it's hard to gauge the impact of changes (overclocking, tweaking, mining pools) over time.
|
Since [Minerhotel](/recipes/crytominer/minerhotel/) switches currency based on what's most profitable in the moment, it's hard to gauge the impact of changes (overclocking, tweaking, mining pools) over time.
|
||||||
|
|
||||||
I hacked up a bash script which grabs performance data from the output of the miners, and throws it into an InfluxDB database, which can then be visualized using Grafana.
|
I hacked up a bash script which grabs performance data from the output of the miners, and throws it into an InfluxDB database, which can then be visualized using Grafana.
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ I've tried several iOS apps for monitoring my performance across various. The mo
|
|||||||
|
|
||||||
### Track your portfolio
|
### Track your portfolio
|
||||||
|
|
||||||
Now that you've got your coins happily cha-chinging into you [wallets](/recipies/cryptominer/wallet/) (_and potentially various [exchanges](/recipies/cryptominer/exchange/)_), you'll want to monitor the performance of your portfolio over time.
|
Now that you've got your coins happily cha-chinging into you [wallets](/recipes/cryptominer/wallet/) (_and potentially various [exchanges](/recipes/cryptominer/exchange/)_), you'll want to monitor the performance of your portfolio over time.
|
||||||
|
|
||||||
#### Web Apps
|
#### Web Apps
|
||||||
|
|
||||||
@@ -74,13 +74,13 @@ I've found the following iOS apps to be useful in tracking my portfolio (_really
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. Monitor your empire :heartbeat: (_this page_)
|
6. Monitor your empire :heartbeat: (_this page_)
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# NVidia GPU
|
# NVidia GPU
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
@@ -146,13 +146,13 @@ Play with changing your settings.conf file until you break it, and then go back
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or Nvidia (_this page_) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or Nvidia (_this page_) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -6,12 +6,12 @@ Well, that's it really. You're a cryptominer. Welcome to the party.
|
|||||||
|
|
||||||
To recap, you did all this:
|
To recap, you did all this:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or [wallets](/recipies/cryptominer/wallet/) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or [wallets](/recipes/cryptominer/wallet/) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. Profit! (_This page_) 💰
|
7. Profit! (_This page_) 💰
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
!!! warning
|
!!! warning
|
||||||
This is not a complete recipe - it's a component of the [cryptominer](/recipies/cryptominer/) "_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 [cryptominer](/recipes/cryptominer/) "_uber-recipe_", but has been split into its own page to reduce complexity.
|
||||||
|
|
||||||
# Wallet
|
# Wallet
|
||||||
|
|
||||||
@@ -23,13 +23,13 @@ I mine most of my coins to Exchanges, but I do have the following wallets:
|
|||||||
|
|
||||||
Now, continue to the next stage of your grand mining adventure:
|
Now, continue to the next stage of your grand mining adventure:
|
||||||
|
|
||||||
1. Build your [mining rig](/recipies/cryptominer/mining-rig/) 💻
|
1. Build your [mining rig](/recipes/cryptominer/mining-rig/) 💻
|
||||||
2. Setup your [AMD](/recipies/cryptominer/amd-gpu/) or [Nvidia](/recipies/cryptominer/nvidia-gpu/) GPUs 🎨
|
2. Setup your [AMD](/recipes/cryptominer/amd-gpu/) or [Nvidia](/recipes/cryptominer/nvidia-gpu/) GPUs 🎨
|
||||||
3. Sign up for [mining pools](/recipies/cryptominer/mining-pool/) :swimmer:
|
3. Sign up for [mining pools](/recipes/cryptominer/mining-pool/) :swimmer:
|
||||||
4. Setup your miners with [Miner Hotel](/recipies/cryptominer/minerhotel/) 🏨
|
4. Setup your miners with [Miner Hotel](/recipes/cryptominer/minerhotel/) 🏨
|
||||||
5. Send your coins to [exchanges](/recipies/cryptominer/exchange/) or wallets (_This page_) 💹
|
5. Send your coins to [exchanges](/recipes/cryptominer/exchange/) or wallets (_This page_) 💹
|
||||||
6. [Monitor](/recipies/cryptominer/monitor/) your empire :heartbeat:
|
6. [Monitor](/recipes/cryptominer/monitor/) your empire :heartbeat:
|
||||||
7. [Profit](/recipies/cryptominer/profit/)! 💰
|
7. [Profit](/recipes/cryptominer/profit/)! 💰
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# CryptoNote Mining Pool
|
# CryptoNote Mining Pool
|
||||||
|
|
||||||
[Cryptocurrency miners](/recipies/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](/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)
|
||||||
|
|
||||||
@@ -12,5 +12,5 @@ The fact that all these currencies share a common ancestry means that a common m
|
|||||||
|
|
||||||
## Mining Pool Recipies
|
## Mining Pool Recipies
|
||||||
|
|
||||||
* [TurtleCoin](/recipies/turtle-pool/), the no-BS, fun baby cryptocurrency
|
* [TurtleCoin](/recipes/turtle-pool/), the no-BS, fun baby cryptocurrency
|
||||||
* [Athena](/recipies/cryptonote-mining-pool/athena/), TurtleCoin's newborn baby sister
|
* [Athena](/recipes/cryptonote-mining-pool/athena/), TurtleCoin's newborn baby sister
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Athena Mining Pool
|
# Athena Mining Pool
|
||||||
|
|
||||||
[Cryptocurrency miners](/recipies/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](/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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -8,9 +8,9 @@ This recipe illustrates how to build a mining pool for [Athena](https://getathen
|
|||||||
|
|
||||||
The end result is a mining pool which looks like this: https://athx.heigh-ho.funkypenguin.co.nz/
|
The end result is a mining pool which looks like this: https://athx.heigh-ho.funkypenguin.co.nz/
|
||||||
|
|
||||||
!!! question "Isn't this just a copy/paste of your [TurtleCoin Pool Recipe](/recipies/turtle-pool/)?"
|
!!! question "Isn't this just a copy/paste of your [TurtleCoin Pool Recipe](/recipes/turtle-pool/)?"
|
||||||
|
|
||||||
Why yes. Yes it is :) But it's adjusted for Athena, which uses different containers and wallet binary names, and it's running the improved [cryptonote-nodejs-pool software](https://github.com/dvandal/cryptonote-nodejs-pool), which is common to all the [cryptonote-mining-pool](/recipies/criptonote-mining-pool/) recipies!
|
Why yes. Yes it is :) But it's adjusted for Athena, which uses different containers and wallet binary names, and it's running the improved [cryptonote-nodejs-pool software](https://github.com/dvandal/cryptonote-nodejs-pool), which is common to all the [cryptonote-mining-pool](/recipes/criptonote-mining-pool/) recipes!
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Masari Mining Pool
|
# Masari Mining Pool
|
||||||
|
|
||||||
[Cryptocurrency miners](/recipies/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](/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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ The end result is a mining pool which looks like this: https://msr.heigh-ho.funk
|
|||||||
|
|
||||||
!!! question "Isn't this just a copy/paste of your Masari Pool Recipe?"
|
!!! question "Isn't this just a copy/paste of your Masari Pool Recipe?"
|
||||||
|
|
||||||
Why yes. Yes it is :) But it's adjusted for Masari, which uses different containers and wallet binary names, and it's running the improved [cryptonote-nodejs-pool software](https://github.com/dvandal/cryptonote-nodejs-pool), which is common to all the [cryptonote-mining-pool](/recipies/criptonote-mining-pool/) recipies!
|
Why yes. Yes it is :) But it's adjusted for Masari, which uses different containers and wallet binary names, and it's running the improved [cryptonote-nodejs-pool software](https://github.com/dvandal/cryptonote-nodejs-pool), which is common to all the [cryptonote-mining-pool](/recipes/criptonote-mining-pool/) recipes!
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Emby
|
# Emby
|
||||||
|
|
||||||
[Emby](https://emby.media/) (_think "M.B." or "Media Browser"_) is best described as "_like [Plex](/recipies/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](/recipes/plex/) but different_" 😁 - It's a bit geekier and less polished than Plex, but it allows for more flexibility and customization.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
60
manuscript/recipes/flightairmap.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
flightairmap:
|
||||||
|
image: richarvey/nginx-php-fpm
|
||||||
|
volumes:
|
||||||
|
- "/var/data/flightairmap/conf:/var/www/html/conf"
|
||||||
|
- "/var/data/flightairmap/scripts:/var/www/html/scripts"
|
||||||
|
- "/var/data/flightairmap/html:/var/www/flightairmap/"
|
||||||
|
env_file:
|
||||||
|
- "/var/data/config/flightairmap/flightairmap.env"
|
||||||
|
environment:
|
||||||
|
- PHP_MEM_LIMIT=256
|
||||||
|
- RUN_SCRIPTS=1
|
||||||
|
- MYSQL_HOST=${MYSQL_HOST}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
|
- MYSQL_USER=${MYSQL_USER}
|
||||||
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
- traefik_public
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- traefik.frontend.rule=Host:www.observe.global
|
||||||
|
- traefik.docker.network=traefik_public
|
||||||
|
- traefik.port=80
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:10
|
||||||
|
env_file: /var/data/config/flightairmap/flightairmap.env
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
volumes:
|
||||||
|
- /var/data/runtime/flightairmap/db:/var/lib/mysql
|
||||||
|
|
||||||
|
db-backup:
|
||||||
|
image: mariadb:10
|
||||||
|
env_file: /var/data/config/flightairmap/flightairmap.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/flightairmap/database-dump:/dump
|
||||||
|
entrypoint: |
|
||||||
|
bash -c 'bash -s <<EOF
|
||||||
|
trap "break;exit" SIGHUP SIGINT SIGTERM
|
||||||
|
sleep 2m
|
||||||
|
while /bin/true; do
|
||||||
|
mysqldump -h db --all-databases | gzip -c > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.sql.gz
|
||||||
|
(ls -t /dump/dump*.sql.gz|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.sql.gz)|sort|uniq -u|xargs rm -- {}
|
||||||
|
sleep $$BACKUP_FREQUENCY
|
||||||
|
done
|
||||||
|
EOF'
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik_public:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
|
driver: overlay
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.44.0/24
|
||||||
@@ -2,7 +2,7 @@ hero: Kanboard - A recipe to get your personal kanban on
|
|||||||
|
|
||||||
# Kanboard
|
# Kanboard
|
||||||
|
|
||||||
Kanboard is a Kanban tool, developed by [Frédéric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux](/recipies/miniflux/)_)
|
Kanboard is a Kanban tool, developed by [Frédéric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of my favorite RSS reader, [Miniflux](/recipes/miniflux/)_)
|
||||||
|
|
||||||
!!! tip "Sponsored Project"
|
!!! tip "Sponsored Project"
|
||||||
Kanboard is one of my [sponsored projects](/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](/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! 😓
|
||||||
@@ -2,7 +2,7 @@ hero: Docker-mailserver - A recipe for a self-contained mailserver and friends
|
|||||||
|
|
||||||
# Mail Server
|
# Mail Server
|
||||||
|
|
||||||
Many of the recipies that follow require email access of some kind. It's normally possible to use a hosted service such as SendGrid, or just a gmail account. If (like me) you'd like to self-host email for your stacks, then the following recipe provides a full-stack mail server running on the docker HA swarm.
|
Many of the recipes that follow require email access of some kind. It's normally possible to use a hosted service such as SendGrid, or just a gmail account. If (like me) you'd like to self-host email for your stacks, then the following recipe provides a full-stack mail server running on the docker HA swarm.
|
||||||
|
|
||||||
Of value to me in choosing docker-mailserver were:
|
Of value to me in choosing docker-mailserver were:
|
||||||
|
|
||||||
127
manuscript/recipes/mattermost.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# MatterMost
|
||||||
|
|
||||||
|
Intro
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Details
|
||||||
|
|
||||||
|
## Ingredients
|
||||||
|
|
||||||
|
1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
|
2. [Traefik](/ha-docker-swarm/traefik_public) configured per design
|
||||||
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
### Setup data locations
|
||||||
|
|
||||||
|
We'll need several directories to bind-mount into our container, so create them in /var/data/wekan:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir -p /var/data/mattermost/{cert,config,data,logs,plugins,database-dump}
|
||||||
|
mkdir -p /var/data/realtime/mattermost/database
|
||||||
|
```
|
||||||
|
|
||||||
|
### Prepare environment
|
||||||
|
|
||||||
|
Create mattermost.env, and populate with the following variables
|
||||||
|
```
|
||||||
|
POSTGRES_USER=mmuser
|
||||||
|
POSTGRES_PASSWORD=mmuser_password
|
||||||
|
POSTGRES_DB=mattermost
|
||||||
|
MM_USERNAME=mmuser
|
||||||
|
MM_PASSWORD=mmuser_password
|
||||||
|
MM_DBNAME=mattermost
|
||||||
|
```
|
||||||
|
|
||||||
|
Now create mattermost-backup.env, and populate with the following variables:
|
||||||
|
```
|
||||||
|
PGHOST=db
|
||||||
|
PGUSER=mmuser
|
||||||
|
PGPASSWORD=mmuser_password
|
||||||
|
BACKUP_NUM_KEEP=7
|
||||||
|
BACKUP_FREQUENCY=1d
|
||||||
|
```
|
||||||
|
|
||||||
|
### Setup Docker Swarm
|
||||||
|
|
||||||
|
Create a docker swarm config file in docker-compose syntax (v3), something like this:
|
||||||
|
|
||||||
|
!!! 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``` 👍
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mattermost/mattermost-prod-db
|
||||||
|
env_file: /var/data/config/mattermost/mattermost.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/realtime/mattermost/database:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
app:
|
||||||
|
image: mattermost/mattermost-team-edition
|
||||||
|
env_file: /var/data/config/mattermost/mattermost.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/mattermost/config:/mattermost/config:rw
|
||||||
|
- /var/data/mattermost/data:/mattermost/data:rw
|
||||||
|
- /var/data/mattermost/logs:/mattermost/logs:rw
|
||||||
|
- /var/data/mattermost/plugins:/mattermost/plugins:rw
|
||||||
|
|
||||||
|
db-backup:
|
||||||
|
image: mattermost/mattermost-prod-db
|
||||||
|
env_file: /var/data/config/mattermost/mattermost-backup.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/mattermost/database-dump:/dump
|
||||||
|
entrypoint: |
|
||||||
|
bash -c 'bash -s <<EOF
|
||||||
|
trap "break;exit" SIGHUP SIGINT SIGTERM
|
||||||
|
sleep 2m
|
||||||
|
while /bin/true; do
|
||||||
|
pg_dump -Fc > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.psql
|
||||||
|
(ls -t /dump/dump*.psql|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.psql)|sort|uniq -u|xargs rm -- {}
|
||||||
|
sleep $$BACKUP_FREQUENCY
|
||||||
|
done
|
||||||
|
EOF'
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik_public:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
|
driver: overlay
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.40.0/24
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! 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](/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Serving
|
||||||
|
|
||||||
|
### Launch Wekan stack
|
||||||
|
|
||||||
|
Launch the Wekan stack by running ```docker stack deploy wekan -c <path -to-docker-compose.yml>```
|
||||||
|
|
||||||
|
Log into your new instance at https://**YOUR-FQDN**, with user "root" and the password you specified in gitlab.env.
|
||||||
|
|
||||||
|
## Chef's Notes
|
||||||
|
|
||||||
|
1. If you wanted to expose the Wekan UI directly, you could remove the oauth2_proxy from the design, and move the traefik_public-related labels directly to the wekan container. You'd also need to add the traefik_public network to the wekan container.
|
||||||
|
|
||||||
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
|
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||||
|
|
||||||
|
### Your comments? 💬
|
||||||
@@ -2,7 +2,7 @@ hero: Miniflux - A recipe for a lightweight minimalist RSS reader
|
|||||||
|
|
||||||
# Miniflux
|
# Miniflux
|
||||||
|
|
||||||
Miniflux is a lightweight RSS reader, developed by [Frédéric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard](/recipies/kanboard/)_)
|
Miniflux is a lightweight RSS reader, developed by [Frédéric Guillot](https://github.com/fguillot). (_Who also happens to be the developer of the favorite Open Source Kanban app, [Kanboard](/recipes/kanboard/)_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ This recipe is based on the official NextCloud docker image, but includes seprat
|
|||||||
|
|
||||||
### Setup data locations
|
### Setup data locations
|
||||||
|
|
||||||
We'll need several directories for [static data](/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](/recipies/duplicity/)_)
|
We'll need several directories for [static data](/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](/recipes/duplicity/)_)
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir /var/data/nextcloud
|
mkdir /var/data/nextcloud
|
||||||
@@ -177,7 +177,7 @@ Then navigate to https://<your FQDN>/index.php/settings/admin/additional, scroll
|
|||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|
||||||
1. Since many of my other recipies use PostgreSQL, I'd have preferred to use Postgres over MariaDB, but MariaDB seems to be the [preferred database type](https://github.com/nextcloud/server/issues/5912).
|
1. Since many of my other recipes use PostgreSQL, I'd have preferred to use Postgres over MariaDB, but MariaDB seems to be the [preferred database type](https://github.com/nextcloud/server/issues/5912).
|
||||||
|
|
||||||
### Tip your waiter (donate) 👏
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
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](/recipies/homeassistant/) when you arrive/leave home
|
* Performing automated actions in [HomeAssistant](/recipes/homeassistant/) when you arrive/leave home
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Realms
|
# Realms
|
||||||
|
|
||||||
Realms is a git-based wiki (_like [Gollum](/recipies/gollum/), but with basic authentication and registration_)
|
Realms is a git-based wiki (_like [Gollum](/recipes/gollum/), but with basic authentication and registration_)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ Features include:
|
|||||||
|
|
||||||
!!! warning "Project likely abandoned"
|
!!! warning "Project likely abandoned"
|
||||||
|
|
||||||
In my limited trial, Realms seems _less_ useful than [Gollum](/recipies/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](/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.
|
||||||
|
|
||||||
44
manuscript/recipes/sso-stack.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
hero: SSO for all your stack elements 🎁
|
||||||
|
|
||||||
|
# SSO Stack
|
||||||
|
|
||||||
|
Most of the recipes in the cookbook are stand-alone - you can deploy and use them in isolation. I was approached recently by an anonymous sponsor, who needed a stack which would allow the combination of several collaborative tools, in a manner which permits "single signon (SSO)". I.e., the goal of the design was that a user would be provisioned _once_, and thereafter have transparent access to multiple separate applications.
|
||||||
|
|
||||||
|
The SSO Stack "uber-recipe" is the result of this design.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This recipe presents a method to combine multiple tools into a single swarm deployment, and make them available securely.
|
||||||
|
|
||||||
|
## Menu
|
||||||
|
|
||||||
|
Tools included in the SSO stack are:
|
||||||
|
|
||||||
|
* **[OpenLDAP](https://www.openldap.org/)** : Provides Authentication backend
|
||||||
|
* **[LDAP Account Manager ](https://www.ldap-account-manager.org)** (LAM) : A Web_UI to manage LDAP accounts
|
||||||
|
* **[KeyCloak](https://www.keycloak.org/)** is an open source identity and access management solution, providing SSO and 2FA capabilities backed into authentication provides (like OpenLDAP)
|
||||||
|
* **[docker-mailserver](https://github.com/tomav/docker-mailserver)** : A fullstack, simple mail platform including SMTP, IMAPS, and spam filtering components
|
||||||
|
* **[RainLoop](https://www.rainloop.net/)** : A fast, modern webmail client
|
||||||
|
* **[GitLab](https://gitlab.org)** : A powerful collaborative git-based developmenet platform
|
||||||
|
* **[NextCloud](https://www.nextcloud.org)** : A file share and communication platform
|
||||||
|
|
||||||
|
This is a complex recipe, and should be deployed in a sequential manner (_i.e. you need OpenLDAP with LDAP Account Manager, to enable KeyCloak, in order to get SSO available for NextCloud, etc.._)
|
||||||
|
|
||||||
|
## Ingredients
|
||||||
|
|
||||||
|
1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
|
2. [Traefik](/ha-docker-swarm/traefik) configured per design
|
||||||
|
3. Access to NZB indexers and Usenet servers
|
||||||
|
4. DNS entries configured for each of the NZB tools in this recipe that you want to use
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
Now work your way through the list of tools below, adding whichever tools your want to use, and finishing with the **end** section:
|
||||||
|
|
||||||
|
* [OpenLDAP](/recipes/sso-stack/openldap.md)
|
||||||
|
|
||||||
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
|
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||||
|
|
||||||
|
### Your comments? 💬
|
||||||
100
manuscript/recipes/sso-stack/collabora.md
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
don't use special characetrs in your password
|
||||||
|
|
||||||
|
|
||||||
|
perl -pi -e "s/<termination (.*)>.*<\/termination>/<termination \1>${termination}<\/termination>/" /etc/loolwsd/loolwsd.xml
|
||||||
|
|
||||||
|
Cretaed /var/data/collabora/loolwsd.xml and bind-mounted it for editing ssl bool = false
|
||||||
|
|
||||||
|
docker-compose.yml
|
||||||
|
|
||||||
|
```
|
||||||
|
version: "3.0"
|
||||||
|
|
||||||
|
services:
|
||||||
|
local-collabora:
|
||||||
|
image: funkypenguin/collabora
|
||||||
|
# the funkypenguin version has a patch to include "termination" behind SSL-terminating reverse proxy (traefik)
|
||||||
|
#image: collabora/code
|
||||||
|
env_file: /var/data/config/collabora/collabora.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/collabora/loolwsd.xml:/etc/loolwsd/loolwsd.xml
|
||||||
|
cap_add:
|
||||||
|
- MKNOD
|
||||||
|
ports:
|
||||||
|
- 9980:9980
|
||||||
|
```
|
||||||
|
|
||||||
|
nginx.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
upstream collabora-upstream {
|
||||||
|
# Run collabora under docker-compose, since it needs MKNOD cap, which can't be provided by Docker
|
||||||
|
server 172.17.0.1:9980;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name collabora.observe.global;
|
||||||
|
|
||||||
|
# static files
|
||||||
|
location ^~ /loleaflet {
|
||||||
|
proxy_pass http://collabora-upstream;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
}
|
||||||
|
|
||||||
|
# WOPI discovery URL
|
||||||
|
location ^~ /hosting/discovery {
|
||||||
|
proxy_pass http://collabora-upstream;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main websocket
|
||||||
|
location ~ /lool/(.*)/ws$ {
|
||||||
|
proxy_pass http://collabora-upstream;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_read_timeout 36000s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Admin Console websocket
|
||||||
|
location ^~ /lool/adminws {
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_pass http://collabora-upstream;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_read_timeout 36000s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# download, presentation and image upload
|
||||||
|
location ~ /lool {
|
||||||
|
proxy_pass https://collabora-upstream;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
collabora.yml
|
||||||
|
```
|
||||||
|
version: "3.0"
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
image: nginx:latest
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- traefik.frontend.rule=Host:collabora.observe.global
|
||||||
|
- traefik.docker.network=traefik_public
|
||||||
|
- traefik.port=80
|
||||||
|
- traefik.frontend.passHostHeader=true
|
||||||
|
volumes:
|
||||||
|
- /var/data/collabora/nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik_public:
|
||||||
|
external: true
|
||||||
|
```
|
||||||
62
manuscript/recipes/sso-stack/docker-mailserver.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
docker run -ti --rm \
|
||||||
|
-v "$(pwd)"/letsencrypt:/etc/letsencrypt \
|
||||||
|
-v "$(pwd)"/cloudflare.ini:/cloudflare.ini \
|
||||||
|
certbot/dns-cloudflare \
|
||||||
|
certonly \
|
||||||
|
--dns-cloudflare \
|
||||||
|
--dns-cloudflare-credentials=/cloudflare.ini \
|
||||||
|
-d mail.observe.global
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
root@cloud:/var/data/docker-mailserver# docker run -ti --rm -v "$(pwd)"/letsencrypt:/etc/letsencrypt -v "$(pwd)"/cloudflare.ini:/cloudflare.ini certbot/dns-cloudflare certonly --dns-cloudflare --dns-cloudflare-credentials=/cloudflare.ini -d mail.observe.global
|
||||||
|
Saving debug log to /var/log/letsencrypt/letsencrypt.log
|
||||||
|
Plugins selected: Authenticator dns-cloudflare, Installer None
|
||||||
|
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
|
||||||
|
cancel): cam@0sum.club
|
||||||
|
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Please read the Terms of Service at
|
||||||
|
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
|
||||||
|
agree in order to register with the ACME server at
|
||||||
|
https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
(A)gree/(C)ancel: A
|
||||||
|
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Would you be willing to share your email address with the Electronic Frontier
|
||||||
|
Foundation, a founding partner of the Let's Encrypt project and the non-profit
|
||||||
|
organization that develops Certbot? We'd like to send you email about our work
|
||||||
|
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
(Y)es/(N)o: N
|
||||||
|
Obtaining a new certificate
|
||||||
|
Performing the following challenges:
|
||||||
|
dns-01 challenge for mail.observe.global
|
||||||
|
Unsafe permissions on credentials configuration file: /cloudflare.ini
|
||||||
|
Waiting 10 seconds for DNS changes to propagate
|
||||||
|
Waiting for verification...
|
||||||
|
Cleaning up challenges
|
||||||
|
|
||||||
|
IMPORTANT NOTES:
|
||||||
|
- Congratulations! Your certificate and chain have been saved at:
|
||||||
|
/etc/letsencrypt/live/mail.observe.global/fullchain.pem
|
||||||
|
Your key file has been saved at:
|
||||||
|
/etc/letsencrypt/live/mail.observe.global/privkey.pem
|
||||||
|
Your cert will expire on 2019-01-30. To obtain a new or tweaked
|
||||||
|
version of this certificate in the future, simply run certbot
|
||||||
|
again. To non-interactively renew *all* of your certificates, run
|
||||||
|
"certbot renew"
|
||||||
|
- Your account credentials have been saved in your Certbot
|
||||||
|
configuration directory at /etc/letsencrypt. You should make a
|
||||||
|
secure backup of this folder now. This configuration directory will
|
||||||
|
also contain certificates and private keys obtained by Certbot so
|
||||||
|
making regular backups of this folder is ideal.
|
||||||
|
- If you like Certbot, please consider supporting our work by:
|
||||||
|
|
||||||
|
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
|
||||||
|
Donating to EFF: https://eff.org/donate-le
|
||||||
|
|
||||||
|
root@cloud:/var/data/docker-mailserver#
|
||||||
|
```
|
||||||
122
manuscript/recipes/sso-stack/gitlab.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
https://edenmal.moe/post/2018/GitLab-Keycloak-SAML-2-0-OmniAuth-Provider/
|
||||||
|
|
||||||
|
OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL
|
||||||
|
OAUTH_SAML_IDP_CERT_FINGERPRINT
|
||||||
|
OAUTH_SAML_IDP_SSO_TARGET_URL
|
||||||
|
OAUTH_SAML_ISSUER
|
||||||
|
OAUTH_SAML_NAME_IDENTIFIER_FORMAT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gitlab_rails['omniauth_enabled'] = true
|
||||||
|
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
|
||||||
|
gitlab_rails['omniauth_block_auto_created_users'] = false
|
||||||
|
gitlab_rails['omniauth_auto_link_saml_user'] = true
|
||||||
|
gitlab_rails['omniauth_providers'] = [
|
||||||
|
{
|
||||||
|
name: 'saml',
|
||||||
|
label: 'SAML',
|
||||||
|
args: {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
attribute_statements: { username: ['username'] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
OAUTH_BLOCK_AUTO_CREATED_USERS=false
|
||||||
|
OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=saml
|
||||||
|
OAUTH_ALLOW_SSO=saml
|
||||||
|
OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=https://gitlab.observe.global/users/auth/saml/callback
|
||||||
|
OAUTH_SAML_IDP_CERT_FINGERPRINT=41f1c588c928291c5dc30d11161d685231509ab8
|
||||||
|
OAUTH_SAML_IDP_SSO_TARGET_URL=https://keycloak.observe.global/auth/realms/observe/protocol/sam
|
||||||
|
OAUTH_SAML_ISSUER=https://gitlab.observe.global
|
||||||
|
OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
|
||||||
|
DISBALED_OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=mail
|
||||||
|
DISBALEDOAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=cnam
|
||||||
|
DISBALEDOAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=cname
|
||||||
|
DISBALEDOAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=sn
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"clients": [
|
||||||
|
{
|
||||||
|
"clientId": "https://gitlab.observe.global",
|
||||||
|
"rootUrl": "https://gitlab.observe.global",
|
||||||
|
"enabled": true,
|
||||||
|
"redirectUris": [
|
||||||
|
"https://gitlab.observe.global/*"
|
||||||
|
],
|
||||||
|
"protocol": "saml",
|
||||||
|
"attributes": {
|
||||||
|
"saml.assertion.signature": "false",
|
||||||
|
"saml.force.post.binding": "true",
|
||||||
|
"saml.multivalued.roles": "false",
|
||||||
|
"saml.encrypt": "false",
|
||||||
|
"saml.server.signature": "true",
|
||||||
|
"saml.server.signature.keyinfo.ext": "false",
|
||||||
|
"saml.signature.algorithm": "RSA_SHA256",
|
||||||
|
"saml_force_name_id_format": "false",
|
||||||
|
"saml.client.signature": "false",
|
||||||
|
"saml.authnstatement": "true",
|
||||||
|
"saml_name_id_format": "username",
|
||||||
|
"saml.onetimeuse.condition": "false",
|
||||||
|
"saml_signature_canonicalization_method": "http://www.w3.org/2001/10/xml-exc-c14n#"
|
||||||
|
},
|
||||||
|
"protocolMappers": [
|
||||||
|
{
|
||||||
|
"name": "email",
|
||||||
|
"protocol": "saml",
|
||||||
|
"protocolMapper": "saml-user-property-mapper",
|
||||||
|
"consentRequired": false,
|
||||||
|
"config": {
|
||||||
|
"user.attribute": "email",
|
||||||
|
"attribute.name": "email"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "first_name",
|
||||||
|
"protocol": "saml",
|
||||||
|
"protocolMapper": "saml-user-property-mapper",
|
||||||
|
"consentRequired": false,
|
||||||
|
"config": {
|
||||||
|
"user.attribute": "firstName",
|
||||||
|
"attribute.name": "first_name"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "last_name",
|
||||||
|
"protocol": "saml",
|
||||||
|
"protocolMapper": "saml-user-property-mapper",
|
||||||
|
"consentRequired": false,
|
||||||
|
"config": {
|
||||||
|
"user.attribute": "lastName",
|
||||||
|
"attribute.name": "last_name"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "username",
|
||||||
|
"protocol": "saml",
|
||||||
|
"protocolMapper": "saml-user-property-mapper",
|
||||||
|
"consentRequired": false,
|
||||||
|
"config": {
|
||||||
|
"user.attribute": "username",
|
||||||
|
"attribute.name": "username"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICnTCCAYUCBgFmyRcGiTANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdvYnNlcnZlMB4XDTE4MTAzMTA3NDUyMVoXDTI4MTAzMTA3NDcwMVowEjEQMA4GA1UEAwwHb2JzZXJ2ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI/quQQfWBuQgvxpkcqzkPmXmiO/XE9KmSLcoIOJuDMXXmev9WFtXYbKfozjrZgC4P0uPQLAXJU+2hO7U5fkaG2IuORCK/fKp+cD3GXVO38mxpGFdk3k2eTLUOFfVAUXpPT9dYPSs3EpiB/llslErBBG7bkfwHr06xjU2sMqo/pRbKDLvrqAaBMuHlgOHhAVWWxyzQuUF0kxHxsAbpOnzpiMMOZxhKKZiNEpozIOESplIKFsEYiS4w60z5ROmYEBVqMKP5rsEop9XgS+JNaqfjDbW/NOgT13bvxiA6HxEB0UGt2tWxVsnxpzp3v5rxnXzo1wZQO5KQYWNxJT9Wb9sy8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIyrT5q/TC3CVF7YOAIrPCq+TEANnoaTUuq2BCG6ory+cnnI9T/qoW9c2GVYSrmdQraY8H3o4J+Trjz2OCmuk4Xdp326Lz7hGPuF6i2p9Dmbu696WDlwZHMm+Dn6lMegGb1WKJGAIB9JBss5lHqGbrAxUav9pWukKBZaNsFVnycOMGLQJuROf3jh/MNd7tcIhxAXQxWf//ZfYH7JfeK973L27oGyK+CrxGwsHIsuwSrkJVAPvWPADiPQFqExK/bC1DPGQO4YAV5rCJPTIwXL5I6l5Al2hw1FcAMND2bTA3MgYzg1aQvAJGO7+wQNQYOPkuhR1Hhb1JWGYj1YOdPnG+g==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
|
||||||
|
https://edenmal.moe/post/2018/GitLab-Keycloak-SAML-2-0-OmniAuth-Provider/
|
||||||
170
manuscript/recipes/sso-stack/keycloak.md
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
# KeyCloak
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
While this could stand on its own as a standalone recipe, it's a component of the [sso-stack](/recipes/sso-stack/) "_uber-recipe_", and is written in the expectation that the entire SSO stack is being deployed.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Ingredients
|
||||||
|
|
||||||
|
1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
|
2. [Traefik](/ha-docker-swarm/traefik_public) configured per design
|
||||||
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
### Setup data locations
|
||||||
|
|
||||||
|
We'll need several directories to bind-mount into our container for both runtime and backup data, so create them as follows
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /var/data/runtime/keycloak/database
|
||||||
|
mkdir /var/data/keycloak/database-dump
|
||||||
|
```
|
||||||
|
|
||||||
|
### Prepare environment
|
||||||
|
|
||||||
|
Create /var/data/keycloak/keycloak.env, and populate with the following variables, customized for your own domain struction. Take care with LDAP_DOMAIN, this is core to the rest of the [sso-stack](/recipes/sso-stack/), and can't easily be changed later.
|
||||||
|
```
|
||||||
|
# Technically, this could be auto-detected, but we prefer to be prescriptive
|
||||||
|
DB_VENDOR=postgres
|
||||||
|
DB_DATABASE=keycloak
|
||||||
|
DB_ADDR=db
|
||||||
|
DB_USER=keycloak
|
||||||
|
DB_PASSWORD=myuberpassword
|
||||||
|
KEYCLOAK_USER=admin
|
||||||
|
KEYCLOAK_PASSWORD=ilovepasswords
|
||||||
|
|
||||||
|
# This is required to run keycloak behind traefik
|
||||||
|
PROXY_ADDRESS_FORWARDING=true
|
||||||
|
|
||||||
|
# What's our hostname?
|
||||||
|
KEYCLOAK_HOSTNAME=cloud.example.com
|
||||||
|
|
||||||
|
# Tell Postgress what user/password to create
|
||||||
|
POSTGRES_USER=keycloak
|
||||||
|
POSTGRES_PASSWORD=myuberpassword
|
||||||
|
```
|
||||||
|
|
||||||
|
Create /var/data/keycloak/keycloak-backup.env, and populate with the following, so that your database can be backed up to the filesystem, daily:
|
||||||
|
|
||||||
|
```
|
||||||
|
PGHOST=db
|
||||||
|
PGUSER=keycloak
|
||||||
|
PGPASSWORD=myuberpassword
|
||||||
|
BACKUP_NUM_KEEP=7
|
||||||
|
BACKUP_FREQUENCY=1d
|
||||||
|
```
|
||||||
|
|
||||||
|
### Setup Docker Swarm
|
||||||
|
|
||||||
|
Create a docker swarm config file in docker-compose syntax (v3), something like this:
|
||||||
|
|
||||||
|
!!! 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``` 👍
|
||||||
|
```
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
keycloak:
|
||||||
|
image: jboss/keycloak
|
||||||
|
env_file: /var/data/config/keycloak/keycloak.env
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- traefik.frontend.rule=Host:keycloak.cloud.example.com
|
||||||
|
- traefik.port=8080
|
||||||
|
- traefik.docker.network=traefik_public
|
||||||
|
|
||||||
|
db:
|
||||||
|
env_file: /var/data/config/keycloak/keycloak.env
|
||||||
|
image: postgres:10.1
|
||||||
|
volumes:
|
||||||
|
- /var/data/runtime/keycloak/database:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
|
||||||
|
db-backup:
|
||||||
|
image: postgres:10.1
|
||||||
|
env_file: /var/data/config/keycloak/keycloak-backup.env
|
||||||
|
volumes:
|
||||||
|
- /var/data/keycloak/database-dump:/dump
|
||||||
|
# - /etc/localtime:/etc/localtime:ro
|
||||||
|
entrypoint: |
|
||||||
|
bash -c 'bash -s <<EOF
|
||||||
|
trap "break;exit" SIGHUP SIGINT SIGTERM
|
||||||
|
sleep 2m
|
||||||
|
while /bin/true; do
|
||||||
|
pg_dump -Fc > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.psql
|
||||||
|
(ls -t /dump/dump*.psql|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.psql)|sort|uniq -u|xargs rm -- {}
|
||||||
|
sleep $$BACKUP_FREQUENCY
|
||||||
|
done
|
||||||
|
EOF'
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik_public:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
|
driver: overlay
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.39.0/24
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! 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](/reference/networks/) here.
|
||||||
|
|
||||||
|
|
||||||
|
## Serving
|
||||||
|
|
||||||
|
### Launch OpenLDAP stack
|
||||||
|
|
||||||
|
Launch the OpenLDAP stack by running ```docker stack deploy keycloak -c <path -to-docker-compose.yml>```
|
||||||
|
|
||||||
|
Log into your new instance at https://**YOUR-FQDN**, and login with the user/password you defined in keycloak.env.
|
||||||
|
|
||||||
|
You start in the "Master" realm - but mouseover the realm name, to a dropdown box allowing you add an new realm:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Enter a name for your new realm, and click "_Create_":
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Once in the desired realm, click on **User Federation**, and click **Add Provider**. On the next page ("_Required Settings_"), set the following:
|
||||||
|
|
||||||
|
* **Edit Mode** : Writeable
|
||||||
|
* **Vendor** : Other
|
||||||
|
* **Connection URL** : ldap://openldap
|
||||||
|
* **Users DN** : ou=People,<your base DN>
|
||||||
|
* **Authentication Type** : simple
|
||||||
|
* **Bind DN** : cn=admin,<your base DN>
|
||||||
|
* **Bind Credential** : <your chosen admin password>
|
||||||
|
|
||||||
|
Save your changes, and then navigate back to "User Federation" > Your LDAP name > Mappers:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
For each of the following names, click the name, and set the "_Read Only_" flag to "_Off_" (_this enables 2-way sync between KeyCloak and OpenLD_AP)
|
||||||
|
|
||||||
|
* last name
|
||||||
|
* username
|
||||||
|
* email
|
||||||
|
* first name
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Proceed to setting up [Email](/recipes/sso-stack/docker-mailserver/)...
|
||||||
|
|
||||||
|
## Chef's Notes
|
||||||
|
|
||||||
|
1. I wanted to be able to add multiple networks to KeyCloak (i.e., a dedicated overlay network for LDAP authentication), but the entrypoint used by the container produces an error when more than one network is configured. This could theoretically be corrected in future, with a PR.
|
||||||
|
|
||||||
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
|
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||||
|
|
||||||
|
### Your comments? 💬
|
||||||
0
manuscript/recipes/sso-stack/nextcloud.md
Normal file
403
manuscript/recipes/sso-stack/openldap.md
Normal file
@@ -0,0 +1,403 @@
|
|||||||
|
# OpenLDAP with LAM
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
While this could stand on its own as a standalone recipe, it's a component of the [sso-stack](/recipes/sso-stack/) "_uber-recipe_", and is written in the expectation that the entire SSO stack is being deployed.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Ingredients
|
||||||
|
|
||||||
|
1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md)
|
||||||
|
2. [Traefik](/ha-docker-swarm/traefik_public) configured per design
|
||||||
|
3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
### Setup data locations
|
||||||
|
|
||||||
|
We'll need several directories to bind-mount into our container, so create them in /var/data/openldap:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /var/data/openldap/openldap
|
||||||
|
mkdir /var/data/runtime/openldap/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Prepare environment
|
||||||
|
|
||||||
|
Create /var/data/openldap/openldap.env, and populate with the following variables, customized for your own domain struction. Take care with LDAP_DOMAIN, this is core to the rest of the [sso-stack](/recipes/sso-stack/), and can't easily be changed later.
|
||||||
|
```
|
||||||
|
LDAP_DOMAIN=batcave.gotham
|
||||||
|
LDAP_ORGANISATION=BatCave Inc
|
||||||
|
LDAP_ADMIN_PASSWORD=supermansucks
|
||||||
|
LDAP_TLS=false
|
||||||
|
|
||||||
|
# Setup for github
|
||||||
|
OAUTH2_PROXY_CLIENT_ID=
|
||||||
|
OAUTH2_PROXY_CLIENT_SECRET=
|
||||||
|
OAUTH2_PROXY_COOKIE_SECRET=
|
||||||
|
```
|
||||||
|
|
||||||
|
Create ```authenticated-emails.txt```, and populate with the email addresses (matched to GitHub user accounts, in my case) which you want to grant access, using OAuth2.
|
||||||
|
|
||||||
|
### Create config.cfg
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# password to add/delete/rename configuration profiles (default: lam)
|
||||||
|
password: {SSHA}54haBZN/kfgNVJ+W3YJrI2dCic4= iCXkNA==
|
||||||
|
|
||||||
|
# default profile, without ".conf"
|
||||||
|
default: observeglobal
|
||||||
|
|
||||||
|
# log level
|
||||||
|
logLevel: 4
|
||||||
|
|
||||||
|
# log destination
|
||||||
|
logDestination: SYSLOG
|
||||||
|
|
||||||
|
|
||||||
|
# session timeout in minutes
|
||||||
|
sessionTimeout: 30
|
||||||
|
|
||||||
|
# list of hosts which may access LAM
|
||||||
|
allowedHosts:
|
||||||
|
|
||||||
|
# list of hosts which may access LAM Pro self service
|
||||||
|
allowedHostsSelfService:
|
||||||
|
|
||||||
|
# encrypt session data
|
||||||
|
encryptSession: true
|
||||||
|
|
||||||
|
# Password: minimum password length
|
||||||
|
passwordMinLength: 0
|
||||||
|
|
||||||
|
# Password: minimum uppercase characters
|
||||||
|
passwordMinUpper: 0
|
||||||
|
|
||||||
|
# Password: minimum lowercase characters
|
||||||
|
passwordMinLower: 0
|
||||||
|
|
||||||
|
# Password: minimum numeric characters
|
||||||
|
passwordMinNumeric: 0
|
||||||
|
|
||||||
|
# Password: minimum symbolic characters
|
||||||
|
passwordMinSymbol: 0
|
||||||
|
|
||||||
|
# Password: minimum character classes (0-4)
|
||||||
|
passwordMinClasses: 0
|
||||||
|
|
||||||
|
# Password: checked rules
|
||||||
|
checkedRulesCount: -1
|
||||||
|
|
||||||
|
# Password: must not contain part of user name
|
||||||
|
passwordMustNotContain3Chars: false
|
||||||
|
|
||||||
|
# Password: must not contain user name
|
||||||
|
passwordMustNotContainUser: false
|
||||||
|
|
||||||
|
# Email format (default/unix)
|
||||||
|
mailEOL: default
|
||||||
|
|
||||||
|
# PHP error reporting (default/system)
|
||||||
|
errorReporting: default
|
||||||
|
|
||||||
|
# License
|
||||||
|
license:
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create <profile>.cfg
|
||||||
|
|
||||||
|
```
|
||||||
|
# LDAP Account Manager configuration
|
||||||
|
#
|
||||||
|
# Please do not modify this file manually. The configuration can be done completely by the LAM GUI.
|
||||||
|
#
|
||||||
|
###################################################################################################
|
||||||
|
|
||||||
|
# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)
|
||||||
|
ServerURL: ldap://openldap:389
|
||||||
|
|
||||||
|
# list of users who are allowed to use LDAP Account Manager
|
||||||
|
# names have to be seperated by semicolons
|
||||||
|
# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org
|
||||||
|
Admins: cn=admin,dc=observe,dc=global
|
||||||
|
|
||||||
|
# password to change these preferences via webfrontend (default: lam)
|
||||||
|
Passwd: {SSHA}h39N9+gg/Qf1K/986VkKrjWlkcI= S/IAUQ==
|
||||||
|
|
||||||
|
# suffix of tree view
|
||||||
|
# e.g. dc=yourdomain,dc=org
|
||||||
|
treesuffix: dc=observe,dc=global
|
||||||
|
|
||||||
|
# default language (a line from config/language)
|
||||||
|
defaultLanguage: en_GB.utf8
|
||||||
|
|
||||||
|
# Path to external Script
|
||||||
|
scriptPath:
|
||||||
|
|
||||||
|
# Server of external Script
|
||||||
|
scriptServer:
|
||||||
|
|
||||||
|
# Access rights for home directories
|
||||||
|
scriptRights: 750
|
||||||
|
|
||||||
|
# Number of minutes LAM caches LDAP searches.
|
||||||
|
cachetimeout: 5
|
||||||
|
|
||||||
|
# LDAP search limit.
|
||||||
|
searchLimit: 0
|
||||||
|
|
||||||
|
# Module settings
|
||||||
|
|
||||||
|
modules: posixAccount_user_minUID: 10000
|
||||||
|
modules: posixAccount_user_maxUID: 30000
|
||||||
|
modules: posixAccount_host_minMachine: 50000
|
||||||
|
modules: posixAccount_host_maxMachine: 60000
|
||||||
|
modules: posixGroup_group_minGID: 10000
|
||||||
|
modules: posixGroup_group_maxGID: 20000
|
||||||
|
modules: posixGroup_pwdHash: SSHA
|
||||||
|
modules: posixAccount_pwdHash: SSHA
|
||||||
|
|
||||||
|
# List of active account types.
|
||||||
|
activeTypes: user,group
|
||||||
|
|
||||||
|
|
||||||
|
types: suffix_user: ou=People,dc=observe,dc=global
|
||||||
|
types: attr_user: #uid;#givenName;#sn;#uidNumber;#gidNumber
|
||||||
|
types: modules_user: inetOrgPerson,posixAccount,shadowAccount
|
||||||
|
|
||||||
|
types: suffix_group: ou=Groups,dc=observe,dc=global
|
||||||
|
types: attr_group: #cn;#gidNumber;#memberUID;#description
|
||||||
|
types: modules_group: posixGroup
|
||||||
|
|
||||||
|
# Password mail subject
|
||||||
|
lamProMailSubject: Your password was reset
|
||||||
|
|
||||||
|
# Password mail text
|
||||||
|
lamProMailText: Dear @@givenName@@ @@sn@@,+::++::+your password was reset to: @@newPassword@@+::++::++::+Best regards+::++::+deskside support+::+
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
serverDisplayName:
|
||||||
|
|
||||||
|
|
||||||
|
# enable TLS encryption
|
||||||
|
useTLS: no
|
||||||
|
|
||||||
|
|
||||||
|
# follow referrals
|
||||||
|
followReferrals: false
|
||||||
|
|
||||||
|
|
||||||
|
# paged results
|
||||||
|
pagedResults: false
|
||||||
|
|
||||||
|
referentialIntegrityOverlay: false
|
||||||
|
|
||||||
|
|
||||||
|
# time zone
|
||||||
|
timeZone: Europe/London
|
||||||
|
|
||||||
|
scriptUserName:
|
||||||
|
|
||||||
|
scriptSSHKey:
|
||||||
|
|
||||||
|
scriptSSHKeyPassword:
|
||||||
|
|
||||||
|
|
||||||
|
# Access level for this profile.
|
||||||
|
accessLevel: 100
|
||||||
|
|
||||||
|
|
||||||
|
# Login method.
|
||||||
|
loginMethod: list
|
||||||
|
|
||||||
|
|
||||||
|
# Search suffix for LAM login.
|
||||||
|
loginSearchSuffix: dc=yourdomain,dc=org
|
||||||
|
|
||||||
|
|
||||||
|
# Search filter for LAM login.
|
||||||
|
loginSearchFilter: uid=%USER%
|
||||||
|
|
||||||
|
|
||||||
|
# Bind DN for login search.
|
||||||
|
loginSearchDN:
|
||||||
|
|
||||||
|
|
||||||
|
# Bind password for login search.
|
||||||
|
loginSearchPassword:
|
||||||
|
|
||||||
|
|
||||||
|
# HTTP authentication for LAM login.
|
||||||
|
httpAuthentication: false
|
||||||
|
|
||||||
|
|
||||||
|
# Password mail from
|
||||||
|
lamProMailFrom:
|
||||||
|
|
||||||
|
|
||||||
|
# Password mail reply-to
|
||||||
|
lamProMailReplyTo:
|
||||||
|
|
||||||
|
|
||||||
|
# Password mail is HTML
|
||||||
|
lamProMailIsHTML: false
|
||||||
|
|
||||||
|
|
||||||
|
# Allow alternate address
|
||||||
|
lamProMailAllowAlternateAddress: true
|
||||||
|
|
||||||
|
jobsBindPassword:
|
||||||
|
|
||||||
|
jobsBindUser:
|
||||||
|
|
||||||
|
jobsDatabase:
|
||||||
|
|
||||||
|
jobsDBHost:
|
||||||
|
|
||||||
|
jobsDBPort:
|
||||||
|
|
||||||
|
jobsDBUser:
|
||||||
|
|
||||||
|
jobsDBPassword:
|
||||||
|
|
||||||
|
jobsDBName:
|
||||||
|
|
||||||
|
jobToken: 190339140545
|
||||||
|
|
||||||
|
pwdResetAllowSpecificPassword: true
|
||||||
|
|
||||||
|
pwdResetAllowScreenPassword: true
|
||||||
|
|
||||||
|
pwdResetForcePasswordChange: true
|
||||||
|
|
||||||
|
pwdResetDefaultPasswordOutput: 2
|
||||||
|
|
||||||
|
twoFactorAuthentication: none
|
||||||
|
|
||||||
|
twoFactorAuthenticationURL: https://localhost
|
||||||
|
|
||||||
|
twoFactorAuthenticationInsecure:
|
||||||
|
|
||||||
|
twoFactorAuthenticationLabel:
|
||||||
|
|
||||||
|
twoFactorAuthenticationOptional:
|
||||||
|
|
||||||
|
twoFactorAuthenticationCaption:
|
||||||
|
tools: tool_hide_toolOUEditor: false
|
||||||
|
tools: tool_hide_toolProfileEditor: false
|
||||||
|
tools: tool_hide_toolSchemaBrowser: false
|
||||||
|
tools: tool_hide_toolServerInformation: false
|
||||||
|
tools: tool_hide_toolTests: false
|
||||||
|
tools: tool_hide_toolPDFEditor: false
|
||||||
|
tools: tool_hide_toolFileUpload: false
|
||||||
|
tools: tool_hide_toolMultiEdit: false
|
||||||
|
```
|
||||||
|
|
||||||
|
### Setup Docker Swarm
|
||||||
|
|
||||||
|
Create a docker swarm config file in docker-compose syntax (v3), something like this:
|
||||||
|
|
||||||
|
!!! 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``` 👍
|
||||||
|
```
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
openldap:
|
||||||
|
image: osixia/openldap
|
||||||
|
env_file: /var/data/config/openldap/openldap.env
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
volumes:
|
||||||
|
- /var/data/openldap/openldap/:/var/lib/ldap
|
||||||
|
- /var/data/runtime/openldap/:/etc/ldap/slapd.d
|
||||||
|
|
||||||
|
lam:
|
||||||
|
image: jacksgt/ldap-account-manager
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
#volumes:
|
||||||
|
#- /var/data/openldap/lam/config/lam.conf:/var/www/html/config/lam.conf
|
||||||
|
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
image: funkypenguin/oauth2_proxy
|
||||||
|
env_file: /var/data/config/openldap/openldap.env
|
||||||
|
networks:
|
||||||
|
- traefik_public
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- traefik.frontend.rule=Host:lam.example.com
|
||||||
|
- traefik.port=4180
|
||||||
|
volumes:
|
||||||
|
- /var/data/config/openldap/authenticated-emails.txt:/authenticated-emails.txt
|
||||||
|
command: |
|
||||||
|
-cookie-secure=false
|
||||||
|
-upstream=http://lam:8080
|
||||||
|
-redirect-url=https://lam.example.com
|
||||||
|
-http-address=http://0.0.0.0:4180
|
||||||
|
-email-domain=example.com
|
||||||
|
-provider=github
|
||||||
|
-authenticated-emails-file=/authenticated-emails.txt
|
||||||
|
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik_public:
|
||||||
|
external: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Serving
|
||||||
|
|
||||||
|
### Launch OpenLDAP stack
|
||||||
|
|
||||||
|
Launch the OpenLDAP stack by running ```docker stack deploy openldap -c <path -to-docker-compose.yml>```
|
||||||
|
|
||||||
|
Log into your new instance at https://**YOUR-FQDN**. You'll hit the LDAP Account Manager login page, which will look like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Click on "LAM Configuration" to add a profile.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Enter a profile name, and a profile password (twice). Leave the template at "_unix_":
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
When prompted to save your new profile, enter the "master password" ("lam")
|
||||||
|
|
||||||
|
You've created a "profile". Now to configure your profile... Start with "Server Settings", and change your **server address** to ```ldap://openldap:389```, and your **tree suffix** to the base DN you setup in the openldap.env file (above).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Under **Security Settings**, alter the list of valid users to "**cn=admin\<your-base-dn\>**"
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
After you save, you'll be redirected to the profile login page, where you'll need to enter the profile details and password you create above.
|
||||||
|
|
||||||
|
Once logged in, click on the "**Account Types"** tab...
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
And for both "_Users_" and "_Groups_", edit the "LDAP Suffix" to match your chosen Base DN, and save your changes:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
After saving changes to your LAM profile, you'll be redirected to the LAM admin page. Enter your credentials (default admin/admin) to login. On first login, you'll be prompted to create the "ou=People" and "ou=Group" elements. Proceed to create these.
|
||||||
|
|
||||||
|
You've now setup your OpenLDAP directory structure, and hopefully won't have to interact with the "special" LDAP Account Manager interface much again!
|
||||||
|
|
||||||
|
Proceed to setting up [KeyCloak](/recipes/sso-stack/keycloak/)...
|
||||||
|
|
||||||
|
## Chef's Notes
|
||||||
|
|
||||||
|
1. What's not yet documented here is how to make the LAM "profile" configuration persistent. I.e., after each container reload, it's currently necessary to repeat the steps above.
|
||||||
|
|
||||||
|
### Tip your waiter (donate) 👏
|
||||||
|
|
||||||
|
Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏
|
||||||
|
|
||||||
|
### Your comments? 💬
|
||||||
@@ -27,7 +27,7 @@ I'd encourage you to spend some time reading https://github.com/stefanprodan/swa
|
|||||||
|
|
||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
This is basically a rehash of stefanprodan's [instructions](https://github.com/stefanprodan/swarmprom) to match the way I've configured other recipies.
|
This is basically a rehash of stefanprodan's [instructions](https://github.com/stefanprodan/swarmprom) to match the way I've configured other recipes.
|
||||||
|
|
||||||
### Setup oauth provider
|
### Setup oauth provider
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@ hero: How to setup a TurtleCoin Mining Pool
|
|||||||
|
|
||||||
# TurtleCoin Mining Pool
|
# TurtleCoin Mining Pool
|
||||||
|
|
||||||
[Cryptocurrency miners](/recipies/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](/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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ 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](/recipies/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](/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.
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ There are plugins for [Chrome](https://chrome.google.com/webstore/detail/wallaba
|
|||||||
|
|
||||||
### 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](/recipies/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](/recipes/duplicity/)**_), so create something like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
mkdir -p /var/data/wallabag
|
mkdir -p /var/data/wallabag
|
||||||
@@ -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](/recipies/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](/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:
|
||||||
|
|
||||||
|
|||||||
@@ -6,45 +6,45 @@ Network | Range
|
|||||||
--|--
|
--|--
|
||||||
[Traefik](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) | _unspecified_
|
[Traefik](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/traefik/) | _unspecified_
|
||||||
[Docker-cleanup](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/docker-swarm-mode/#setup-automated-cleanup) | 172.16.0.0/24
|
[Docker-cleanup](https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/docker-swarm-mode/#setup-automated-cleanup) | 172.16.0.0/24
|
||||||
[Mail Server](https://geek-cookbook.funkypenguin.co.nz/recipies/mail/) | 172.16.1.0/24
|
[Mail Server](https://geek-cookbook.funkypenguin.co.nz/recipes/mail/) | 172.16.1.0/24
|
||||||
[Gitlab](https://geek-cookbook.funkypenguin.co.nz/recipies/gitlab/) | 172.16.2.0/24
|
[Gitlab](https://geek-cookbook.funkypenguin.co.nz/recipes/gitlab/) | 172.16.2.0/24
|
||||||
[Wekan](https://geek-cookbook.funkypenguin.co.nz/recipies/wekan/) | 172.16.3.0/24
|
[Wekan](https://geek-cookbook.funkypenguin.co.nz/recipes/wekan/) | 172.16.3.0/24
|
||||||
[Piwik](https://geek-cookbook.funkypenguin.co.nz/recipies/piwki/) | 172.16.4.0/24
|
[Piwik](https://geek-cookbook.funkypenguin.co.nz/recipes/piwki/) | 172.16.4.0/24
|
||||||
[Tiny Tiny RSS](https://geek-cookbook.funkypenguin.co.nz/recipies/tiny-tiny-rss/) | 172.16.5.0/24
|
[Tiny Tiny RSS](https://geek-cookbook.funkypenguin.co.nz/recipes/tiny-tiny-rss/) | 172.16.5.0/24
|
||||||
[Huginn](https://geek-cookbook.funkypenguin.co.nz/recipies/huginn/) | 172.16.6.0/24
|
[Huginn](https://geek-cookbook.funkypenguin.co.nz/recipes/huginn/) | 172.16.6.0/24
|
||||||
[Unifi](https://geek-cookbook.funkypenguin.co.nz/recipies/unifi/) | 172.16.7.0/24
|
[Unifi](https://geek-cookbook.funkypenguin.co.nz/recipes/unifi/) | 172.16.7.0/24
|
||||||
[Kanboard](https://geek-cookbook.funkypenguin.co.nz/recipies/kanboard/) | 172.16.8.0/24
|
[Kanboard](https://geek-cookbook.funkypenguin.co.nz/recipes/kanboard/) | 172.16.8.0/24
|
||||||
[Gollum](https://geek-cookbook.funkypenguin.co.nz/recipies/gollum/) | 172.16.9.0/24
|
[Gollum](https://geek-cookbook.funkypenguin.co.nz/recipes/gollum/) | 172.16.9.0/24
|
||||||
[Duplicity](https://geek-cookbook.funkypenguin.co.nz/recipies/duplicity/) | 172.16.10.0/24
|
[Duplicity](https://geek-cookbook.funkypenguin.co.nz/recipes/duplicity/) | 172.16.10.0/24
|
||||||
[Autopirate](https://geek-cookbook.funkypenguin.co.nz/recipies/autopirate/) | 172.16.11.0/24
|
[Autopirate](https://geek-cookbook.funkypenguin.co.nz/recipes/autopirate/) | 172.16.11.0/24
|
||||||
[Nextcloud](https://geek-cookbook.funkypenguin.co.nz/recipies/nextcloud/) | 172.16.12.0/24
|
[Nextcloud](https://geek-cookbook.funkypenguin.co.nz/recipes/nextcloud/) | 172.16.12.0/24
|
||||||
[Portainer](https://geek-cookbook.funkypenguin.co.nz/recipies/portainer/) | 172.16.13.0/24
|
[Portainer](https://geek-cookbook.funkypenguin.co.nz/recipes/portainer/) | 172.16.13.0/24
|
||||||
[Home-Assistant](https://geek-cookbook.funkypenguin.co.nz/recipies/home-assistant/) | 172.16.14.0/24
|
[Home-Assistant](https://geek-cookbook.funkypenguin.co.nz/recipes/home-assistant/) | 172.16.14.0/24
|
||||||
[OwnTracks](https://geek-cookbook.funkypenguin.co.nz/recipies/owntracks/) | 172.16.15.0/24
|
[OwnTracks](https://geek-cookbook.funkypenguin.co.nz/recipes/owntracks/) | 172.16.15.0/24
|
||||||
[Plex](https://geek-cookbook.funkypenguin.co.nz/recipies/plex/) | 172.16.16.0/24
|
[Plex](https://geek-cookbook.funkypenguin.co.nz/recipes/plex/) | 172.16.16.0/24
|
||||||
[Emby](https://geek-cookbook.funkypenguin.co.nz/recipies/emby/) | 172.16.17.0/24
|
[Emby](https://geek-cookbook.funkypenguin.co.nz/recipes/emby/) | 172.16.17.0/24
|
||||||
[Calibre-Web](https://geek-cookbook.funkypenguin.co.nz/recipies/calibre-web/) | 172.16.18.0/24
|
[Calibre-Web](https://geek-cookbook.funkypenguin.co.nz/recipes/calibre-web/) | 172.16.18.0/24
|
||||||
[Wallabag](https://geek-cookbook.funkypenguin.co.nz/recipies/wallabag/) | 172.16.19.0/24
|
[Wallabag](https://geek-cookbook.funkypenguin.co.nz/recipes/wallabag/) | 172.16.19.0/24
|
||||||
[InstaPy](https://geek-cookbook.funkypenguin.co.nz/recipies/instapy/) | 172.16.20.0/24
|
[InstaPy](https://geek-cookbook.funkypenguin.co.nz/recipes/instapy/) | 172.16.20.0/24
|
||||||
[Turtle Pool](https://geek-cookbook.funkypenguin.co.nz/recipies/turtle-pool/) | 172.16.21.0/24
|
[Turtle Pool](https://geek-cookbook.funkypenguin.co.nz/recipes/turtle-pool/) | 172.16.21.0/24
|
||||||
[MiniFlux](https://geek-cookbook.funkypenguin.co.nz/recipies/miniflux/) | 172.16.22.0/24
|
[MiniFlux](https://geek-cookbook.funkypenguin.co.nz/recipes/miniflux/) | 172.16.22.0/24
|
||||||
[Gitlab Runner](https://geek-cookbook.funkypenguin.co.nz/recipies/gitlab-runner/) | 172.16.23.0/24
|
[Gitlab Runner](https://geek-cookbook.funkypenguin.co.nz/recipes/gitlab-runner/) | 172.16.23.0/24
|
||||||
[Munin](https://geek-cookbook.funkypenguin.co.nz/recipies/munin/) | 172.16.24.0/24
|
[Munin](https://geek-cookbook.funkypenguin.co.nz/recipes/munin/) | 172.16.24.0/24
|
||||||
[Masari Mining Pool](https://geek-cookbook.funkypenguin.co.nz/recipies/cryptonote-mining-pool/masari/) | 172.16.25.0/24
|
[Masari Mining Pool](https://geek-cookbook.funkypenguin.co.nz/recipes/cryptonote-mining-pool/masari/) | 172.16.25.0/24
|
||||||
[Athena Mining Pool](https://geek-cookbook.funkypenguin.co.nz/recipies/cryptonote-mining-pool/athena/) | 172.16.26.0/24
|
[Athena Mining Pool](https://geek-cookbook.funkypenguin.co.nz/recipes/cryptonote-mining-pool/athena/) | 172.16.26.0/24
|
||||||
[Bookstack](https://geek-cookbook.funkypenguin.co.nz/recipies/bookstack/) | 172.16.33.0/24
|
[Bookstack](https://geek-cookbook.funkypenguin.co.nz/recipes/bookstack/) | 172.16.33.0/24
|
||||||
[Swarmprom](https://geek-cookbook.funkypenguin.co.nz/recipies/swarmprom/) | 172.16.34.0/24
|
[Swarmprom](https://geek-cookbook.funkypenguin.co.nz/recipes/swarmprom/) | 172.16.34.0/24
|
||||||
[Realms](https://geek-cookbook.funkypenguin.co.nz/recipies/realms/) | 172.16.35.0/24
|
[Realms](https://geek-cookbook.funkypenguin.co.nz/recipes/realms/) | 172.16.35.0/24
|
||||||
[ElkarBackup](https://geek-cookbook.funkypenguin.co.nz/recipies/elkarbackp/) | 172.16.36.0/24
|
[ElkarBackup](https://geek-cookbook.funkypenguin.co.nz/recipes/elkarbackp/) | 172.16.36.0/24
|
||||||
[Mayan EDMS](https://geek-cookbook.funkypenguin.co.nz/recipies/realms/) | 172.16.37.0/24
|
[Mayan EDMS](https://geek-cookbook.funkypenguin.co.nz/recipes/realms/) | 172.16.37.0/24
|
||||||
[Shaarli](https://geek-cookbook.funkypenguin.co.nz/recipies/shaarli/) | 172.16.38.0/24
|
[Shaarli](https://geek-cookbook.funkypenguin.co.nz/recipes/shaarli/) | 172.16.38.0/24
|
||||||
[KeyCloud](https://geek-cookbook.funkypenguin.co.nz/recipies/keycloak/) | 172.16.39.0/24
|
[KeyCloud](https://geek-cookbook.funkypenguin.co.nz/recipes/keycloak/) | 172.16.39.0/24
|
||||||
[MatterMost](https://geek-cookbook.funkypenguin.co.nz/recipies/mattermost/) | 172.16.40.0/24
|
[MatterMost](https://geek-cookbook.funkypenguin.co.nz/recipes/mattermost/) | 172.16.40.0/24
|
||||||
[PrivateBin](https://geek-cookbook.funkypenguin.co.nz/recipies/privatebin/) | 172.16.41.0/24
|
[PrivateBin](https://geek-cookbook.funkypenguin.co.nz/recipes/privatebin/) | 172.16.41.0/24
|
||||||
[Mayan EDMS](https://geek-cookbook.funkypenguin.co.nz/recipies/mayan-edms/) | 172.16.42.0/24
|
[Mayan EDMS](https://geek-cookbook.funkypenguin.co.nz/recipes/mayan-edms/) | 172.16.42.0/24
|
||||||
[Hack MD](https://geek-cookbook.funkypenguin.co.nz/recipies/hackmd/) | 172.16.43.0/24
|
[Hack MD](https://geek-cookbook.funkypenguin.co.nz/recipes/hackmd/) | 172.16.43.0/24
|
||||||
[FlightAirMap](https://geek-cookbook.funkypenguin.co.nz/recipies/flightairmap/) | 172.16.44.0/24
|
[FlightAirMap](https://geek-cookbook.funkypenguin.co.nz/recipes/flightairmap/) | 172.16.44.0/24
|
||||||
[Wetty](https://geek-cookbook.funkypenguin.co.nz/recipies/wetty/) | 172.16.45.0/24
|
[Wetty](https://geek-cookbook.funkypenguin.co.nz/recipes/wetty/) | 172.16.45.0/24
|
||||||
|
|
||||||
|
|
||||||
## Chef's Notes
|
## Chef's Notes
|
||||||
|
|||||||
@@ -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](/recipies/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](/recipes/wekan/) recipe:
|
||||||
|
|
||||||
```
|
```
|
||||||
proxy:
|
proxy:
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# HA Docker Swarm #
|
# HA Docker Swarm #
|
||||||
|
|
||||||
This section introduces the HA Docker Swarm, which will be the basis for all the recipies discussed.
|
This section introduces the HA Docker Swarm, which will be the basis for all the recipes discussed.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Recipies #
|
# Recipies #
|
||||||
|
|
||||||
Now follows individual recipies.
|
Now follows individual recipes.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Reference #
|
# Reference #
|
||||||
|
|
||||||
Now follows useful elements which are not full recipies.
|
Now follows useful elements which are not full recipes.
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ I regularly donate to / sponsor the following projects. **Join me** in supportin
|
|||||||
|
|
||||||
| Project | Donate via..
|
| Project | Donate via..
|
||||||
| ------------- |-------------|
|
| ------------- |-------------|
|
||||||
| [Kanboard](/recipies/kanboard/) | [PayPal](https://kanboard.org/#donations)
|
| [Kanboard](/recipes/kanboard/) | [PayPal](https://kanboard.org/#donations)
|
||||||
| [Miniflux](/recipies/miniflux/) | [PayPal](https://miniflux.net/#donations)
|
| [Miniflux](/recipes/miniflux/) | [PayPal](https://miniflux.net/#donations)
|
||||||
| [SABnzbd](/recipies/autopirate/sabnzbd/) | [Paypal / Credit Card / Crypto](https://sabnzbd.org/donate/)
|
| [SABnzbd](/recipes/autopirate/sabnzbd/) | [Paypal / Credit Card / Crypto](https://sabnzbd.org/donate/)
|
||||||
| [Radarr](/recipies/autopirate/radarr/) | [OpenCollective](https://opencollective.com/radarr#budget)
|
| [Radarr](/recipes/autopirate/radarr/) | [OpenCollective](https://opencollective.com/radarr#budget)
|
||||||
| [Sonarr](/recipies/autopirate/sonarr/) | [BitCoin/CC](https://sonarr.tv/donate)
|
| [Sonarr](/recipes/autopirate/sonarr/) | [BitCoin/CC](https://sonarr.tv/donate)
|
||||||
| [NZBHydra](/recipies/autopirate/nzbhydra/) | [Cryptocurrency](https://github.com/theotherp/nzbhydra2)
|
| [NZBHydra](/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)
|
||||||
| [John Van Sickle's FFmpeg static builds](https://www.johnvansickle.com/ffmpeg/) | [Patreon](https://www.patreon.com/johnvansickle)
|
| [John Van Sickle's FFmpeg static builds](https://www.johnvansickle.com/ffmpeg/) | [Patreon](https://www.patreon.com/johnvansickle)
|
||||||
|
|||||||
120
mkdocs.yml
@@ -34,72 +34,72 @@ pages:
|
|||||||
- Docker Swarm Mode: ha-docker-swarm/docker-swarm-mode.md
|
- Docker Swarm Mode: ha-docker-swarm/docker-swarm-mode.md
|
||||||
- Traefik: ha-docker-swarm/traefik.md
|
- Traefik: ha-docker-swarm/traefik.md
|
||||||
- Registry: ha-docker-swarm/registry.md
|
- Registry: ha-docker-swarm/registry.md
|
||||||
- Mail Server: recipies/mail.md
|
- Mail Server: recipes/mail.md
|
||||||
- Duplicity: recipies/duplicity.md
|
- Duplicity: recipes/duplicity.md
|
||||||
- Chef's Favorites:
|
- Chef's Favorites:
|
||||||
- Huginn: recipies/huginn.md
|
- Huginn: recipes/huginn.md
|
||||||
- Kanboard: recipies/kanboard.md
|
- Kanboard: recipes/kanboard.md
|
||||||
- Miniflux: recipies/miniflux.md
|
- Miniflux: recipes/miniflux.md
|
||||||
- Auto Pirate:
|
- Auto Pirate:
|
||||||
- Start: recipies/autopirate.md
|
- Start: recipes/autopirate.md
|
||||||
- SABnzbd: recipies/autopirate/sabnzbd.md
|
- SABnzbd: recipes/autopirate/sabnzbd.md
|
||||||
- NZBGet: recipies/autopirate/nzbget.md
|
- NZBGet: recipes/autopirate/nzbget.md
|
||||||
- Rtorrent: recipies/autopirate/rtorrent.md
|
- Rtorrent: recipes/autopirate/rtorrent.md
|
||||||
- Sonarr: recipies/autopirate/sonarr.md
|
- Sonarr: recipes/autopirate/sonarr.md
|
||||||
- Radarr: recipies/autopirate/radarr.md
|
- Radarr: recipes/autopirate/radarr.md
|
||||||
- Mylar: recipies/autopirate/mylar.md
|
- Mylar: recipes/autopirate/mylar.md
|
||||||
- Lazy Librarian: recipies/autopirate/lazylibrarian.md
|
- Lazy Librarian: recipes/autopirate/lazylibrarian.md
|
||||||
- Headphones: recipies/autopirate/headphones.md
|
- Headphones: recipes/autopirate/headphones.md
|
||||||
- Lidarr: recipies/autopirate/lidarr.md
|
- Lidarr: recipes/autopirate/lidarr.md
|
||||||
- NZBHydra: recipies/autopirate/nzbhydra.md
|
- NZBHydra: recipes/autopirate/nzbhydra.md
|
||||||
- NZBHydra 2: recipies/autopirate/nzbhydra2.md
|
- NZBHydra 2: recipes/autopirate/nzbhydra2.md
|
||||||
- Ombi: recipies/autopirate/ombi.md
|
- Ombi: recipes/autopirate/ombi.md
|
||||||
- Jackett: recipies/autopirate/jackett.md
|
- Jackett: recipes/autopirate/jackett.md
|
||||||
- Heimdall: recipies/autopirate/heimdall.md
|
- Heimdall: recipes/autopirate/heimdall.md
|
||||||
- End: recipies/autopirate/end.md
|
- End: recipes/autopirate/end.md
|
||||||
- NextCloud: recipies/nextcloud.md
|
- NextCloud: recipes/nextcloud.md
|
||||||
- Plex: recipies/plex.md
|
- Plex: recipes/plex.md
|
||||||
- Emby: recipies/emby.md
|
- Emby: recipes/emby.md
|
||||||
- Munin: recipies/munin.md
|
- Munin: recipes/munin.md
|
||||||
- Home Assistant: recipies/homeassistant.md
|
- Home Assistant: recipes/homeassistant.md
|
||||||
- OwnTracks: recipies/owntracks.md
|
- OwnTracks: recipes/owntracks.md
|
||||||
- PrivateBin: recipies/privatebin.md
|
- PrivateBin: recipes/privatebin.md
|
||||||
- Swarmprom: recipies/swarmprom.md
|
- Swarmprom: recipes/swarmprom.md
|
||||||
- Turtle Pool: recipies/turtle-pool.md
|
- Turtle Pool: recipes/turtle-pool.md
|
||||||
- Menu:
|
- Menu:
|
||||||
- Bookstack: recipies/bookstack.md
|
- Bookstack: recipes/bookstack.md
|
||||||
- CryptoMiner:
|
- CryptoMiner:
|
||||||
- Start: recipies/cryptominer.md
|
- Start: recipes/cryptominer.md
|
||||||
- Mining Rig: recipies/cryptominer/mining-rig.md
|
- Mining Rig: recipes/cryptominer/mining-rig.md
|
||||||
- AMD GPU: recipies/cryptominer/amd-gpu.md
|
- AMD GPU: recipes/cryptominer/amd-gpu.md
|
||||||
- NVidia GPU: recipies/cryptominer/nvidia-gpu.md
|
- NVidia GPU: recipes/cryptominer/nvidia-gpu.md
|
||||||
- Mining Pools : recipies/cryptominer/mining-pool.md
|
- Mining Pools : recipes/cryptominer/mining-pool.md
|
||||||
- Wallets : recipies/cryptominer/wallet.md
|
- Wallets : recipes/cryptominer/wallet.md
|
||||||
- Exchanges: recipies/cryptominer/exchange.md
|
- Exchanges: recipes/cryptominer/exchange.md
|
||||||
- Minerhotel: recipies/cryptominer/minerhotel.md
|
- Minerhotel: recipes/cryptominer/minerhotel.md
|
||||||
- Monitoring: recipies/cryptominer/monitor.md
|
- Monitoring: recipes/cryptominer/monitor.md
|
||||||
- Profit!: recipies/cryptominer/profit.md
|
- Profit!: recipes/cryptominer/profit.md
|
||||||
- Calibre-Web: recipies/calibre-web.md
|
- Calibre-Web: recipes/calibre-web.md
|
||||||
- Ghost: recipies/ghost.md
|
- Ghost: recipes/ghost.md
|
||||||
- GitLab: recipies/gitlab.md
|
- GitLab: recipes/gitlab.md
|
||||||
- GitLab Runner: recipies/gitlab-runner.md
|
- GitLab Runner: recipes/gitlab-runner.md
|
||||||
- Gollum: recipies/gollum.md
|
- Gollum: recipes/gollum.md
|
||||||
- InstaPy: recipies/instapy.md
|
- InstaPy: recipes/instapy.md
|
||||||
- Piwik: recipies/piwik.md
|
- Piwik: recipes/piwik.md
|
||||||
- Portainer: recipies/portainer.md
|
- Portainer: recipes/portainer.md
|
||||||
- Realms: recipies/realms.md
|
- Realms: recipes/realms.md
|
||||||
- Tiny Tiny RSS: recipies/tiny-tiny-rss.md
|
- Tiny Tiny RSS: recipes/tiny-tiny-rss.md
|
||||||
- Wallabag: recipies/wallabag.md
|
- Wallabag: recipes/wallabag.md
|
||||||
- Wekan: recipies/wekan.md
|
- Wekan: recipes/wekan.md
|
||||||
- Wetty: recipies/wetty.md
|
- Wetty: recipes/wetty.md
|
||||||
# - CryptoNote Mining Pool:
|
# - CryptoNote Mining Pool:
|
||||||
# - Start: recipies/cryptonote-mining-pool.md
|
# - Start: recipes/cryptonote-mining-pool.md
|
||||||
# - Masari: recipies/cryptonote-mining-pool/masari.md
|
# - Masari: recipes/cryptonote-mining-pool/masari.md
|
||||||
# - Athena: recipies/cryptonote-mining-pool/athena.md
|
# - Athena: recipes/cryptonote-mining-pool/athena.md
|
||||||
# - SSO Stack:
|
# - SSO Stack:
|
||||||
# - Start: recipies/sso-stack.md
|
# - Start: recipes/sso-stack.md
|
||||||
# - OpenLDAP: recipies/sso-stack/openldap.md
|
# - OpenLDAP: recipes/sso-stack/openldap.md
|
||||||
# - KeyCloak: recipies/sso-stack/keycloak.md
|
# - KeyCloak: recipes/sso-stack/keycloak.md
|
||||||
- Reference:
|
- Reference:
|
||||||
- OAuth Proxy: reference/oauth_proxy.md
|
- OAuth Proxy: reference/oauth_proxy.md
|
||||||
- Data Layout: reference/data_layout.md
|
- Data Layout: reference/data_layout.md
|
||||||
|
|||||||