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 - 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 analytics: provider: google property: G-N2YBGGF31R feedback: title: Was this page helpful? ratings: - icon: material/emoticon-happy-outline name: This page was helpful data: 1 note: >- Thanks for your feedback! - icon: material/emoticon-sad-outline name: This page could be improved data: 0 note: >- Thanks for your feedback! Help us improve this page by creating an issue. consent: title: Cookie consent description: >- We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better. 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 (except the fresh, warm, choc-chip ones!), 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. #
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 all I know about you! - David
# 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