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:
@@ -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) 🤝
|
||||
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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) 🤝
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
## Requirements
|
||||
|
||||
!!! summary "Ingredients"
|
||||
Already deployed:
|
||||
|
||||
|
||||
27
docs/blog/posts/changelog/new-recipe-searxng-swarm.md
Normal file
27
docs/blog/posts/changelog/new-recipe-searxng-swarm.md
Normal 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 -->
|
||||
|
||||
{ loading=lazy }
|
||||
|
||||
See the [recipe][searxng] for more!
|
||||
|
||||
--8<-- "common-links.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"
|
||||
|
||||
|
||||
@@ -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
BIN
docs/images/searxng.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ loading=lazy }
|
||||
|
||||
## {{ page.meta.recipe }} Requirements
|
||||
|
||||
--8<-- "recipe-standard-ingredients.md"
|
||||
|
||||
## Setup
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
* `<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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||

|
||||
|
||||
## {{ 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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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
143
docs/recipes/searxng.md
Normal 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.
|
||||
|
||||
{ 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"
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
{ 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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user