diff --git a/_snippets/blog-footer.md b/_snippets/blog-footer.md index d0c42c1..7e085b8 100644 --- a/_snippets/blog-footer.md +++ b/_snippets/blog-footer.md @@ -4,7 +4,7 @@ ### Tip your waiter (sponsor) πŸ‘ -Did you receive excellent service? Want to compliment the chef? (_..and support development of current and future recipes!_) Sponsor me on [Github][github_sponsor] / [Ko-Fi][ko-fi] / [Patreon][patreon], or see the [contribute](/community/contribute/) page for more (_free or paid)_ ways to say thank you! πŸ‘ +Did you receive excellent service? Want to compliment the chef? (_..and support development of current and future recipes!_) Sponsor me on [Github][github_sponsor] / [Ko-Fi][kofi] / [Patreon][patreon], or see the [contribute](/community/contribute/) page for more (_free or paid)_ ways to say thank you! πŸ‘ ### Employ your chef (engage) 🀝 diff --git a/_snippets/common-links.md b/_snippets/common-links.md index c2ceeb7..6020374 100644 --- a/_snippets/common-links.md +++ b/_snippets/common-links.md @@ -68,6 +68,7 @@ [rss-bridge]: /recipes/rss-bridge/ [rtorrent]: /recipes/autopirate/rtorrent/ [sabnzbd]: /recipes/autopirate/sabnzbd/ +[searxng]: /recipes/searxng/ [sonarr]: /recipes/autopirate/sonarr/ [tfa-dex-static]: /docker-swarm/traefik-forward-auth/dex-static/ [tfa-google]: /docker-swarm/traefik-forward-auth/google/ diff --git a/_snippets/recipe-footer.md b/_snippets/recipe-footer.md index abf6e08..201e86c 100644 --- a/_snippets/recipe-footer.md +++ b/_snippets/recipe-footer.md @@ -4,7 +4,7 @@ ### Tip your waiter (sponsor) πŸ‘ -Did you receive excellent service? Want to compliment the chef? (_..and support development of current and future recipes!_) Sponsor me on [Github][github_sponsor] / [Ko-Fi][ko-fi] / [Patreon][patreon], or see the [contribute](/community/contribute/) page for more (_free or paid)_ ways to say thank you! πŸ‘ +Did you receive excellent service? Want to compliment the chef? (_..and support development of current and future recipes!_) Sponsor me on [Github][github_sponsor] / [Ko-Fi][kofi] / [Patreon][patreon], or see the [contribute](/community/contribute/) page for more (_free or paid)_ ways to say thank you! πŸ‘ ### Employ your chef (engage) 🀝 diff --git a/_snippets/recipe-standard-ingredients.md b/_snippets/recipe-standard-ingredients.md index db81bc2..2a7d234 100644 --- a/_snippets/recipe-standard-ingredients.md +++ b/_snippets/recipe-standard-ingredients.md @@ -1,5 +1,3 @@ -## Requirements - !!! summary "Ingredients" Already deployed: diff --git a/docs/blog/posts/changelog/new-recipe-searxng-swarm.md b/docs/blog/posts/changelog/new-recipe-searxng-swarm.md new file mode 100644 index 0000000..bfedab3 --- /dev/null +++ b/docs/blog/posts/changelog/new-recipe-searxng-swarm.md @@ -0,0 +1,27 @@ +--- +date: 2023-03-11 +categories: + - CHANGELOG +tags: + - searxng +links: + - SearXNG recipe: recipes/searxng.md +description: New Recipe Added - Nomie - quantified-self tracker with couchdb multi-device sync +title: Added recipe for SearXNG on Docker Swarm +image: /images/searxng.png +recipe: SearXNG +--- + +# Added recipe for {{ page.meta.recipe }} (swarm) + +SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services. + +Users are neither tracked nor profiled. You can use one of the 100+ [public instances](https://searx.space/) (*including [ours](https://searxng.fnky.nz)*), or (*and really, this is why you're here, right?*) you can [run your own instance](https://docs.searxng.org/own-instance.html) + + + +![Screenshot of {{ page.meta.recipe }}]({{ page.meta.image }}){ loading=lazy } + +See the [recipe][searxng] for more! + +--8<-- "common-links.md" diff --git a/docs/docker-swarm/authelia.md b/docs/docker-swarm/authelia.md index 7144fcd..4163e88 100644 --- a/docs/docker-swarm/authelia.md +++ b/docs/docker-swarm/authelia.md @@ -155,7 +155,7 @@ To create a hashed password you can run the following command ### Authelia Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example: --8<-- "premix-cta.md" diff --git a/docs/docker-swarm/traefik-forward-auth/google.md b/docs/docker-swarm/traefik-forward-auth/google.md index c6ebcde..f9578d1 100644 --- a/docs/docker-swarm/traefik-forward-auth/google.md +++ b/docs/docker-swarm/traefik-forward-auth/google.md @@ -27,7 +27,7 @@ Here's a [screencast I recorded](https://static.funkypenguin.co.nz/2021/screenca !!! tip Store your client ID and secret safely - you'll need them for the next step. -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/traefik-forward-auth/traefik-forward-auth.env` as per the following example: diff --git a/docs/images/searxng.png b/docs/images/searxng.png new file mode 100644 index 0000000..af921c3 Binary files /dev/null and b/docs/images/searxng.png differ diff --git a/docs/recipes/archivebox.md b/docs/recipes/archivebox.md index bd8b6a2..29a04b4 100644 --- a/docs/recipes/archivebox.md +++ b/docs/recipes/archivebox.md @@ -1,6 +1,9 @@ --- -title: Archivebox - bookmark manager for your self-hosted stack +title: Run Archivebox on Docker Swarm +description: Archivebox - bookmark manager for your self-hosted stack +recipe: Archivebox --- + # Archivebox [ArchiveBox](https://github.com/ArchiveBox/ArchiveBox) is a self-hosted internet archiving solution to collect and save sites you wish to view offline. @@ -14,6 +17,8 @@ Features include: - Supports Scheduled importing - Supports Realtime importing +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -30,7 +35,7 @@ cd /var/data/config/archivebox ### Create docker-compose.yml -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/audiobookshelf.md b/docs/recipes/audiobookshelf.md index 85e09ff..5ffe37a 100644 --- a/docs/recipes/audiobookshelf.md +++ b/docs/recipes/audiobookshelf.md @@ -59,7 +59,7 @@ AUDIOBOOKSHELF_GID=100 ### Audiobookshelf Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example: --8<-- "premix-cta.md" diff --git a/docs/recipes/bitwarden.md b/docs/recipes/bitwarden.md index cebc482..a430d75 100644 --- a/docs/recipes/bitwarden.md +++ b/docs/recipes/bitwarden.md @@ -1,6 +1,7 @@ --- title: How to run Bitwarden / bitwardenrs self hosted in Docker description: Bitwarden / bitwardenrs is a self-hosted internet archiving solution +recipe: Bitwarden --- # Bitwarden, self hosted in Docker Swarm @@ -25,6 +26,8 @@ Bitwarden is a free and open source password management solution for individuals * Secure password generator * Self-host on your own server (optional) +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -44,9 +47,9 @@ Create `/var/data/config/bitwarden/bitwarden.env`, and **leave it empty for now* !!! question What, why an empty env file? Well, the container supports lots of customizations via environment variables, for things like toggling self-registration, 2FA, etc. These are too complex to go into for this recipe, but readers are recommended to review the [dani-garcia/vaultwarden wiki](https://github.com/dani-garcia/vaultwarden/wiki), and customize their installation to suite. -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/bookstack.md b/docs/recipes/bookstack.md index e7f69a9..d8c6035 100644 --- a/docs/recipes/bookstack.md +++ b/docs/recipes/bookstack.md @@ -1,6 +1,7 @@ --- title: How to run BookStack in Docker description: BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. Here's how to integrate linuxserver's bookstack image into your Docker Swarm stack. +recipe: BookStack --- # BookStack in Docker @@ -13,6 +14,8 @@ A friendly middle ground between heavyweights like MediaWiki or Confluence and [ I like to protect my public-facing web UIs with an [oauth_proxy](/reference/oauth_proxy/), ensuring that if an application bug (or a user misconfiguration) exposes the app to unplanned public scrutiny, I have a second layer of defense. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -26,7 +29,7 @@ mkdir -p /var/data/bookstack/database-dump mkdir -p /var/data/runtime/bookstack/db ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create bookstack.env, and populate with the following variables. Set the [oauth_proxy](/reference/oauth_proxy/) variables provided by your OAuth provider (if applicable.) @@ -49,9 +52,9 @@ DB_USERNAME=bookstack DB_PASSWORD=secret ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/calibre-web.md b/docs/recipes/calibre-web.md index 0462e55..c0cf9fd 100644 --- a/docs/recipes/calibre-web.md +++ b/docs/recipes/calibre-web.md @@ -1,6 +1,7 @@ --- title: Run calibre-web in Docker description: Manage your ebook collection. Like a BOSS. +recipe: Calibre-Web --- # Calibre-Web in Docker @@ -23,6 +24,8 @@ Support for editing eBook metadata and deleting eBooks from Calibre library * Support for reading eBooks directly in the browser (.txt, .epub, .pdf, .cbr, .cbt, .cbz) * Upload new books in PDF, epub, fb2 format +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -38,7 +41,7 @@ chown calibre:calibre /var/data/calibre-web # for example Ensure that your Calibre library is accessible to the swarm (_i.e., exists on shared storage_), and that the same user who owns the config directory above, also owns the actual calibre library data (_including the ebooks managed by Calibre_). -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/calibre-web/calibre-web.env`, and populate with the following variables @@ -48,9 +51,9 @@ PUID= PGID= ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/collabora-online.md b/docs/recipes/collabora-online.md index 5a50757..ffdf7bd 100644 --- a/docs/recipes/collabora-online.md +++ b/docs/recipes/collabora-online.md @@ -47,7 +47,7 @@ mkdir /var/data/collabora/ mkdir /var/data/config/collabora/ ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/config/collabora/collabora.env, and populate with the following variables, customized for your installation. @@ -153,7 +153,7 @@ The way we do this is we mount Create an empty `/var/data/collabora/loolwsd.xml` by running `touch /var/data/collabora/loolwsd.xml`. We'll populate this in the next section... -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create `/var/data/config/collabora/collabora.yml` as per the following example, changing the traefik frontend_rule as necessary: diff --git a/docs/recipes/cyberchef.md b/docs/recipes/cyberchef.md index c54daf8..455e864 100644 --- a/docs/recipes/cyberchef.md +++ b/docs/recipes/cyberchef.md @@ -1,6 +1,7 @@ --- title: Run an online a1z26 decoder with cyberchef (among others) description: Be a l33t h@xor with this toolkit from the GHCQ. Run your own online instance of cyberchef, and decode / encode those nasty a1z26s! +recipe: CyberChef --- # CyberChef @@ -22,13 +23,15 @@ Here are some examples of fancy hax0r tricks you can do with CyberChef: Here's a [live demo](https://gchq.github.io/CyberChef)! +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -CyberChef doesn't require any persistent storage, or fancy configuration, so simply create a docker swarm config file in docker-compose syntax (v3), something like this: +CyberChef doesn't require any persistent storage, or fancy configuration, so simply create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/duplicati.md b/docs/recipes/duplicati.md index bc43d41..5e8509d 100644 --- a/docs/recipes/duplicati.md +++ b/docs/recipes/duplicati.md @@ -39,7 +39,7 @@ mkdir /var/data/duplicati cd /var/data/config/duplicati ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment 1. Generate a random passphrase to use to encrypt your data. **Save this somewhere safe**, without it you won't be able to restore! 2. Seriously, **save**. **it**. **somewhere**. **safe**. @@ -55,9 +55,9 @@ CLI_ARGS= #optional !!! question "Excuse me! Why are we running Duplicati as root?" That's a great question! We're running Duplicati as the `root` user of the host system because we need Duplicati to be able to read files of all the other services no matter which user that service is running as. After all, Duplicati can't backup your exciting stuff if it can't read the files. -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/duplicity.md b/docs/recipes/duplicity.md index 06d0fdc..9d6edd7 100644 --- a/docs/recipes/duplicity.md +++ b/docs/recipes/duplicity.md @@ -51,7 +51,7 @@ I didn't already have an archival/backup provider, so I chose Google Cloud "clou 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. -### Prepare environment +### Prepare {{ page.meta.recipe }} environment 1. Generate a random passphrase to use to encrypt your data. **Save this somewhere safe**, without it you won't be able to restore! 2. Seriously, **save**. **it**. **somewhere**. **safe**. @@ -116,9 +116,9 @@ tecnativa/duplicity duplicity restore \ Examine the contents of /var/data/duplicity/tmp/traefik-restored.yml to confirm it contains valid data. -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Now that we have confidence in our backup/restore process, let's automate it by creating a docker swarm config file in docker-compose syntax (v3), something like this: +Now that we have confidence in our backup/restore process, let's automate it by creating a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/elkarbackup.md b/docs/recipes/elkarbackup.md index 906eeed..6270f1d 100644 --- a/docs/recipes/elkarbackup.md +++ b/docs/recipes/elkarbackup.md @@ -1,6 +1,7 @@ --- title: Use elkarbackup in Docker to backup to backblaze / b2 and friends description: ElkarBackup is a free open-source backup solution based on RSync/RSnapshot. It's basically a web wrapper around rsync/rsnapshot, which means that your backups are just files on a filesystem, utilising hardlinks for tracking incremental changes. +recipe: Elkar Backup --- # Elkar Backup @@ -14,7 +15,7 @@ ElkarBackup is a free open-source backup solution based on RSync/RSnapshot. It's ![ElkarBackup Screenshot](../images/elkarbackup.png){ loading=lazy } -## Details +## {{ page.meta.recipe }} Requirements --8<-- "recipe-standard-ingredients.md" @@ -30,7 +31,7 @@ mkdir -p /var/data/runtime/elkarbackup/db mkdir -p /var/data/config/elkarbackup ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/config/elkarbackup/elkarbackup.env, and populate with the following variables @@ -66,9 +67,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/emby.md b/docs/recipes/emby.md index 64762fe..7a017b1 100644 --- a/docs/recipes/emby.md +++ b/docs/recipes/emby.md @@ -1,6 +1,7 @@ --- title: Run Emby server with docker compose (using swarm) description: Kick-ass media player! +recipe: Emby --- # Emby @@ -11,6 +12,8 @@ description: Kick-ass media player! I've started experimenting with Emby as an alternative to Plex, because of the advanced [parental controls](https://github.com/MediaBrowser/Wiki/wiki/Parental-Controls) it offers. Based on my experimentation thus far, I have a "**kid-safe**" profile which automatically logs in, and only displays kid-safe content, based on ratings. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -23,7 +26,7 @@ We'll need a location to store Emby's library data, config files, logs and tempo mkdir /var/data/emby ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create emby.env, and populate with PUID/GUID for the user who owns the /var/data/emby directory (_above_) and your actual media content (_in this example, the media content is at **/srv/data**_) @@ -32,9 +35,9 @@ PUID= GUID= ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/funkwhale.md b/docs/recipes/funkwhale.md index 432e42f..554409e 100644 --- a/docs/recipes/funkwhale.md +++ b/docs/recipes/funkwhale.md @@ -1,6 +1,7 @@ --- title: Install funkwhale with docker-compose / swarm description: Funkwhale is a decentralized, federated music streaming platform +recipe: Funkywhale --- # Funkwhale @@ -13,6 +14,8 @@ The idea is that you run a "pod" (*just like whales, Funkwhale users gather in p You will be then able to interact with other people regardless of which pod they are using. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -25,7 +28,7 @@ First we create a directory to hold our funky data: mkdir /var/data/funkwhale ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Funkwhale is configured using environment variables. Create `/var/data/config/funkwhale/funkwhale.env`, by running something like this: @@ -54,7 +57,7 @@ EOF chmod 600 /var/data/funkwhale/funkwhale.env ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create a docker swarm config file in docker-compose syntax (v3) (*I store all my config files as `/var/data/config//.yml`*), something like this: diff --git a/docs/recipes/ghost.md b/docs/recipes/ghost.md index 311c356..0c8948c 100644 --- a/docs/recipes/ghost.md +++ b/docs/recipes/ghost.md @@ -1,6 +1,7 @@ --- title: Blog with Ghost in Docker description: How to run the beautiful, publication-focused blogging engine "Ghost" using Docker +recipe: Ghost --- # Ghost @@ -9,6 +10,8 @@ description: How to run the beautiful, publication-focused blogging engine "Ghos ![Ghost screenshot](/images/ghost.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -21,9 +24,9 @@ Create the location for the bind-mount of the application data, so that it's per mkdir -p /var/data/ghost ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/gitlab-runner.md b/docs/recipes/gitlab-runner.md index bb2af54..804d9a5 100644 --- a/docs/recipes/gitlab-runner.md +++ b/docs/recipes/gitlab-runner.md @@ -28,9 +28,9 @@ We'll need several directories to bind-mount into our runner containers, so crea mkdir -p /var/data/gitlab/runners/{1,2} ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/gitlab.md b/docs/recipes/gitlab.md index ba999d2..4b75190 100644 --- a/docs/recipes/gitlab.md +++ b/docs/recipes/gitlab.md @@ -1,5 +1,7 @@ --- -title: How to run Gitlab in Docker +title: How to run GitLab in Docker Swarm +description: Need your own GitHub-like experience? Try GitLab in Docker Swarm! +recipe: GitLab --- # GitLab @@ -7,6 +9,8 @@ GitLab is a self-hosted [alternative to GitHub](https://about.gitlab.com/pricing 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. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -22,7 +26,7 @@ cd gitlab mkdir -p {postgresql,redis,gitlab} ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment You'll need to know the following: @@ -52,9 +56,9 @@ GITLAB_SECRETS_OTP_KEY_BASE=t9LPjnLzbkJ7Nt6LZJj6hptdpgG58MPJPwnMMMDdx27KSwLWHDrz GITLAB_ROOT_PASSWORD=changeme ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/gollum.md b/docs/recipes/gollum.md index 0c93f2b..f698abc 100644 --- a/docs/recipes/gollum.md +++ b/docs/recipes/gollum.md @@ -1,5 +1,6 @@ --- -title: Run Gollum in Docker +title: Run Gollum in Docker Swarm +recipe: Gollum --- # Gollum @@ -31,6 +32,8 @@ Gollum meets all these requirements, and as an added bonus, is extremely fast an !!! note Since Gollum itself offers no user authentication, this design secures gollum behind [traefik-forward-auth](/docker-swarm/traefik-forward-auth/), so that in order to gain access to the Gollum UI at all, authentication must have already occurred. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -47,9 +50,9 @@ git init ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/homeassistant.md b/docs/recipes/homeassistant.md index db1d4b3..1d46d60 100644 --- a/docs/recipes/homeassistant.md +++ b/docs/recipes/homeassistant.md @@ -1,5 +1,6 @@ --- description: Assist your home automation +recipe: Home Assistant --- # Home Assistant @@ -10,6 +11,8 @@ Home Assistant is a home automation platform written in Python, with extensive s This recipie combines the [extensibility](https://home-assistant.io/components/) of [Home Assistant](https://home-assistant.io/) with the flexibility of [InfluxDB](https://docs.influxdata.com/influxdb/v1.4/) (_for time series data store_) and [Grafana](https://grafana.com/) (_for **beautiful** visualisation of that data_). +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -30,7 +33,7 @@ Now create a directory for the influxdb realtime data: mkdir /var/data/runtime/homeassistant/influxdb ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/config/homeassistant/grafana.env, and populate with the following - this is to enable grafana to work with oauth2_proxy without requiring an additional level of authentication: @@ -38,9 +41,9 @@ Create /var/data/config/homeassistant/grafana.env, and populate with the followi GF_AUTH_BASIC_ENABLED=false ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/huginn.md b/docs/recipes/huginn.md index 2d194f2..24353d7 100644 --- a/docs/recipes/huginn.md +++ b/docs/recipes/huginn.md @@ -1,5 +1,6 @@ --- title: Run Huggin in Docker +recipe: Huginn --- # Huginn @@ -9,6 +10,8 @@ Huginn is a system for building agents that perform automated tasks for you onli +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -33,7 +36,7 @@ cd /var/data/docker-mailserver/ cat config/opendkim/keys/huginn.example.com/mail.txt ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/config/huginn/huginn.env, and populate with the following variables. Set the "INVITATION_CODE" variable if you want to require users to enter a code to sign up (protects the UI from abuse) (The full list of Huginn environment variables is available [here](https://github.com/huginn/huginn/blob/master/.env.example)) @@ -64,9 +67,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/immich.md b/docs/recipes/immich.md index 6ef494e..38cfdb3 100644 --- a/docs/recipes/immich.md +++ b/docs/recipes/immich.md @@ -118,7 +118,7 @@ NODE_ENV=production ### Immich Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example: --8<-- "premix-cta.md" diff --git a/docs/recipes/instapy.md b/docs/recipes/instapy.md index 9d233ee..5b35bb2 100644 --- a/docs/recipes/instapy.md +++ b/docs/recipes/instapy.md @@ -1,6 +1,7 @@ --- title: How to run InstaPy in Docker description: Automate your fake Instagram life with automated fakery using InstaPy in Docker +recipe: InstaPy --- # InstaPy @@ -13,6 +14,8 @@ What's an Instagram bot? Basically, you feed the bot your Instagram user/passwor Great power, right? A client (_yes, you can [hire](https://www.funkypenguin.co.nz/) me!_) asked me to integrate InstaPy into their swarm, and this recipe is the result. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -25,9 +28,9 @@ We need a data location to store InstaPy's config, as well as its log files. Cre mkdir -p /var/data/instapy/logs ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/invidious.md b/docs/recipes/invidious.md index 3112c94..560ea09 100644 --- a/docs/recipes/invidious.md +++ b/docs/recipes/invidious.md @@ -72,7 +72,7 @@ BACKUP_FREQUENCY=1d ### Invidious Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example[^1]: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example[^1]: --8<-- "premix-cta.md" diff --git a/docs/recipes/jellyfin.md b/docs/recipes/jellyfin.md index 3ba359d..f51863d 100644 --- a/docs/recipes/jellyfin.md +++ b/docs/recipes/jellyfin.md @@ -1,6 +1,7 @@ --- title: Run Jellyfin in Docker with docker compose / swarm description: Jellyfin is best described as "like Emby but really FOSS" +recipe: Jellyfin --- # Jellyfin @@ -11,6 +12,8 @@ description: Jellyfin is best described as "like Emby but really FOSS" If it looks very similar as Emby, is because it started as a fork of it, but it has evolved since them. For a complete explanation of the why, look [here](https://jellyfin.org/docs/general/about.html). +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -29,7 +32,7 @@ Also if we want to avoid the cache to be part of the backup, we should create a mkdir /var/data/runtime/jellyfin ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create jellyfin.env, and populate with PUID/GUID for the user who owns the /var/data/jellyfin directory (_above_) and your actual media content (_in this example, the media content is at **/srv/data**_) @@ -38,9 +41,9 @@ PUID= GUID= ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/kanboard.md b/docs/recipes/kanboard.md index 966d057..f433066 100644 --- a/docs/recipes/kanboard.md +++ b/docs/recipes/kanboard.md @@ -1,6 +1,7 @@ --- title: How to run Kanboard using Docker description: Run Kanboard with Docker to get your personal kanban on! +recipe: Kanboard --- # Kanboard @@ -22,6 +23,8 @@ Features include: ![Kanboard screenshot](/images/kanboard.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -34,9 +37,9 @@ Create the location for the bind-mount of the application data, so that it's per mkdir -p /var/data/kanboard ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/kavita.md b/docs/recipes/kavita.md index 41d27e8..c667f3e 100644 --- a/docs/recipes/kavita.md +++ b/docs/recipes/kavita.md @@ -1,6 +1,7 @@ --- title: Kavita Reader in Docker - Read ebooks / Manga / Comics description: Here's a recipe to run Kavita under Docker Swarm to read your comics / manga / ebooks +recipe: Kavita --- # Kavita Reader in Docker Swarm @@ -13,8 +14,11 @@ So you've just watched a bunch of superhero movies, and you're suddenly inspired There's a [public demo available](https://www.kavitareader.com/#demo) too! +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" - *[X] [AutoPirate](/recipes/autopirate/) components (*specifically [Mylar](/recipes/autopirate/mylar/)*), for searching for, downloading, and managing comic books + + * [X] [AutoPirate](/recipes/autopirate/) components (*specifically [Mylar](/recipes/autopirate/mylar/)*), for searching for, downloading, and managing comic books ## Preparation @@ -26,9 +30,9 @@ First we create a directory to hold the kavita database, logs and other persiste mkdir /var/data/kavita ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/keycloak/index.md b/docs/recipes/keycloak/index.md index c1fccd4..9f2d197 100644 --- a/docs/recipes/keycloak/index.md +++ b/docs/recipes/keycloak/index.md @@ -1,5 +1,6 @@ --- title: Run Keycloak behind traefik in Docker +recipe: Keycloak --- # Keycloak (in Docker Swarm) @@ -10,6 +11,8 @@ Keycloak's OpenID provider can also be used in combination with [Traefik Forward ![Keycloak Screenshot](/images/keycloak.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Setup diff --git a/docs/recipes/komga.md b/docs/recipes/komga.md index 81ad8c5..0fd6b6a 100644 --- a/docs/recipes/komga.md +++ b/docs/recipes/komga.md @@ -1,6 +1,7 @@ --- title: How to run Komga with Docker description: Run Komga under Docker Swarm in docker-compose syntax +recipe: Komga --- # Komga in Docker Swarm @@ -11,10 +12,11 @@ So you've just watched a bunch of superhero movies, and you're suddenly inspired [Komga](https://komga.org/) is a media server with a beautifully slick interface, allowing you to read your comics / manga in CBZ, CBR, PDF and epub format. Komga includes an integrated web reader, as well as a [Tachiyomi](https://tachiyomi.org/) plugin and an OPDS server for integration with other mobile apps such as [Chunky on iPad](https://apps.apple.com/us/app/chunky-comic-reader/id663567628). -## Ingredients +## {{ page.meta.recipe }} Requirements --8<-- "recipe-standard-ingredients.md" - *[X] [AutoPirate](/recipes/autopirate/) components (*specifically [Mylar](/recipes/autopirate/mylar/)*), for searching for, downloading, and managing comic books + + * [X] [AutoPirate](/recipes/autopirate/) components (*specifically [Mylar](/recipes/autopirate/mylar/)*), for searching for, downloading, and managing comic books ## Preparation @@ -26,9 +28,9 @@ First we create a directory to hold the komga database, logs and other persisten mkdir /var/data/komga ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/linx.md b/docs/recipes/linx.md index 78eba50..206dca2 100644 --- a/docs/recipes/linx.md +++ b/docs/recipes/linx.md @@ -1,6 +1,7 @@ --- title: How to share screenshots with linx under Docker description: Quickly share self-destructing screenshots, text, etc +recipe: Linx --- # Linx @@ -19,6 +20,8 @@ Want to privately share some log output with a password, or a self-destructing c - :white_check_mark: Torrent download of files using web seeding - :white_check_mark: File expiry, deletion key, file access key, and random filename options +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -43,9 +46,9 @@ cleanup-every-minutes = 5 EOF ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/mail.md b/docs/recipes/mail.md index af2bdff..cc8e8a5 100644 --- a/docs/recipes/mail.md +++ b/docs/recipes/mail.md @@ -93,7 +93,7 @@ Create the necessary DNS TXT entries for your domain(s). Note that although open "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYuQqDg2ZG8ZOfI1PvarF1Gcr5cJnCR8BeCj5HYgeRohSrxKL5utPEF/AWAxXYwnKpgYN837fu74GfqsIuOhu70lPhGV+O2gFVgpXYWHELvIiTqqO0QgarIN63WE2gzE4s0FckfLrMuxMoXr882wuzuJhXywGxOavybmjpnNHhbQIDAQAB" ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create a docker swarm config file in docker-compose syntax (_v3.2 - because we need to expose mail ports in "host mode"_), something like this: diff --git a/docs/recipes/mastodon.md b/docs/recipes/mastodon.md index 3c37bdd..ae60dea 100644 --- a/docs/recipes/mastodon.md +++ b/docs/recipes/mastodon.md @@ -145,7 +145,7 @@ SESSION_RETENTION_PERIOD=31556952 ### Mastodon Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example: --8<-- "premix-cta.md" diff --git a/docs/recipes/mealie.md b/docs/recipes/mealie.md index 96d49ed..a9f952e 100644 --- a/docs/recipes/mealie.md +++ b/docs/recipes/mealie.md @@ -1,6 +1,7 @@ --- title: Mealie recipe manager on Docker description: A tasty tool to manage your meals and shopping list, on Docker swarm +recipe: Mealie --- # Mealie @@ -16,6 +17,8 @@ Mealie also provides a secure API for interactions from 3rd party applications. !!! question "Why does my recipe manager need an API?" An API allows integration into applications like Home Assistant that can act as notification engines to provide custom notifications based of Meal Plan data to remind you to defrost the chicken, marinade the steak, or start the CrockPot. See the [official docs](https://hay-kot.github.io/mealie/) for more information. Additionally, you can access any available API from the backend server. To explore the API spin up your server and navigate to for interactive API documentation. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -39,9 +42,9 @@ db_type=sqlite EOF ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/miniflux.md b/docs/recipes/miniflux.md index 4a87198..3d775e3 100644 --- a/docs/recipes/miniflux.md +++ b/docs/recipes/miniflux.md @@ -1,5 +1,6 @@ --- title: Read RSS in peace with miniflux on Docker +recipe: Miniflux --- # Miniflux @@ -18,6 +19,8 @@ I've [reviewed Miniflux in detail on my blog](https://www.funkypenguin.co.nz/rev !!! abstract "2.0+ is a bit different" [Some things changed](https://docs.miniflux.net/en/latest/migration.html) when Miniflux 2.0 was released. For one thing, the only supported database is now postgresql (_no more SQLite_). External themes are gone, as is PHP (_in favor of golang_). It's been a controversial change, but I'm keen on minimal and single-purpose, so I'm still very happy with the direction of development. The developer has laid out his [opinions](https://docs.miniflux.net/en/latest/opinionated.html) re the decisions he's made in the course of development. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -62,9 +65,9 @@ BACKUP_FREQUENCY=1d The entire application is configured using environment variables, including the initial username. Once you've successfully deployed once, comment out ```CREATE_ADMIN``` and the two successive lines. -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/minio.md b/docs/recipes/minio.md index 955533a..dab81d2 100644 --- a/docs/recipes/minio.md +++ b/docs/recipes/minio.md @@ -1,6 +1,7 @@ --- title: Run Minio on Docker (using compose format in swarm) description: How to run Minio's self-hosted S3-compatible object storage under Docker Swarm, using docker-compose v3 syntax +recipe: Minio --- # Minio @@ -20,6 +21,8 @@ Possible use-cases: 2. Simulating S3 in a dev environment 3. Mirroring an S3 bucket locally +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -32,7 +35,7 @@ We'll need a directory to hold our minio file store. You can create a blank dire mkdir /var/data/minio ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `minio.env`, and populate with the variables below. @@ -46,9 +49,9 @@ MINIO_SERVER_URL=https://minio.example.com !!! note "If minio redirects you to :9001" `MINIO_BROWSER_REDIRECT_URL` is especially important since recent versions of Minio will redirect web browsers to this URL when they hit the API directly. (*If you find yourself redirected to `http://your-minio-url:9001`, then you've not set this value correctly!*) -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/munin.md b/docs/recipes/munin.md index 39e7b53..309e725 100644 --- a/docs/recipes/munin.md +++ b/docs/recipes/munin.md @@ -1,6 +1,7 @@ --- title: How to run Munin in Docker description: Network resource monitoring tool for quick analysis +recipe: Munin --- # Munin in Docker @@ -13,6 +14,8 @@ Using Munin you can easily monitor the performance of your computers, networks, Munin uses the excellent ​RRDTool (written by Tobi Oetiker) and the framework is written in Perl, while plugins may be written in any language. Munin has a master/node architecture in which the master connects to all the nodes at regular intervals and asks them for data. It then stores the data in RRD files, and (if needed) updates the graphs. One of the main goals has been ease of creating new plugins (graphs). +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -44,7 +47,7 @@ cd /var/data/munin mkdir -p {log,lib,run,cache} ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/config/munin/munin.env, and populate with the following variables. Set at a **minimum** the `MUNIN_USER`, `MUNIN_PASSWORD`, and `NODES` values: @@ -65,9 +68,9 @@ NODES="node1:192.168.1.1 node2:192.168.1.2 node3:192.168.1.3" SNMP_NODES="router1:10.0.0.254:9999" ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/nextcloud.md b/docs/recipes/nextcloud.md index 7d0042f..f8cf8e3 100644 --- a/docs/recipes/nextcloud.md +++ b/docs/recipes/nextcloud.md @@ -1,6 +1,7 @@ --- title: How to run Nextcloud in Docker (behind Traefik) description: We can now run Nextcloud in our Docker Swarm, with LetsEncrypt SSL termination handled by Traefik +recipe: NextCloud --- # NextCloud Docker Compose / Swarm Install @@ -13,6 +14,8 @@ It also now supports a sweet, customizable dashboard: This recipe uses the official NextCloud docker hub image, and includes separate docker containers for the database (*MariaDB*), Redis (*for transactional locking*), automated database backup, (*you backup the stuff you care about, right?*) and a separate cron container for running NextCloud's 15-min background tasks. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation diff --git a/docs/recipes/nightscout.md b/docs/recipes/nightscout.md index 9cf794d..1aed864 100644 --- a/docs/recipes/nightscout.md +++ b/docs/recipes/nightscout.md @@ -1,6 +1,7 @@ --- title: How to run your own Nightscout instance using Docker description: CGM data with an API, for diabetic quality-of-life improvements +recipe: Nightscout --- # Nightscout Setup with Docker @@ -22,6 +23,8 @@ Nightscout is "*...an open source, DIY project that allows real time access to a Most NightScout users will deploy to Heroko, using MongoDB Atlas, which is a [well-documented solution](https://nightscout.github.io/nightscout/new_user/). If you wanted to run NightScout on your own Docker stack though, then this recipe is for you! +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -92,9 +95,9 @@ BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/nomie.md b/docs/recipes/nomie.md index 161dc2f..a09c451 100644 --- a/docs/recipes/nomie.md +++ b/docs/recipes/nomie.md @@ -2,6 +2,7 @@ title: Quantify your self using Nomie 6 in Docker Swarm with CouchDB description: How to use Nomie 6 to "life-track" yourself, deployed in Docker Swarm status: new +recipe: Nomie --- # Nomie in Docker Swarm with CouchDB @@ -23,6 +24,8 @@ The latest version (Nomie 6) which offered a paid cloud hosting / sync service, To this end, in this recipe, I'll assume we want CouchDB syncing (*after all, who only uses one device these days?*) +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -66,7 +69,7 @@ headers = accept, authorization, content-type, origin, referer, x-csrf-token ### Setup Nomie Docker config -Finally, create a docker swarm config file in docker-compose syntax (v3), something like this: +Finally, create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/openldap.md b/docs/recipes/openldap.md index b4caf16..72655af 100644 --- a/docs/recipes/openldap.md +++ b/docs/recipes/openldap.md @@ -1,6 +1,7 @@ --- title: Run OpenLDAP in Docker description: How to run an OpenLDAP server in Docker Swarm, with LDAP Account Manager. Authenticate like it's 1990! +recipe: OpenLDAP --- # OpenLDAP @@ -23,6 +24,8 @@ This recipe combines the raw power of OpenLDAP with the flexibility and features What you'll end up with is a directory structure which will allow integration with popular tools (_[NextCloud](/recipes/nextcloud/), [Kanboard](/recipes/kanboard/), [Gitlab](/recipes/gitlab/), etc_), as well as with Keycloak (_an upcoming recipe_), for **true** SSO. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -39,7 +42,7 @@ mkdir /var/data/runtime/openldap/ !!! note "Why 2 directories?" For rationale, see my [data layout explanation](/reference/data_layout/) -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create /var/data/openldap/openldap.env, and populate with the following variables, customized for your own domain structure. Take care with LDAP_DOMAIN, this is core to your directory structure, and can't easily be changed later. @@ -316,9 +319,9 @@ Create yours profile (_you chose a default profile in config.cfg above, remember tools: tool_hide_toolMultiEdit: false ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this, at (```/var/data/config/openldap/openldap.yml```) +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.., at (```/var/data/config/openldap/openldap.yml```) --8<-- "premix-cta.md" diff --git a/docs/recipes/owntracks.md b/docs/recipes/owntracks.md index 55db8d7..3a5691e 100644 --- a/docs/recipes/owntracks.md +++ b/docs/recipes/owntracks.md @@ -1,5 +1,6 @@ --- title: Run OwnTracks under Docker +recipe: OwnTracks --- # OwnTracks @@ -13,6 +14,8 @@ Using a smartphone app, OwnTracks allows you to collect and analyse your own loc * Sharing family locations without relying on Apple Find-My-friends * Performing automated actions in [HomeAssistant](/recipes/homeassistant/) when you arrive/leave home +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -25,7 +28,7 @@ We'll need a directory so store OwnTracks' data , so create ```/var/data/owntra mkdir /var/data/owntracks ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create owntracks.env, and populate with the following variables @@ -35,9 +38,9 @@ OTR_PASS=yourpassword OTR_HOST=owntracks.example.com ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/paperless-ng.md b/docs/recipes/paperless-ng.md index f0fc977..ec641c5 100644 --- a/docs/recipes/paperless-ng.md +++ b/docs/recipes/paperless-ng.md @@ -1,6 +1,7 @@ --- title: Run paperless-ngx under Docker description: Easily index, search, and view archive all of your scanned dead-tree documents with Paperless NGX, under Docker, now using the linuxserver image since the fork from from paperless-ng to paperless-ngx! +recipe: Paperless NGX --- # Paperless NGX @@ -12,6 +13,8 @@ Paper is a nightmare. Environmental issues aside, there’s no excuse for it in !!! question "What's this fork 🍴 thing about, and is it Paperless, Paperless-NG, or Paperless-NGX?" It's now.. Paperless-NGX. Paperless-ngx is a fork of paperless-ng, which itself was a fork of paperless. As I understand it, the original "forker" of paperless to paperless-ng has "gone dark", and [stopped communicating](https://github.com/jonaswinkler/paperless-ng/issues/1599), so while all are hopeful that he's OK and just busy/distracted, the [community formed paperless-ngx](https://github.com/jonaswinkler/paperless-ng/issues/1632) to carry on development work under a shared responsibility model. To save some typing though, we'll just call it "Paperless", although you'll note belowe that we're using the linuxserver paperless-ngx image. (Also, if you use the automated tooling in the Premix Repo, Ansible *really* doesn't like the hypen!) +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -56,7 +59,7 @@ You'll need to replace some of the text in the snippet above: * `` - Password of the superuser account above. * `` - Email address of the superuser account above. -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create a docker swarm config file in docker-compose syntax (v3), something like the following example: diff --git a/docs/recipes/photoprism.md b/docs/recipes/photoprism.md index 0f20f8e..ec586e4 100644 --- a/docs/recipes/photoprism.md +++ b/docs/recipes/photoprism.md @@ -1,6 +1,7 @@ --- title: Run Photoprism on Docker description: ML-powered private photo hosting +recipe: Photoprism --- # Photoprism on Docker @@ -9,6 +10,8 @@ description: ML-powered private photo hosting ![Photoprism Screenshot](../images/photoprism.jpg){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -42,7 +45,7 @@ mkdir /var/data/runtime/photoprism/db mkdir /var/data/photoprism/database-dump ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create ```photoprism.env```, and populate with the following variables. Change passwords @@ -86,9 +89,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ```` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/phpipam.md b/docs/recipes/phpipam.md index 9cf2899..a4c07f5 100644 --- a/docs/recipes/phpipam.md +++ b/docs/recipes/phpipam.md @@ -1,6 +1,7 @@ --- title: Run phpIPAM under Docker description: Is that IP address in use? Do some DHP / Discovery with phpIPAM under Docker +recipe: phpIPAM --- # phpIPAM @@ -21,6 +22,8 @@ And that [HomeAssistant](/recipes/homeassistant/) config, which you so carefully Enter phpIPAM. A tool designed to help home keeps as well as large organisations keep track of their IP (_and VLAN, VRF, and AS number_) allocations. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -34,7 +37,7 @@ mkdir /var/data/phpipam/databases-dump -p mkdir /var/data/runtime/phpipam -p ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `phpipam.env`, and populate with the following variables @@ -75,9 +78,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/pixelfed.md b/docs/recipes/pixelfed.md index 12aca76..9b84999 100644 --- a/docs/recipes/pixelfed.md +++ b/docs/recipes/pixelfed.md @@ -224,7 +224,7 @@ chown www-data /var/data/config/pixelfed/pixelfed.env ### Pixelfed Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this example: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below.. example: --8<-- "premix-cta.md" diff --git a/docs/recipes/plex.md b/docs/recipes/plex.md index 70c7e7e..e16f325 100644 --- a/docs/recipes/plex.md +++ b/docs/recipes/plex.md @@ -1,6 +1,7 @@ --- title: Run Plex in Docker description: Play back all your media on all your devices +recipe: Plex --- # Plex in Docker @@ -9,6 +10,8 @@ description: Play back all your media on all your devices ![Plex Screenshot](../images/plex.jpg) +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -21,7 +24,7 @@ We'll need a directories to bind-mount into our container for Plex to store its mkdir /var/data/plex ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create plex.env, and populate with the following variables. Set PUID and GUID to the UID and GID of the user who owns your media files, on the local filesystem @@ -32,9 +35,9 @@ PUID=42 PGID=42 ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/portainer.md b/docs/recipes/portainer.md index 39fd252..317730b 100644 --- a/docs/recipes/portainer.md +++ b/docs/recipes/portainer.md @@ -1,6 +1,7 @@ --- title: Run Portainer in Docker Swarm (now with Dark Mode!) description: Portainer is a UI to make Docker less geeky, runs under Docker Swarm (and Kubernetes!) and most importantly, now supports dark mode! +recipe: Portainer --- # Portainer @@ -17,6 +18,8 @@ Portainer attempts to take the "geekiness" out of containers, by wrapping all th ![Portainer Screenshot](../images/portainer.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -29,9 +32,9 @@ Create a folder to store portainer's persistent data: mkdir /var/data/portainer ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/privatebin.md b/docs/recipes/privatebin.md index bea2f93..c4f7116 100644 --- a/docs/recipes/privatebin.md +++ b/docs/recipes/privatebin.md @@ -1,6 +1,7 @@ --- title: Run PrivateBin on Docker description: A private imgur/pastebin, running on Docker +recipe: PrivateBin --- # PrivateBin @@ -9,6 +10,8 @@ PrivateBin is a minimalist, open source online pastebin where the server (can) h ![PrivateBin Screenshot](../images/privatebin.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -22,9 +25,9 @@ mkdir /var/data/privatebin chmod 777 /var/data/privatebin/ ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/realms.md b/docs/recipes/realms.md index b285279..f3ae671 100644 --- a/docs/recipes/realms.md +++ b/docs/recipes/realms.md @@ -1,6 +1,7 @@ --- title: Realms is a git-based wiki, and it runs under Docker! description: A git-based wiki with auth and registration +recipe: Realms --- # Realms @@ -25,6 +26,8 @@ Features include: 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. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -37,9 +40,9 @@ Since we'll start with a basic Realms install, let's just create a single direct mkdir /var/data/realms/ ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/restic.md b/docs/recipes/restic.md index f714d1f..8d316d5 100644 --- a/docs/recipes/restic.md +++ b/docs/recipes/restic.md @@ -1,6 +1,7 @@ --- title: Backup with restic in Docker Swarm description: Don't be like Cameron. Back up your shizz. +recipe: Restic --- # Restic @@ -14,7 +15,7 @@ Don't be like [Cameron](http://haltandcatchfire.wikia.com/wiki/Cameron_Howe). Ba Restic is one of the more popular open-source backup solutions, and is often [compared favorable](https://www.reddit.com/r/golang/comments/6mfe4q/a_performance_comparison_of_duplicacy_restic/dk2pkoj/?context=8&depth=9) to "freemium" products by virtue of its [licence](https://github.com/restic/restic/blob/master/LICENSE). -## Details +## {{ page.meta.recipe }} Requirements --8<-- "recipe-standard-ingredients.md" * [X] Credentials for one of Restic's [supported repositories](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html) @@ -34,7 +35,7 @@ echo /var/data/runtime >> /var/data/restic/restic.exclude !!! note `/var/data/restic/restic.exclude` details which files / directories to **exclude** from the backup. Per our [data layout](/reference/data_layout/), runtime data such as database files are stored in `/var/data/runtime/[recipe]`, and excluded from backups, since we can't safely backup/restore data-in-use. Databases should be backed up by taking dumps/snapshots, and backing up _these_ dumps/snapshots instead. -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/restic/restic-backup.env`, and populate with the following variables: @@ -100,7 +101,7 @@ RESTIC_PASSWORD= !!! question "Why create two separate .env files?" Although there's duplication involved, maintaining 2 files for the two services within the stack keeps it clean, and allows you to potentially alter the behaviour of one service without impacting the other in future -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create a docker swarm config file in docker-compose syntax (v3) in `/var/data/config/restic/restic.yml` , something like this: diff --git a/docs/recipes/rss-bridge.md b/docs/recipes/rss-bridge.md index 82694cd..3d4f516 100644 --- a/docs/recipes/rss-bridge.md +++ b/docs/recipes/rss-bridge.md @@ -1,5 +1,7 @@ --- +title: Run RSS Bridge in Docker Swarm description: Stalk your ex on Facebook in your feedreader! +recipe: RSS Bridge --- # RSS Bridge @@ -8,6 +10,8 @@ Do you hate having to access multiple sites to view specific content? [RSS-Bridg ![RSS-Bridge Screenshot](../images/rssbridge.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -21,9 +25,9 @@ mkdir /var/data/config/rssbridge cd /var/data/config/rssbridge ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/searxng.md b/docs/recipes/searxng.md new file mode 100644 index 0000000..aefd443 --- /dev/null +++ b/docs/recipes/searxng.md @@ -0,0 +1,143 @@ +--- +title: Run SearXNG in Docker Swarm +description: Want to keep your search history away from BigTech? Try hosting SearXNG, the private and anonymous search engine! +recipe: SearXNG +--- + +# SearXNG + +SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services. + +![SearXNG Screenshot](/images/searxng.png){ loading=lazy } + +Users are neither tracked nor profiled. You can use one of the 100+ [public instances](https://searx.space/) (*including [ours](https://searxng.fnky.nz)*), or (*and really, this is why you're here, right?*) you can [run your own instance](https://docs.searxng.org/own-instance.html) + +!!! question "How does SearXNG protect my privacy?" + From the [docs](https://docs.searxng.org/own-instance.html#how-does-searxng-protect-privacy): SearXNG protects the privacy of its users in multiple ways regardless of the type of the instance (private, public). Removal of private data from search requests comes in three forms: + + :white_check_mark: removal of private data from requests going to search services
+ :white_check_mark: not forwarding anything from a third party services through search services (e.g. advertisement)
+ :white_check_mark: removal of private data from requests going to the result pages + + Removing private data means not sending cookies to external search engines and generating a random browser profile for every request. Thus, it does not matter if a public or private instance handles the request, because it is anonymized in both cases. IP addresses will be the IP of the instance. But SearXNG can be configured to use proxy or Tor. Result proxy is supported, too. + + SearXNG does not serve ads or tracking content unlike most search services. So private data is not forwarded to third parties who might monetize it. Besides protecting users from search services, both referring page and search query are hidden from visited result pages. + +## {{ page.meta.recipe }} Requirements + +--8<-- "recipe-standard-ingredients.md" + +## Preparation + +### Setup {{ page.meta.recipe }} data directory + +First we create a directory to hold the files (*really just the persistence of settings*) which searxng will create: + +```bash +mkdir /var/data/searxng +``` + +### Setup {{ page.meta.recipe }} environment + +Create `/var/data/config/searxng/searxng.env` something like the example below.. + +```yaml title="/var/data/config/searxng/searxng.env" +BIND_ADDRESS=0.0.0.0:8080 +BASE_URL=https://searxng.example.com/ +INSTANCE_NAME="example.com's searxng instance" +AUTOCOMPLETE="false" +``` + +### {{ page.meta.recipe }} Docker Swarm config + +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: + +--8<-- "premix-cta.md" + +```yaml +version: "3.2" + +services: + + searxng: + image: searxng/searxng:latest + env_file: /var/data/config/searxng/searxng.env + volumes: + - /var/data/searxng:/etc/searxng:rw + + deploy: + replicas: 1 + labels: + # traefik + - traefik.enable=true + - traefik.docker.network=traefik_public + + # traefikv2 + - "traefik.http.routers.searxng.rule=Host(`searxng.example.com`)" + - "traefik.http.routers.searxng.entrypoints=https" + - "traefik.http.services.searxng.loadbalancer.server.port=8080" + + networks: + - traefik_public + +networks: + traefik_public: + external: true +``` + +## Serving + +### Deploy {{ page.meta.recipe }}! + +Deploy SearXNG by running ```docker stack deploy searxng -c ``` + +Now browse to the URL you specified in `BASE_URL` (*which should match your traefik labels in the docker-compose file*), and you should be presented with your very own SearXNG interface! + +## Customize {{ page.meta.recipe }} + +Take a look in `/var/data/searxng`, and note that a `settings.yml` file has been created. You can customize your searXNG instance by editing `settings.yml`, making changes, and then restarting the stack with `docker service update searxng --force`. + +Here are some useful customizations I've included in mine: + +### Redirect YouTube to Invidious + +I set the following, to automatically redirect any YouTube search results to my [Individous][invidious] instance: + +```yaml +hostname_replace: + '(.*\.)?youtube\.com$': 'in.fnky.nz' + '(.*\.)?youtu\.be$': 'in.fnky.nz' +``` + +### Search YouTube via Invidious + +Likewise, the following addition to the `engines` section allows my to perform an [Individous][invidious] search directly from SearXNG: + +```yaml + - name: invidious + engine: invidious + base_url: + - https://in.fnky.nz + shortcut: in + timeout: 3.0 + disabled: false +``` + +### Get {{ page.meta.recipe }} search results as RSS + +It's not enabled by default, but by adding `rss` to the list of search formats (*json is an option too*), you can get search results via RSS: + +```yaml +search: + formats: + - html + - rss +``` + +#### Who would need search results via RSS? + +For one, anyone who wanted to build their own crude "Google Alerts" - you'd perform the search you wanted to monitor, click the RSS download link (*or just append `&format=rss` to the search URL*), and add this link to your RSS reader. Any changes in the result will be reflected as a new RSS entry[^1]! + +[^1]: Combine SearXNG's RSS results with [Huggin](/recipes/huginn/) for a more feature-full alternative to Google Alerts! πŸ’ͺ + +--8<-- "recipe-footer.md" diff --git a/docs/recipes/swarmprom.md b/docs/recipes/swarmprom.md index c04df46..d97a932 100644 --- a/docs/recipes/swarmprom.md +++ b/docs/recipes/swarmprom.md @@ -1,5 +1,7 @@ --- -description: Data is beautiful +description: Because data is beautiful +recipe: Swarmprom +title: Manage your Docker Swarm like a GitOps ninja with Swarmprom --- # Swarmprom @@ -22,6 +24,8 @@ cAdvisor (Container Advisor) provides container users an understanding of the re I'd encourage you to spend some time reading . Stefan has included detailed explanations about which elements perform which functions, as well as how to customize your stack. (_This is only a starting point, after all_) +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -90,7 +94,7 @@ GF_SECURITY_ADMIN_USER=admin GF_SECURITY_ADMIN_PASSWORD=ilovemybatmanunderpants ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config Create a docker swarm config file in docker-compose syntax (v3), based on the original swarmprom [docker-compose.yml](https://github.com/stefanprodan/swarmprom/blob/master/docker-compose.yml) file diff --git a/docs/recipes/template.md b/docs/recipes/template.md index 64772f6..95a9e06 100644 --- a/docs/recipes/template.md +++ b/docs/recipes/template.md @@ -1,5 +1,7 @@ --- description: Neat one-sentence description of recipe for social media previews +recipe: Recipe Name +title: Short, punchy title for search engine results / social previews --- # @@ -14,6 +16,8 @@ description: Neat one-sentence description of recipe for social media previews - :white_check_mark: Torrent download of files using web seeding - :white_check_mark: File expiry, deletion key, file access key, and random filename options +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -38,9 +42,9 @@ cleanup-every-minutes = 5 EOF ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/tiny-tiny-rss.md b/docs/recipes/tiny-tiny-rss.md index 49d9efb..42fe6e6 100644 --- a/docs/recipes/tiny-tiny-rss.md +++ b/docs/recipes/tiny-tiny-rss.md @@ -1,5 +1,7 @@ --- description: Geeky RSS reader +recipe: Tiny Tiny RSS +title: Run Tiny Tiny RSS in Docker Swarm --- # Tiny Tiny RSS @@ -12,6 +14,8 @@ description: Geeky RSS reader ![Tiny Tiny RSS Screenshot](../images/tiny-tiny-rss.png){ loading=lazy } +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -28,7 +32,7 @@ mkdir /var/data/config/ttrss cd /var/data/config/ttrss ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/ttrs/ttrss.env`, and populate with the following variables, customizing at least the database password (POSTGRES_PASSWORD **and** DB_PASS) and the TTRSS_SELF_URL to point to your installation. @@ -56,9 +60,9 @@ TTRSS_REPO=https://github.com/funkypenguin/tt-rss.git S6_BEHAVIOUR_IF_STAGE2_FAILS=2 ``` -### Setup docker swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/wallabag.md b/docs/recipes/wallabag.md index 4fdb3fa..86a2a53 100644 --- a/docs/recipes/wallabag.md +++ b/docs/recipes/wallabag.md @@ -1,5 +1,6 @@ --- title: Run Wallabag under Docker (compose), mate! +recipe: Wallabag --- # Wallabag @@ -14,6 +15,8 @@ There are plugins for [Chrome](https://chrome.google.com/webstore/detail/wallaba [Here's a video](https://player.vimeo.com/video/167435064) which shows off the UI a bit more. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -28,7 +31,7 @@ cd /var/data/wallabag mkdir -p {images,db-dump} ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/wallabag/wallabag.env`, and populate with the following variables. The only variable you **have** to change is SYMFONY__ENV__DOMAIN_NAME - this **must** be the URL that your Wallabag instance will be available at (_else you'll have no CSS_) @@ -64,9 +67,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/wekan.md b/docs/recipes/wekan.md index 442ab9c..0d4d568 100644 --- a/docs/recipes/wekan.md +++ b/docs/recipes/wekan.md @@ -1,5 +1,6 @@ --- title: Run Wekan under Docker +recipe: Wekan --- # Wekan @@ -15,6 +16,8 @@ There's a [video](https://www.youtube.com/watch?v=N3iMLwCNOro) of the developer !!! note For added privacy, this design secures wekan behind a [traefik-forward-auth](/docker-swarm/traefik-forward-auth/), so that in order to gain access to the wekan UI at all, authentication must have already occurred. +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -29,7 +32,7 @@ cd /var/data/wekan mkdir -p {wekan-db,wekan-db-dump} ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/wekan.env`, and populate with the following variables: @@ -44,9 +47,9 @@ BACKUP_NUM_KEEP=7 BACKUP_FREQUENCY=1d ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/recipes/wetty.md b/docs/recipes/wetty.md index a5bf8d4..dc64a7e 100644 --- a/docs/recipes/wetty.md +++ b/docs/recipes/wetty.md @@ -1,6 +1,7 @@ --- title: Use wetty under Docker for SSH in the browser description: Use weTTY to run a terminal in a browser, baby! +recipe: Wetty --- # Wetty @@ -19,6 +20,8 @@ Here are some other possible use cases: 2. Access to long-running processes inside a tmux session (_like [irrsi](https://irssi.org/)_) 3. Remote access to a VM / [container running Kali linux](https://gitlab.com/kalilinux/build-scripts/kali-docker), for penetration testing +## {{ page.meta.recipe }} Requirements + --8<-- "recipe-standard-ingredients.md" ## Preparation @@ -32,7 +35,7 @@ mkdir /var/data/config/wetty cd /var/data/config/wetty ``` -### Prepare environment +### Prepare {{ page.meta.recipe }} environment Create `/var/data/config/wetty.env`, and populate with the following variables @@ -44,9 +47,9 @@ SSHUSER=batman ``` -### Setup Docker Swarm +### {{ page.meta.recipe }} Docker Swarm config -Create a docker swarm config file in docker-compose syntax (v3), something like this: +Create a docker swarm config file in docker-compose syntax (v3), something like the example below: --8<-- "premix-cta.md" diff --git a/docs/support.md b/docs/support.md index 16b2957..dcfb079 100644 --- a/docs/support.md +++ b/docs/support.md @@ -49,9 +49,11 @@ Found a bug in your soup? Tell the chef by either: ## Tip the chef -### [Sponsor][7] / [Ko-Fi][ko-fi] / [Patreonize][8] me πŸ’° +### [Sponsor][7] / [Ko-Fi][kofi] / [Patreonize][8] me πŸ’° -The best way to support this work is to become a [Sponsor][11] (_GitHub_) or a [Patron][10] (_Patreon_). Sponsors get: +The best way to support this work is via [GitHub Sponsors][11], [Ko-Fi][kofi], a [Patron][10] (_Patreon_). + +Sponsors get: * warm fuzzies, * access to the pre-mix repo, diff --git a/mkdocs.yml b/mkdocs.yml index 7b99fdb..95bd2a1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -158,6 +158,7 @@ nav: - Realms: recipes/realms.md - Restic: recipes/restic.md - RSS Bridge: recipes/rss-bridge.md + - SearXNG: recipes/searxng.md - Swarmprom: recipes/swarmprom.md - Tiny Tiny RSS: recipes/tiny-tiny-rss.md - Traefik: docker-swarm/traefik.md