mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-11 08:46:21 +00:00
478 lines
18 KiB
YAML
478 lines
18 KiB
YAML
site_name: Funky Penguin's Geek Cookbook
|
|
site_description: 'The Geek Cookbook is a collection of guides for establishing your own highly-available docker container cluster (swarm). This swarm enables you to run self-hosted services such as GitLab, Plex, NextCloud, etc.'
|
|
site_author: 'David Young'
|
|
site_url: 'https://geek-cookbook.funkypenguin.co.nz'
|
|
edit_uri: 'edit/main/docs/'
|
|
|
|
# Fail to build if we have broken links
|
|
# strict: true
|
|
|
|
# Repository
|
|
repo_name: 'geek-cookbook'
|
|
repo_url: 'https://github.com/geek-cookbook/geek-cookbook'
|
|
|
|
# Copyright
|
|
copyright: 'Copyright © 2016 - 2023 David Young, Funky Penguin Limited'
|
|
|
|
# Plugins
|
|
plugins:
|
|
search:
|
|
minify:
|
|
minify_html: true
|
|
autolinks:
|
|
git-revision-date-localized:
|
|
type: date
|
|
fallback_to_build_date: true
|
|
macros:
|
|
verbose: true
|
|
include_dir: _includes
|
|
meta-descriptions: # If not provided, auto-generate a description (https://pypi.org/project/mkdocs-meta-descriptions-plugin/)
|
|
meta:
|
|
blog:
|
|
# post_excerpt: required
|
|
post_url_format: "{date}/{file}" # this allows us to change the post title in future without breaking URLs
|
|
tags:
|
|
tags_file: blog/tags.md
|
|
rss:
|
|
match_path: blog/posts/.*
|
|
date_from_meta:
|
|
as_creation: date
|
|
categories:
|
|
- categories
|
|
- tags
|
|
abstract_chars_count: 200
|
|
image: https://geek-cookbook.funkypenguin.co.nz/images/site-logo.png
|
|
url_parameters:
|
|
utm_source: "geek-cookbook-blog"
|
|
utm_medium: "RSS"
|
|
utm_campaign: "feed-syndication"
|
|
social:
|
|
# debug: true
|
|
# debug_color: yellow
|
|
cards_layout: geek-cookbook
|
|
|
|
#theme_dir: mkdocs-material
|
|
nav:
|
|
- Home: index.md
|
|
- 🐳 Docker Swarm:
|
|
- docker-swarm/index.md
|
|
- Preparation:
|
|
- Design: docker-swarm/design.md
|
|
- Nodes: docker-swarm/nodes.md
|
|
- Shared Storage (Ceph): docker-swarm/shared-storage-ceph.md
|
|
- Shared Storage (GlusterFS): docker-swarm/shared-storage-gluster.md
|
|
- Keepalived: docker-swarm/keepalived.md
|
|
- Docker Swarm Mode: docker-swarm/docker-swarm-mode.md
|
|
- Essentials:
|
|
- Traefik: docker-swarm/traefik.md
|
|
- Traefik Forward Auth:
|
|
- docker-swarm/traefik-forward-auth/index.md
|
|
- Dex (static): docker-swarm/traefik-forward-auth/dex-static.md
|
|
- Google: docker-swarm/traefik-forward-auth/google.md
|
|
- Keycloak: docker-swarm/traefik-forward-auth/keycloak.md
|
|
- Authelia: docker-swarm/authelia.md
|
|
- Registry: docker-swarm/registry.md
|
|
- Mail Server: recipes/mail.md
|
|
- Duplicity: recipes/duplicity.md
|
|
- Recipes:
|
|
- Auto Pirate:
|
|
- recipes/autopirate/index.md
|
|
- Headphones: recipes/autopirate/headphones.md
|
|
- Heimdall: recipes/autopirate/heimdall.md
|
|
- Jackett: recipes/autopirate/jackett.md
|
|
- Lazy Librarian: recipes/autopirate/lazylibrarian.md
|
|
- Lidarr: recipes/autopirate/lidarr.md
|
|
- Mylar: recipes/autopirate/mylar.md
|
|
- NZBGet: recipes/autopirate/nzbget.md
|
|
- NZBHydra: recipes/autopirate/nzbhydra.md
|
|
- Prowlarr: recipes/autopirate/prowlarr.md
|
|
- Ombi: recipes/autopirate/ombi.md
|
|
- Radarr: recipes/autopirate/radarr.md
|
|
- Readarr: recipes/autopirate/readarr.md
|
|
- Rtorrent: recipes/autopirate/rtorrent.md
|
|
- SABnzbd: recipes/autopirate/sabnzbd.md
|
|
- Sonarr: recipes/autopirate/sonarr.md
|
|
- End: recipes/autopirate/end.md
|
|
- Archive Box: recipes/archivebox.md
|
|
- Audiobookshelf: recipes/audiobookshelf.md
|
|
- Bitwarden: recipes/bitwarden.md
|
|
- Bookstack: recipes/bookstack.md
|
|
- Calibre-Web: recipes/calibre-web.md
|
|
- Collabora Online: recipes/collabora-online.md
|
|
- CyberChef: recipes/cyberchef.md
|
|
- Duplicati: recipes/duplicati.md
|
|
- ElkarBackup: recipes/elkarbackup.md
|
|
- Emby: recipes/emby.md
|
|
- Home Assistant: recipes/homeassistant.md
|
|
- Huginn: recipes/huginn.md
|
|
- Funkwhale: recipes/funkwhale.md
|
|
- Ghost: recipes/ghost.md
|
|
- GitLab: recipes/gitlab.md
|
|
- GitLab Runner: recipes/gitlab-runner.md
|
|
- Gollum: recipes/gollum.md
|
|
- Immich: recipes/immich.md
|
|
- InstaPy: recipes/instapy.md
|
|
- Invidious: recipes/invidious.md
|
|
- Jellyfin: recipes/jellyfin.md
|
|
- Joplin Server: recipes/joplin-server.md
|
|
- Keycloak:
|
|
- recipes/keycloak/index.md
|
|
- OIDC Provider: recipes/keycloak/setup-oidc-provider.md
|
|
- OpenLDAP: recipes/keycloak/authenticate-against-openldap.md
|
|
- Kanboard: recipes/kanboard.md
|
|
- Kavita: recipes/kavita.md
|
|
- Keycloak:
|
|
- recipes/keycloak/index.md
|
|
- OIDC Provider: recipes/keycloak/setup-oidc-provider.md
|
|
- OpenLDAP: recipes/keycloak/authenticate-against-openldap.md
|
|
- Komga: recipes/komga.md
|
|
- Linx: recipes/linx.md
|
|
- Mastodon: recipes/mastodon.md
|
|
- Mealie: recipes/mealie.md
|
|
- Miniflux: recipes/miniflux.md
|
|
- Minio: recipes/minio.md
|
|
- Munin: recipes/munin.md
|
|
- NextCloud: recipes/nextcloud.md
|
|
- NightScout: recipes/nightscout.md
|
|
- Nitter: recipes/nitter.md
|
|
- Nomie: recipes/nomie.md
|
|
- OpenLDAP: recipes/openldap.md
|
|
- OwnTracks: recipes/owntracks.md
|
|
- Paperless NG: recipes/paperless-ng.md
|
|
- Photoprism: recipes/photoprism.md
|
|
- Pixelfed: recipes/pixelfed.md
|
|
- Plex: recipes/plex.md
|
|
- phpIPAM: recipes/phpipam.md
|
|
- Portainer: recipes/portainer.md
|
|
- PrivateBin: recipes/privatebin.md
|
|
- 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
|
|
- Traefik Forward Auth:
|
|
- docker-swarm/traefik-forward-auth/index.md
|
|
- Dex (static): docker-swarm/traefik-forward-auth/dex-static.md
|
|
- Google: docker-swarm/traefik-forward-auth/google.md
|
|
- Keycloak: docker-swarm/traefik-forward-auth/keycloak.md
|
|
- Wallabag: recipes/wallabag.md
|
|
- Wekan: recipes/wekan.md
|
|
- Wetty: recipes/wetty.md
|
|
- Reference:
|
|
- OAuth Proxy: reference/oauth_proxy.md
|
|
- Data Layout: reference/data_layout.md
|
|
- Networks: reference/networks.md
|
|
- OpenVPN : reference/openvpn.md
|
|
- Troubleshooting: reference/troubleshooting.md
|
|
- ⛴ Kubernetes:
|
|
- Preparation:
|
|
- kubernetes/index.md
|
|
- Introduction: kubernetes/index.md
|
|
- Cluster:
|
|
- kubernetes/cluster/index.md
|
|
- Digital Ocean: kubernetes/cluster/digitalocean.md
|
|
# - Bare Metal: kubernetes/cluster/baremetal.md
|
|
- EKS: kubernetes/cluster/eks.md
|
|
- k3s: kubernetes/cluster/k3s.md
|
|
# - The Hard Way: kubernetes/cluster/the-hard-way.md
|
|
- Deployment:
|
|
- kubernetes/deployment/index.md
|
|
# - YAML: kubernetes/wip.md
|
|
# - Helm: kubernetes/wip.md
|
|
# - GitHub Actions: kubernetes/wip.md
|
|
- Flux:
|
|
- kubernetes/deployment/flux/index.md
|
|
- Install: kubernetes/deployment/flux/install.md
|
|
- Design: kubernetes/deployment/flux/design.md
|
|
- Operate: kubernetes/deployment/flux/operate.md
|
|
- Essentials:
|
|
- Load Balancer:
|
|
- kubernetes/loadbalancer/index.md
|
|
- k3s: kubernetes/loadbalancer/k3s.md
|
|
- MetalLB:
|
|
- kubernetes/loadbalancer/metallb/index.md
|
|
- pfSense: kubernetes/loadbalancer/metallb/pfsense.md
|
|
- Sealed Secrets: kubernetes/sealed-secrets.md
|
|
- External DNS: kubernetes/external-dns.md
|
|
- SSL Certificates:
|
|
- kubernetes/ssl-certificates/index.md
|
|
- Cert-Manager: kubernetes/ssl-certificates/cert-manager.md
|
|
- LetsEncrypt Issuers: kubernetes/ssl-certificates/letsencrypt-issuers.md
|
|
- Wildcard Certificate: kubernetes/ssl-certificates/wildcard-certificate.md
|
|
- Secret Replicator: kubernetes/ssl-certificates/secret-replicator.md
|
|
- Ingress:
|
|
- kubernetes/ingress/index.md
|
|
- Traefik:
|
|
- kubernetes/ingress/traefik/index.md
|
|
# - Dashboard: kubernetes/ingress/traefik/dashboard.md
|
|
- Nginx: kubernetes/ingress/nginx.md
|
|
- Persistence:
|
|
- NFS-Subdirectory-Provider: kubernetes/persistence/nfs-subdirectory-provider.md
|
|
- kubernetes/persistence/index.md
|
|
- Local Path Provisioner: kubernetes/persistence/local-path-provisioner.md
|
|
- TopoLVM: kubernetes/persistence/topolvm.md
|
|
- AWS EBS: kubernetes/persistence/aws-ebs.md
|
|
# - OpenEBS: kubernetes/persistence/openebs.md
|
|
- Rook Ceph:
|
|
- kubernetes/persistence/rook-ceph/index.md
|
|
- Operator: kubernetes/persistence/rook-ceph/operator.md
|
|
- Cluster: kubernetes/persistence/rook-ceph/cluster.md
|
|
# - LongHorn: kubernetes/persistence/longhorn.md
|
|
- OIDC Authentication:
|
|
- Guide: kubernetes/oidc-authentication/index.md
|
|
- Providers:
|
|
- authentik: kubernetes/oidc-authentication/authentik.md
|
|
- Keycloak: kubernetes/oidc-authentication/keycloak.md
|
|
- Platforms:
|
|
- EKS (authentik): kubernetes/oidc-authentication/eks-authentik.md
|
|
- EKS (Keycloak): kubernetes/oidc-authentication/eks-keycloak.md
|
|
- K3s (authentik): kubernetes/oidc-authentication/k3s-authentik.md
|
|
- K3s (Keycloak): kubernetes/oidc-authentication/k3s-keycloak.md
|
|
- Backup:
|
|
- kubernetes/backup/index.md
|
|
- CSI Snapshots:
|
|
- kubernetes/backup/csi-snapshots/index.md
|
|
- Snapshot Validation Webhook: kubernetes/backup/csi-snapshots/snapshot-validation-webhook.md
|
|
- Snapshot Controller: kubernetes/backup/csi-snapshots/snapshot-controller.md
|
|
- Velero: kubernetes/backup/velero.md
|
|
|
|
# - Logging:
|
|
# - fluent-bit, graylog, etc.
|
|
|
|
|
|
# - Monitoring:
|
|
# - kubernetes/monitoring/index.md
|
|
# - Prometheus: kubernetes/wip.md
|
|
# - Grafana: kubernetes/wip.md
|
|
# - AlertManager: kubernetes/wip.md
|
|
# - Goldilocks: kubernetes/wip.md
|
|
# - Reloader: kubernetes/wip.md
|
|
# - Dashboard: kubernetes/wip.md
|
|
# - Kured: kubernetes/wip.md
|
|
# - Keycloak: kubernetes/wip.md
|
|
- Recipes:
|
|
# - Harbor:
|
|
# - recipes/kubernetes/harbor/index.md
|
|
# Istio: recipes/kubernetes/harbor/istio.md
|
|
# - GitHub Actions Runners: kubernetes/wip.md
|
|
# - Cilium: kubernetes/wip.md
|
|
# - Concourse: kubernetes/wip.md
|
|
# - Flagger: kubernetes/wip.md
|
|
# - Flagger: kubernetes/wip.md
|
|
# - Flux: recipes/kubernetes/wip.md
|
|
# - FoundationDB: kubernetes/wip.md
|
|
# - Istio: recipes/kubernetes/wip.md
|
|
# - Jaeger: kubernetes/wip.md
|
|
# - Kiali: kubernetes/wip.md
|
|
- Authentik: recipes/kubernetes/authentik.md
|
|
- Dashboard: recipes/kubernetes/dashboard.md
|
|
# - Descheduler: recipes/kubernetes/descheduler.md
|
|
- Invidious: recipes/kubernetes/invidious.md
|
|
- Keycloak: recipes/kubernetes/keycloak.md
|
|
- OAuth2 Proxy: recipes/kubernetes/oauth2-proxy.md
|
|
- Mastodon: recipes/kubernetes/mastodon.md
|
|
- Polaris: recipes/kubernetes/polaris.md
|
|
# - Matrix: recipes/kubernetes/matrix.md
|
|
# - NGINX Ingress: kubernetes/wip.md
|
|
# - Polaris: kubernetes/wip.md
|
|
# - Portainer: kubernetes/wip.md
|
|
# - Prometheus: kubernetes/wip.md
|
|
# - Traefik: kubernetes/wip.md
|
|
# - Vault: kubernetes/wip.md
|
|
# - Webook Receiver: kubernetes/wip.md
|
|
# - 🧝 Elf Hosted:
|
|
# - elfhosted/index.md
|
|
# - Build Story:
|
|
# - elfhosted/build/index.md
|
|
# - A bastion of hope: elfhosted/build/bastion.md
|
|
- 🪄 ElfHosted:
|
|
- elfhosted/index.md
|
|
- 🚀 Get Premix!:
|
|
- premix/index.md
|
|
- Get Started:
|
|
- Setup: premix/ansible/operation.md
|
|
- Deploy!:
|
|
- Swarm: premix/swarm.md
|
|
- Kubernetes: premix/kubernetes.md
|
|
- Contribute:
|
|
- Ansiblizing:
|
|
- premix/ansiblizing/index.md
|
|
- Swarm: premix/ansiblizing/swarm.md
|
|
- Kubernetes: premix/ansiblizing/kubernetes.md
|
|
- Reference:
|
|
- Design: premix/ansible/design.md
|
|
- ✅ Reviews:
|
|
- blog/category/review.md
|
|
- 🪵 Blog:
|
|
- Blog: blog/index.md
|
|
- Tags: blog/tags.md
|
|
- Support: support.md
|
|
- Contribute: community/contribute.md
|
|
- Community:
|
|
- community/index.md
|
|
- Support: support.md
|
|
- Contribute: community/contribute.md
|
|
- Code of Conduct: community/code-of-conduct.md
|
|
- Discord: community/discord.md
|
|
- Matrix: community/matrix.md
|
|
- Reddit: community/reddit.md
|
|
- Mastodon: community/mastodon.md
|
|
- Forum: community/discourse.md
|
|
- GitHub: community/github.md
|
|
|
|
theme:
|
|
name: 'material'
|
|
custom_dir: 'overrides'
|
|
# disqus: 'geeks-cookbook'
|
|
logo: 'images/site-logo.svg'
|
|
favicon: 'images/site-logo.svg'
|
|
features:
|
|
- navigation.tabs
|
|
- navigation.tabs.sticky
|
|
- navigation.instant
|
|
- navigation.sections
|
|
- navigation.indexes
|
|
- navigation.top
|
|
- navigation.pruning
|
|
- navigation.path
|
|
- search.suggest
|
|
- search.share
|
|
- content.code.annotate
|
|
- content.code.copy
|
|
- header.autohide
|
|
- announce.dismiss
|
|
- toc.follow
|
|
icon:
|
|
repo: 'fontawesome/brands/github'
|
|
tag:
|
|
kubernetes: material/kubernetes
|
|
js: fontawesome/brands/js
|
|
palette:
|
|
|
|
# Palette toggle for automatic mode
|
|
- media: "(prefers-color-scheme)"
|
|
scheme: default
|
|
toggle:
|
|
icon: material/brightness-auto
|
|
name: Follow system preferences
|
|
|
|
# Toggle light mode
|
|
- media: "(prefers-color-scheme: light)"
|
|
scheme: default
|
|
primary: 'black'
|
|
accent: 'orange'
|
|
toggle:
|
|
icon: material/brightness-7
|
|
name: Burn my eyes!
|
|
|
|
# Toggle dark mode
|
|
- media: "(prefers-color-scheme: dark)"
|
|
scheme: slate
|
|
primary: 'black'
|
|
accent: 'orange'
|
|
toggle:
|
|
icon: material/brightness-4
|
|
name: Love my eyes!
|
|
|
|
font:
|
|
text: 'Ubuntu'
|
|
code: 'Ubuntu Mono'
|
|
|
|
extra:
|
|
status:
|
|
new: Recently added
|
|
deprecated: Deprecated
|
|
social:
|
|
- icon: 'fontawesome/brands/mastodon'
|
|
link: 'https://so.fnky.nz/@funkypenguin'
|
|
- icon: 'fontawesome/brands/github'
|
|
link: 'https://github.com/funkypenguin'
|
|
- icon: 'fontawesome/brands/discord'
|
|
link: 'http://chat.funkypenguin.co.nz'
|
|
- icon: 'simple/matrix'
|
|
link: 'http://matrix.funkypenguin.co.nz'
|
|
- icon: 'fontawesome/brands/slack'
|
|
link: 'https://communityinviter.com/apps/funkypenguin/geek-with-us'
|
|
- icon: 'fontawesome/brands/stack-overflow'
|
|
link: 'https://stackoverflow.com/cv/funkypenguin'
|
|
- icon: 'fontawesome/brands/linkedin'
|
|
link: 'https://www.linkedin.com/in/funkypenguin'
|
|
- icon: 'fontawesome/brands/facebook'
|
|
link: 'https://www.facebook.com/funkypenguinnz'
|
|
- icon: 'material/mailbox'
|
|
link: 'mailto:davidy@funkypenguin.co.nz?Subject=Hello%2C%20from%20a%20geek-cookbook%20reader%20%3B%29'
|
|
- icon: 'material/rss'
|
|
link: 'https://geek-cookbook.funkypenguin.co.nz/rss/'
|
|
|
|
generator: false
|
|
# Plausible doesn't use cookies, so no need for this!
|
|
# consent:
|
|
# title: 'Would you like a cookie? 🍪'
|
|
# description: >
|
|
|
|
# I know. cookies suck (<I>except the fresh, warm, choc-chip ones!</I>), and so does invasive tracking. Thing is, without cookies,
|
|
# analytics can't record your visit, and I can't work out where/how to invest time to make the cookbook better.
|
|
|
|
# <p>So, with your consent, I'd like to record what you look at and where you're from, so that I can make the
|
|
# cookbook even better. My analytics are public - here's <A HREF='https://plausible.io/geek-cookbook.funkypenguin.co.nz' target="_blank">all</A> I know about you! - David</p>
|
|
# cookies:
|
|
# custom: Plausible Analytics
|
|
|
|
extra_css:
|
|
- extras/css/icons.css
|
|
|
|
extra_javascript:
|
|
# - extras/javascript/plausible.js
|
|
# - extras/javascript/widgetbot.js # uncommented for dev
|
|
- https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js
|
|
- extras/javascript/tablesort.js
|
|
|
|
# Extensions
|
|
markdown_extensions:
|
|
- attr_list
|
|
- admonition
|
|
- codehilite:
|
|
linenums: true
|
|
- toc:
|
|
permalink: false
|
|
toc_depth: 3 # ignore H4/5/6
|
|
- footnotes
|
|
- pymdownx.critic
|
|
- pymdownx.arithmatex
|
|
- pymdownx.betterem:
|
|
smart_enable: all
|
|
- pymdownx.caret
|
|
- pymdownx.details
|
|
- pymdownx.snippets:
|
|
check_paths: true
|
|
base_path: _snippets
|
|
- pymdownx.emoji:
|
|
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
|
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
|
options:
|
|
custom_icons:
|
|
- overrides/.icons
|
|
- pymdownx.inlinehilite
|
|
- pymdownx.magiclink:
|
|
repo_url_shorthand: true
|
|
user: funkypenguin
|
|
repo: geek-cookbook
|
|
- pymdownx.mark
|
|
- pymdownx.smartsymbols
|
|
- pymdownx.superfences:
|
|
custom_fences:
|
|
- name: mermaid
|
|
class: mermaid
|
|
format: !!python/name:pymdownx.superfences.fence_code_format
|
|
- pymdownx.tasklist:
|
|
custom_checkbox: true
|
|
- pymdownx.tilde
|
|
- pymdownx.tabbed:
|
|
alternate_style: true
|
|
- meta
|
|
- md_in_html
|
|
|
|
|