mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-12 17:26:19 +00:00
Add Prowlarr. Grrowwwlllll!
This commit is contained in:
27
.github/workflows/cron-check-for-broken-links.yml
vendored
Normal file
27
.github/workflows/cron-check-for-broken-links.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: Check for broken links
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
workflow_dispatch:
|
||||
# schedule:
|
||||
# - cron: "00 18 * * *"
|
||||
|
||||
jobs:
|
||||
linkChecker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Link Checker
|
||||
uses: lycheeverse/lychee-action@v1.0.9
|
||||
with:
|
||||
args: --verbose --no-progress **/*.md **/*.html
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
- name: Create Issue From File
|
||||
uses: peter-evans/create-issue-from-file@v3
|
||||
with:
|
||||
title: Link Checker Report
|
||||
content-filepath: ./lychee/out.md
|
||||
labels: report, automated issue
|
||||
@@ -21,4 +21,11 @@ jobs:
|
||||
run: python3 -m pip install -r requirements.txt
|
||||
|
||||
- name: Test mkdocs builds
|
||||
run: python3 -m mkdocs build
|
||||
run: python3 -m mkdocs build
|
||||
|
||||
# - name: Check for broken links
|
||||
# uses: lycheeverse/lychee-action@v1.0.9
|
||||
# with:
|
||||
# args: --verbose --no-progress site/**/*.html
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
[twitchurl]: https://www.twitch.tv/funkypenguinz
|
||||
[twitterurl]: https://twitter.com/funkypenguin
|
||||
[dockerurl]: https://geek-cookbook.funkypenguin.co.nz/ha-docker-swarm/design
|
||||
[k8surl]: https://geek-cookbook.funkypenguin.co.nz/kubernetes/start
|
||||
[k8surl]: https://geek-cookbook.funkypenguin.co.nz/kubernetes/
|
||||
|
||||
<!-- markdownlint-disable MD033 MD041 -->
|
||||
<div align="center">
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
[plex]: /recipes/plex/
|
||||
[portainer]: /recipes/portainer/
|
||||
[radarr]: /recipes/autopirate/radarr/
|
||||
[prowlarr]: /recipes/autopirate/prowlarr/
|
||||
[readarr]: /recipes/autopirate/readarr/
|
||||
[rss-bridge]: /recipes/rss-bridge/
|
||||
[rtorrent]: /recipes/autopirate/rtorrent/
|
||||
|
||||
@@ -11,8 +11,9 @@ Continue through the list of tools below, adding whichever tools your want to us
|
||||
* [NZBGet](/recipes/autopirate/nzbget/)
|
||||
* [NZBHydra](/recipes/autopirate/nzbhydra/)
|
||||
* [Ombi](/recipes/autopirate/ombi/)
|
||||
* [Prowlarr](/recipes/autopirate/prowlarr/)
|
||||
* [Radarr](/recipes/autopirate/radarr/)
|
||||
* [Readarr](/recipes/autopirate/readarr/)
|
||||
* [Readarr](/recipes/autopirate/readarr/)
|
||||
* [RTorrent](/recipes/autopirate/rtorrent/)
|
||||
* [SABnzbd](/recipes/autopirate/sabnzbd/)
|
||||
* [Sonarr](/recipes/autopirate/sonarr/)
|
||||
|
||||
@@ -8,6 +8,7 @@ hide:
|
||||
|
||||
Recipe | Description | Date
|
||||
-------------------------|------------------------------------------------------------------------------------------------------------------|--------------
|
||||
[Prowlarr][prowlarr] | An indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with the [AutoPirate][autopirate] friends | _27 Oct 2021_
|
||||
[Archivebox][archivebox] | Website Archiving service to save websites to view offline | _19 Oct 2021_
|
||||
[Readarr][readarr] | [Autopirate][autopirate] component to grab and manage eBooks (*think "Sonarr/Radarr for books*") | _18 Oct 2021_
|
||||
[Paperless-NG][paperless-ng] | Organize, index, search, and view all your documents | _14 Oct 2021_
|
||||
|
||||
@@ -165,7 +165,7 @@ After completing the above, you should have:
|
||||
* [X] Resiliency in the event of the failure of a single (gluster) node
|
||||
|
||||
[^1]: Future enhancements to this recipe include:
|
||||
1. Migration of shared storage from GlusterFS to Ceph ()[#2](https://gitlab.funkypenguin.co.nz/funkypenguin/geeks-cookbook/issues/2))
|
||||
2. Correct the fact that volumes don't automount on boot ([#3](https://gitlab.funkypenguin.co.nz/funkypenguin/geeks-cookbook/issues/3))
|
||||
1. Migration of shared storage from GlusterFS to Ceph
|
||||
2. Correct the fact that volumes don't automount on boot
|
||||
|
||||
--8<-- "recipe-footer.md"
|
||||
|
||||
@@ -19,7 +19,7 @@ This is the role of Traefik Forward Auth.
|
||||
When employing Traefik Forward Auth as "[middleware](https://doc.traefik.io/traefik/middlewares/forwardauth/)", the forward-auth process sits in the middle of this transaction - traefik receives the incoming request, "checks in" with the auth server to determine whether or not further authentication is required. If the user is authenticated, the auth server returns a 200 response code, and Traefik is authorized to forward the request to the backend. If not, traefik passes the auth server response back to the user - this process will usually direct the user to an authentication provider (_GitHub, Google, etc_), so that they can perform a login.
|
||||
|
||||
Illustrated below:
|
||||

|
||||

|
||||
|
||||
The advantage under this design is additional security. If I'm deploying a web app which I expect only an authenticated user to require access to (*unlike something intended to be accessed publically, like [Linx](/recipes/linx/)*), I'll pass the request through Traefik Forward Auth. The overhead is negligible, and the additional layer of security is well-worth it.
|
||||
|
||||
|
||||
BIN
manuscript/images/prowlarr.png
Normal file
BIN
manuscript/images/prowlarr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
67
manuscript/recipes/autopirate/prowlarr.md
Normal file
67
manuscript/recipes/autopirate/prowlarr.md
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
description: Prowlarr aggregates nzb/torrent searches. Like NZBHydra, but Arrr.
|
||||
---
|
||||
|
||||
# Radarr
|
||||
|
||||
!!! warning
|
||||
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.
|
||||
|
||||
[Prowlarr](https://github.com/Prowlarr/Prowlarr) is an indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps.
|
||||
|
||||
Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with [Lidarr][lidarr], [Mylar3][mylar], [Radarr][radarr], [Readarr][readarr], and [Sonarr][sonarr] offering complete management of your indexers with no per app Indexer setup required!
|
||||
|
||||

|
||||
|
||||
Fancy features include:
|
||||
|
||||
* Usenet support for 24 indexers natively, including Headphones VIP, and support for any Newznab compatible indexer via "Generic Newznab"
|
||||
* Torrent support for over 500 trackers with more added all the time
|
||||
* Torrent support for any Torznab compatible tracker via "Generic Torznab"
|
||||
* Indexer Sync to Sonarr/Radarr/Readarr/Lidarr/Mylar3, so no manual configuration of the other applications are required
|
||||
* Indexer history and statistics
|
||||
* Manual searching of Trackers & Indexers at a category level
|
||||
* Support for pushing releases directly to your download clients from Prowlarr
|
||||
* Indexer health and status notifications
|
||||
* Per Indexer proxy support (SOCKS4, SOCKS5, HTTP, Flaresolverr)
|
||||
|
||||
## Inclusion into AutoPirate
|
||||
|
||||
To include Prowlarr in your [AutoPirate][autopirate] stack, include the following in your autopirate.yml stack definition file:
|
||||
|
||||
```yaml
|
||||
prowlarr:
|
||||
image: linuxserver/prowlarr:nightly
|
||||
env_file: /var/data/config/prowlarr/prowlarr.env
|
||||
volumes:
|
||||
- /var/data/media/:/media
|
||||
- /var/data/prowlarr:/config
|
||||
deploy:
|
||||
replicas: 1
|
||||
labels:
|
||||
# traefik
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=traefik_public
|
||||
|
||||
# traefikv1
|
||||
- traefik.frontend.rule=Host:prowlarr.example.com
|
||||
- traefik.port=9696
|
||||
- traefik.frontend.auth.forward.address=http://traefik-forward-auth:4181
|
||||
- traefik.frontend.auth.forward.authResponseHeaders=X-Forwarded-User
|
||||
- traefik.frontend.auth.forward.trustForwardHeader=true
|
||||
|
||||
# traefikv2
|
||||
- "traefik.http.routers.prowlarr.rule=Host(`prowlarr.example.com`)"
|
||||
- "traefik.http.routers.prowlarr.entrypoints=https"
|
||||
- "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
|
||||
- "traefik.http.routers.prowlarr.middlewares=forward-auth"
|
||||
networks:
|
||||
- internal
|
||||
- autopiratev2_public
|
||||
```
|
||||
|
||||
--8<-- "premix-cta.md"
|
||||
--8<-- "recipe-autopirate-toc.md"
|
||||
--8<-- "recipe-footer.md"
|
||||
|
||||
[^1]: Because Prowlarr is so young (*just a little kitten! :cat:*), there is no `:latest` image tag yet, so we're using the `:nightly` tag instead. Don't come crying to me if baby-Prowlarr bites your ass!
|
||||
@@ -8,7 +8,7 @@ Intro
|
||||
|
||||

|
||||
|
||||
[Duplicity](http://duplicity.nongnu.org/) backs directories by producing encrypted tar-format volumes and uploading them to a remote or local file server. Because duplicity uses librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server.
|
||||
[Duplicity](https://duplicity.gitlab.io/duplicity-web/) backs directories by producing encrypted tar-format volumes and uploading them to a remote or local file server. Because duplicity uses librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server.
|
||||
|
||||
So what does this mean for our stack? It means we can leverage Duplicity to backup all our data-at-rest to a wide variety of cloud providers, including, but not limited to:
|
||||
|
||||
@@ -45,7 +45,7 @@ cd /var/data/config/duplicity
|
||||
|
||||
### (Optional) Create Google Cloud Storage bucket
|
||||
|
||||
I didn't already have an archival/backup provider, so I chose Google Cloud "cloud" storage for the low price-point - 0.7 cents per GB/month (_Plus you [start with \$300 credit](https://cloud.google.com/free/) even when signing up for the free tier_). You can use any destination supported by [Duplicity's URL scheme though](http://duplicity.nongnu.org/duplicity.1.html#sect7), just make sure you specify the necessary [environment variables](http://duplicity.nongnu.org/duplicity.1.html#sect6).
|
||||
I didn't already have an archival/backup provider, so I chose Google Cloud "cloud" storage for the low price-point - 0.7 cents per GB/month (_Plus you [start with \$300 credit](https://cloud.google.com/free/) even when signing up for the free tier_). You can use any destination supported by [Duplicity's URL scheme though](https://duplicity.gitlab.io/duplicity-web/vers7/duplicity.1.html#sect7), just make sure you specify the necessary [environment variables](https://duplicity.gitlab.io/duplicity-web/vers7/duplicity.1.html#sect6).
|
||||
|
||||
1. [Sign up](https://cloud.google.com/storage/docs/getting-started-console), create an empty project, enable billing, and create a bucket. Give your bucket a unique name, example "**jack-and-jills-bucket**" (_it's unique across the entire Google Cloud_)
|
||||
2. Under "Storage" section > "[Settings](https://console.cloud.google.com/project/_/storage/settings)" > "Interoperability" tab > click "Enable interoperable access" and then "Create a new key" button and note both Access Key and Secret.
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Funkwhale is a decentralized, federated music streaming platform
|
||||
|
||||
# Funkwhale
|
||||
|
||||
[Funkwhale](https://funkwhale.audio) is a decentralized, federated, and open music streaming / sharing platform. Think of it as "Mastodon for music". Here's a nifty online [demo](https://demo.funkwhale.audio/) :musical_note:
|
||||
[Funkwhale](https://funkwhale.audio) is a decentralized, federated, and open music streaming / sharing platform. Think of it as "Mastodon for music".
|
||||
|
||||

|
||||
|
||||
@@ -136,6 +136,5 @@ root@swarm:~#
|
||||
[^2]: These instructions are an opinionated simplication of the official instructions found at <https://docs.funkwhale.audio/installation/docker.html>
|
||||
[^3]: It should be noted that if you import your existing media, the files will be **copied** into Funkwhale's data folder. There doesn't seem to be a way to point Funkwhale at an existing collection and have it just play it from the filesystem. To this end, be prepared for double disk space usage if you plan to import your entire music collection!
|
||||
[^5]: No consideration is given at this point to backing up the Funkwhale data. Post a comment below if you'd like to see a backup container added!
|
||||
[^4]: If the funky whale is "playing your song", note that the funkwhale project is [looking for maintainers](https://blog.funkwhale.audio/~/Announcements/funkwhale-is-looking-for-new-maintainers/).
|
||||
|
||||
--8<-- "recipe-footer.md"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# GitLab
|
||||
|
||||
GitLab is a self-hosted [alternative to GitHub](https://about.gitlab.com/comparison/). The most common use case is (a set of) developers with the desire for the rich feature-set of GitHub, but with unlimited private repositories.
|
||||
GitLab is a self-hosted [alternative to GitHub](https://about.gitlab.com/pricing/self-managed/feature-comparison/). The most common use case is (a set of) developers with the desire for the rich feature-set of GitHub, but with unlimited private repositories.
|
||||
|
||||
Docker does maintain an [official "Omnibus" container](https://docs.gitlab.com/omnibus/docker/README.html), but for this recipe I prefer the "[dockerized gitlab](https://github.com/sameersbn/docker-gitlab)" project, since it allows distribution of the various Gitlab components across multiple swarm nodes.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Miniflux is a lightweight RSS reader, developed by [Frédéric Guillot](https://
|
||||
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
||||
|
||||
* Compatible with the Fever API, read your feeds through existing mobile and desktop clients (_This is the killer feature for me. I hardly ever read RSS on my desktop, I typically read on my iPhone or iPad, using [Fiery Feeds](http://cocoacake.net/apps/fiery/) or my new squeeze, [Unread](https://www.goldenhillsoftware.com/unread/)_)
|
||||
* Send your bookmarks to Pinboard, Wallabag, Shaarli or Instapaper (_I use this to automatically pin my bookmarks for collection on my [blog](https://www.funkypenguin.co.nz/blog/)_)
|
||||
* Send your bookmarks to Pinboard, Wallabag, Shaarli or Instapaper (_I use this to automatically pin my bookmarks for collection on my [blog](https://www.funkypenguin.co.nz/)_)
|
||||
* Feeds can be configured to download a "full" version of the content (_rather than an excerpt_)
|
||||
* Use the Bookmarklet to subscribe to a website directly from any browsers
|
||||
|
||||
@@ -102,7 +102,7 @@ kubectl create secret -n mqtt generic miniflux-credentials \
|
||||
```
|
||||
|
||||
!!! tip "Why use ```echo -n```?"
|
||||
Because. See [my blog post here](https://www.funkypenguin.co.nz/beware-the-hidden-newlines-in-kubernetes-secrets/) for the pain of hunting invisible newlines, that's why!
|
||||
Because. See [my blog post here](https://www.funkypenguin.co.nz/blog/beware-the-hidden-newlines-in-kubernetes-secrets/) for the pain of hunting invisible newlines, that's why!
|
||||
|
||||
## Serving
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Miniflux is a lightweight RSS reader, developed by [Frédéric Guillot](https://
|
||||
I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/review/miniflux-lightweight-self-hosted-rss-reader/), but features (among many) that I appreciate:
|
||||
|
||||
* Compatible with the Fever API, read your feeds through existing mobile and desktop clients (_This is the killer feature for me. I hardly ever read RSS on my desktop, I typically read on my iPhone or iPad, using [Fiery Feeds](http://cocoacake.net/apps/fiery/) or my new squeeze, [Unread](https://www.goldenhillsoftware.com/unread/)_)
|
||||
* Send your bookmarks to Pinboard, Wallabag, Shaarli or Instapaper (_I use this to automatically pin my bookmarks for collection on my [blog](https://www.funkypenguin.co.nz/blog/)_)
|
||||
* Send your bookmarks to Pinboard, Wallabag, Shaarli or Instapaper (_I use this to automatically pin my bookmarks for collection on my [blog](https://www.funkypenguin.co.nz)_)
|
||||
* Feeds can be configured to download a "full" version of the content (_rather than an excerpt_)
|
||||
* Use the Bookmarklet to subscribe to a website directly from any browsers
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ large-scale private cloud infrastructure.
|
||||
|
||||
However, at its simplest, Minio allows you to expose a local filestructure via the [Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html). You could, for example, use it to provide access to "buckets" (folders) of data on your filestore, secured by access/secret keys, just like AWS S3. You can further interact with your "buckets" with common tools, just as if they were hosted on S3.
|
||||
|
||||
Under a more advanced configuration, Minio runs in distributed mode, with [features](https://www.minio.io/features.html) including high-availability, mirroring, erasure-coding, and "bitrot detection".
|
||||
Under a more advanced configuration, Minio runs in distributed mode, with [features](https://docs.min.io/minio/baremetal/concepts/feature-overview.html) including high-availability, mirroring, erasure-coding, and "bitrot detection".
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Share docs. Backup files. Share stuff.
|
||||
|
||||
# NextCloud
|
||||
|
||||
[NextCloud](https://www.nextcloud.org/) (_a [fork of OwnCloud](https://owncloud.org/blog/owncloud-statement-concerning-the-formation-of-nextcloud-by-frank-karlitschek/), led by original developer Frank Karlitschek_) is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server.
|
||||
[NextCloud](https://www.nextcloud.org/) (_a [fork of OwnCloud](https://owncloud.com/owncloud-vs-nextcloud/), led by original developer Frank Karlitschek_) is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server.
|
||||
|
||||
- <https://en.wikipedia.org/wiki/Nextcloud>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Wekan is an open-source kanban board which allows a card-based task and to-do ma
|
||||
|
||||
Wekan allows to create Boards, on which Cards can be moved around between a number of Columns. Boards can have many members, allowing for easy collaboration, just add everyone that should be able to work with you on the board to it, and you are good to go! You can assign colored Labels to cards to facilitate grouping and filtering, additionally you can add members to a card, for example to assign a task to someone.
|
||||
|
||||
There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer showing off the app, as well as a [functional demo](https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap).
|
||||
There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer showing off the app, as well as a [functional demo](https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license).
|
||||
|
||||
!!! note
|
||||
For added privacy, this design secures wekan behind a [traefik-forward-auth](/ha-docker-swarm/traefik-forward-auth/), so that in order to gain access to the wekan UI at all, authentication must have already occurred.
|
||||
|
||||
@@ -27,7 +27,7 @@ plugins:
|
||||
autolinks:
|
||||
macros:
|
||||
verbose: true
|
||||
htmlproofer:
|
||||
# htmlproofer:
|
||||
# raise_error: True
|
||||
# raise_error_excludes:
|
||||
# 504: ['https://www.mkdocs.org/']
|
||||
@@ -65,6 +65,7 @@ nav:
|
||||
- Mylar: recipes/autopirate/mylar.md
|
||||
- NZBGet: recipes/autopirate/nzbget.md
|
||||
- NZBHydra: recipes/autopirate/nzbhydra.md
|
||||
- Prowlarr: recipes/autopirate/prowlarr.md
|
||||
- Ombi: recipes/autopirate/ombi.md
|
||||
- Radarr: recipes/autopirate/radarr.md
|
||||
- Readarr: recipes/autopirate/readarr.md
|
||||
|
||||
3
scripts/build-insiders.sh
Executable file
3
scripts/build-insiders.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
docker build --build-arg FROM_SOURCE=ghcr.io/geek-cookbook/mkdocs-material-insiders . -t funkypenguin/mkdocs-material
|
||||
docker run --rm --name mkdocs-material -v ${PWD}:/docs funkypenguin/mkdocs-material build -f mkdocs-insiders.yml
|
||||
Reference in New Issue
Block a user