1
0
mirror of https://github.com/funkypenguin/geek-cookbook/ synced 2025-12-12 17:26:19 +00:00

Add recipe for searxng (#274)

* Add recipe for searxng

Signed-off-by: David Young <davidy@funkypenguin.co.nz>

* Fussy linter

Signed-off-by: David Young <davidy@funkypenguin.co.nz>

---------

Signed-off-by: David Young <davidy@funkypenguin.co.nz>
This commit is contained in:
David Young
2023-03-11 06:47:52 +13:00
committed by GitHub
parent 3d48b42f15
commit cf44acda27
65 changed files with 439 additions and 132 deletions

View File

@@ -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) 🤝

View File

@@ -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/

View File

@@ -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) 🤝

View File

@@ -1,5 +1,3 @@
## Requirements
!!! summary "Ingredients"
Already deployed:

View File

@@ -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)
<!-- more -->
![Screenshot of {{ page.meta.recipe }}]({{ page.meta.image }}){ loading=lazy }
See the [recipe][searxng] for more!
--8<-- "common-links.md"

View File

@@ -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"

View File

@@ -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:

BIN
docs/images/searxng.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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:

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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/<stack name\>/<stack name\>.yml`*), something like this:

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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
<!-- markdownlint-disable MD033 -->
<iframe src="https://player.vimeo.com/video/61976251" width="640" height="433" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
## {{ 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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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:

View File

@@ -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"

View File

@@ -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 <http://yourserver.com/docs> 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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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, theres 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:
* `<admin_password>` - Password of the superuser account above.
* `<admin_email>` - 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:

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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=<repo_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:

View File

@@ -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"

143
docs/recipes/searxng.md Normal file
View File

@@ -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 <br/>
:white_check_mark: not forwarding anything from a third party services through search services (e.g. advertisement)<br/>
: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 <path -to-docker-compose.yml>```
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"

View File

@@ -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 <https://github.com/stefanprodan/swarmprom>. 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

View File

@@ -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
---
# <///RECIPE NAME>
@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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,

View File

@@ -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