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

Fix markdownlint, add Discourse page

Signed-off-by: David Young <davidy@funkypenguin.co.nz>
This commit is contained in:
David Young
2022-08-23 10:47:09 +12:00
parent 956ebe8c38
commit 45a851df7a
30 changed files with 132 additions and 79 deletions

View File

@@ -16,22 +16,22 @@ RUN pip install \
qrcode \
livereload
# Theoretically this could add support for headless chrome
RUN apk add --no-cache \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
nodejs \
yarn ttf-ubuntu-font-family dbus yarn
# # Theoretically this could add support for headless chrome
# RUN apk add --no-cache \
# chromium \
# nss \
# freetype \
# harfbuzz \
# ca-certificates \
# ttf-freefont \
# nodejs \
# yarn ttf-ubuntu-font-family dbus yarn
RUN git config --global --add safe.directory /docs
# Additional font
# COPY fonts /usr/share/fonts/Additional
RUN apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font \
&& fc-cache -f \
&& fc-list | sort
# RUN apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font \
# && fc-cache -f \
# && fc-list | sort

37
Dockerfile-pdf-build Normal file
View File

@@ -0,0 +1,37 @@
ARG FROM_SOURCE=squidfunk/mkdocs-material
FROM ${FROM_SOURCE}
RUN apk add --no-cache py3-pip py3-pillow py3-cffi py3-brotli gcc musl-dev python3-dev pango build-base libffi-dev jpeg-dev libxslt-dev
RUN pip install \
beautifulsoup4==4.9.3 \
mkdocs-autolinks-plugin \
mkdocs-htmlproofer-plugin \
mkdocs-git-revision-date-localized-plugin \
mkdocs-macros-plugin \
mkdocs-git-committers-plugin-2 \
mkdocs-meta-descriptions-plugin \
mkdocs-with-pdf \
mkdocs-extra-sass-plugin \
qrcode \
livereload
# Theoretically this could add support for headless chrome
RUN apk add --no-cache \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
nodejs \
yarn ttf-ubuntu-font-family dbus yarn
RUN git config --global --add safe.directory /docs
# Additional font
# COPY fonts /usr/share/fonts/Additional
RUN apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font \
&& fc-cache -f \
&& fc-list | sort

View File

@@ -100,4 +100,3 @@ Impulsively **[click here (NOW quick do it!)][github_sponsor]** to [sponsor me][
[discourse]: https://forum.funkypenguin.co.nz/
[twitter]: https://twitter.com/funkypenguin
[contact]: https://www.funkypenguin.co.nz

View File

@@ -1,7 +1,7 @@
---
title: Geek out with Funky Penguin's Discord Server
description: The most realtime and exciting way engage with our geeky community is in our Discord server!
icon: material/discord
icon: fontawesome/brands/discord
---
# Discord

View File

@@ -1,8 +1,27 @@
---
title: Let's discourse together about geeky subjects
title: Let us discourse together regarding geeky topics. Tally ho.
description: Funky Penguin's Discourse Forums serve our geeky communtiy, and consolidate comments and discussion from either the Geek Cookbook or the blog.
icon: fontawesome/brands/discourse
status: new
---
# Discourse
If you're not into the new-fangled microblogging of Mastodon, or realtime chatting of Discord, can still party with us like it's 2001, using our Discourse forums (*this is also how all the recipe comments work*).
![Discourse Screenshot](/images/discourse.png){ loading=lazy }
## How to post
To post on the forum, first [sign up](https://forum.funkypenguin.co.nz) using either social signons (*Twitter, Discord, Google, etc*), or by (*old-skool cool!*) creating a unique username / password.
## Code of Conduct
With the goal of creating a safe and inclusive community, we've adopted the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/), as described [here](/community/code-of-conduct/).
### Reporting abuse
To report either a topic or a post as a violation of our code of conduct, use the "Flag" button as illustrated below:
![Reporting abuse in Discourse](/images/discourse-flag.png){ loading=lazy }
The topic / post will be highlighted to moderators, who will address the issue as detailed in the [enforcement guidelines](/community/code-of-conduct/#enforcement-guidelines).

View File

@@ -12,6 +12,6 @@ Find details about our communities below:
* [Discord](/community/discord/) - Realtime chat, multiple channels
* [Reddit](/community/reddit/) - Geek out old-skool
* [Mastodon](/community/mastodon/) - Federated, open-source microblogging platform
* [Discourse](https://forum.funkypenguin.co.nz) - Forums - asyncronous communition
* [Discourse](/community/discourse/) - Forums - asyncronous communition
* [GitHub](https://github.com/funkypenguin/) - Issues and PRs
* [Facebook](https://www.facebook.com/funkypenguinnz/) - Social networking for old-timers!

View File

@@ -1,12 +1,15 @@
---
title: Join our geeky, Docker/Kubernetes-flavored Mastdon instance
description: Looking for your geeky niche in the "fediverse"? Join our Mastodon instance!
icon: material/mastodon
icon: fontawesome/brands/mastodon
status: new
---
# Toot me up, buttercup!
Mastondon is a self-hosted / open-source microblogging platform (*heavily inspired by Twitter*), which supports federation, rather than centralization. Like email, any user on any Mastodon instance can follow, "toot" (*not tweet!*), and reply to any user on any *other* instance.
![Mastodon Screenshot](/images/mastodon.png){ loading=lazy }
Our community Mastodon server is sooo [FKNY](https://so.fnky.nz/web/directory), but if you're already using Mastodon on another server (*or your [own instance][mastodon]*), you can seamlessly interact with us from there too, thanks to the magic of federation!
!!! question "This is dumb, there's nobody here"

View File

@@ -1,13 +1,15 @@
---
title: Funky Penguin's Subreddit
description: If you're a redditor, jump on over to our subreddit at https://www.reddit.com/r/funkypenguin to engage / share the latest!
icon: material/reddit
icon: fontawesome/brands/reddit
---
# Reddit
If you're a redditor, jump on over to our subreddit ([r/funkypenguin](https://www.reddit.com/r/funkypenguin/)), to engage / share the latest!
![Reddit Screenshot](/images/reddit.png){ loading=lazy }
## How do I join the subreddit?
1. If you're not already a member, [create](https://www.reddit.com/register/) a Reddit account
@@ -21,6 +23,6 @@ With the goal of creating a safe and inclusive community, we've adopted the [Con
To report a violation of our code of conduct in our subreddit, use the "Report" button as illustrated below:
![](/images/reddit-report.png){ loading=lazy }
![Report violation of code of conduct on Reddit](/images/reddit-report.png){ loading=lazy }
The reported message will be highlighted to moderators, who will address the issue as detailed in the [enforcement guidelines](/community/code-of-conduct/#enforcement-guidelines).

View File

@@ -242,8 +242,6 @@ services:
1. Optionally used to test 1FA authentication
2. Optionally used to test 2FA authentication
!!! question "Why not just use Traefik Forward Auth?"
While [Traefik Forward Auth][tfa] is a very lightweight, minimal authentication layer, which provides OIDC-based authentication, Authelia provides more features such as multiple methods of authentication (*Hardware, OTP, Email*), advanced rules, and push notifications.
@@ -259,7 +257,7 @@ You'll notice that upon successful login, you're requested to setup 2FA. If (*li
Now you're ready to test 1FA and 2FA auth, against the two "whoami" services defined in the docker-compose file.
Try to access each in turn, and confirm that you're _not_ prompted for 2FA on whoami-authelia-1fa, but you _are_ prompted for 2FA on whoami-authelia-2fa! :thumbsup:
Try to access each in turn, and confirm that you're *not* prompted for 2FA on whoami-authelia-1fa, but you *are* prompted for 2FA on whoami-authelia-2fa! :thumbsup:
## Summary
@@ -272,8 +270,7 @@ What have we achieved? By adding a simple label to any service, we can secure an
### Authelia vs Keycloak
[KeyCloak][keycloak] is the "big daddy" of self-hosted authentication platforms - it has a beautiful GUI, and a very advanced and mature featureset. Like Authelia, KeyCloak can [use an LDAP server](/recipes/keycloak/authenticate-against-openldap/) as a backend, but _unlike_ Authelia, KeyCloak allows for 2-way sync between that LDAP backend, meaning KeyCloak can be used to _create_ and _update_ the LDAP entries (*Authelia's is just a one-way LDAP lookup - you'll need another tool to actually administer your LDAP database*).
[KeyCloak][keycloak] is the "big daddy" of self-hosted authentication platforms - it has a beautiful GUI, and a very advanced and mature featureset. Like Authelia, KeyCloak can [use an LDAP server](/recipes/keycloak/authenticate-against-openldap/) as a backend, but *unlike* Authelia, KeyCloak allows for 2-way sync between that LDAP backend, meaning KeyCloak can be used to *create* and *update* the LDAP entries (*Authelia's is just a one-way LDAP lookup - you'll need another tool to actually administer your LDAP database*).
[^1]: The initial inclusion of Authelia was due to the efforts of @bencey in Discord (Thanks Ben!)

View File

@@ -15,7 +15,7 @@ You too, action-geek, can save the day, by...
2. Store your swarm configuration and application data in an [orderly and consistent structure](/reference/data_layout/)
3. Expose all your services consistently using [Traefik](/docker-swarm/traefik/) with optional [additional per-service authentication][tfa]
Then you can really level-up your geek-fu, by:
Then you can really level-up your geek-fu, by:
4. Making your Docker Swarm highly with [keepalived](/docker-swarm/keepalived/)
5. Setup [shared storage](/docker-swarm/shared-storage-ceph/) to eliminate SPOFs

View File

@@ -100,5 +100,4 @@ What have we achieved? By adding an additional three simple labels to any servic
[KeyCloak][keycloak] is the "big daddy" of self-hosted authentication platforms - it has a beautiful GUI, and a very advanced and mature featureset. Like Authelia, KeyCloak can [use an LDAP server](/recipes/keycloak/authenticate-against-openldap/) as a backend, but _unlike_ Authelia, KeyCloak allows for 2-way sync between that LDAP backend, meaning KeyCloak can be used to _create_ and _update_ the LDAP entries (*Authelia's is just a one-way LDAP lookup - you'll need another tool to actually administer your LDAP database*).
--8<-- "recipe-footer.md"

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/images/discourse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
docs/images/reddit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -12,25 +12,25 @@ Welcome, fellow geek :wave: If you're impatient, just start here :point_down:
<div class="grid cards" markdown>
- __Dive into :material-docker:{ .docker .lg .middle } [Docker Swarm](/docker-swarm/design/)__
- **Dive into :material-docker:{ .docker .lg .middle } [Docker Swarm](/docker-swarm/design/)**
---
The quickest way to get started, and to get your head around the basics.
- __Kick it with :material-kubernetes:{ .kubernetes .lg .middle } [Kubernetes](/kubernetes/)__
- **Kick it with :material-kubernetes:{ .kubernetes .lg .middle } [Kubernetes](/kubernetes/)**
---
Been around for a while? Got a high pain threshold? Jump in!
- __Geek out in :fontawesome-brands-discord:{ .discord .lg .middle } [Discord](http://chat.funkypenguin.co.nz)__
- **Geek out in :fontawesome-brands-discord:{ .discord .lg .middle } [Discord](http://chat.funkypenguin.co.nz)**
---
Join the fun, chat with fellow geeks in realtime!
- __Fast-track with 🚀 [Premix](/premix/)!__
- **Fast-track with 🚀 [Premix](/premix/)!**
---
@@ -38,17 +38,16 @@ Welcome, fellow geek :wave: If you're impatient, just start here :point_down:
</div>
## What to expect
The "*Geek Cookbook*" is a collection of how-to guides for establishing your own container-based awesome selfhosted platform, using either [Docker Swarm](/docker-swarm/design/) or [Kubernetes](/kubernetes/).
Running such a platform enables you to run selfhosted services such as the [AutoPirate](/recipes/autopirate/) (*Radarr, Sonarr, NZBGet and friends*) stack, [Plex](https://www.plex.tv/), [NextCloud](https://nextcloud.com/) etc, and includes elements such as:
* [Automatic SSL-secured access](/docker-swarm/traefik/) to all services (*with LetsEncrypt*)
* [SSO / authentication layer](/docker-swarm/traefik-forward-auth/) to protect unsecured / vulnerable services
* [Automated backup](/recipes/elkarbackup/) of configuration and data
* [Monitoring and metrics](/recipes/swarmprom/) collection, graphing and alerting
- [Automatic SSL-secured access](/docker-swarm/traefik/) to all services (*with LetsEncrypt*)
- [SSO / authentication layer](/docker-swarm/traefik-forward-auth/) to protect unsecured / vulnerable services
- [Automated backup](/recipes/elkarbackup/) of configuration and data
- [Monitoring and metrics](/recipes/swarmprom/) collection, graphing and alerting
Recent updates and additions are posted on the [CHANGELOG](/recent-changes/), and there's a friendly community of like-minded geeks in the [Discord server](http://chat.funkypenguin.co.nz).
@@ -62,7 +61,7 @@ So if you're familiar enough with the concepts above, and you've done self-hosti
1. You want to upskill. You want to work with container orchestration, Prometheus and Grafana, Kubernetes
2. You want to play. You want a safe sandbox to test new tools, keeping the ones you want and tossing the ones you don't.
3. You want reliability. Once you go from __playing__ with a tool to actually __using__ it, you want it to be available when you need it. Having to "*quickly ssh into the basement server and restart plex*" doesn't cut it when you finally convince your wife to sit down with you to watch sci-fi :robot:
3. You want reliability. Once you go from **playing** with a tool to actually **using** it, you want it to be available when you need it. Having to "*quickly ssh into the basement server and restart plex*" doesn't cut it when you finally convince your wife to sit down with you to watch sci-fi :robot:
## Testimonials
@@ -94,18 +93,18 @@ I want your [support](https://github.com/sponsors/funkypenguin), either in the [
#### Get in touch 💬
* Come and say hi to me and the friendly geeks in the [Discord](http://chat.funkypenguin.co.nz) chat or the [Discourse](https://forum.funkypenguin.co.nz/) forums - say hi, ask a question, or suggest a new recipe!
* Tweet me up, I'm [@funkypenguin](https://twitter.com/funkypenguin)! 🐦
* [Contact me](https://www.funkypenguin.co.nz/contact/) by a variety of channels
- Come and say hi to me and the friendly geeks in the [Discord](http://chat.funkypenguin.co.nz) chat or the [Discourse](https://forum.funkypenguin.co.nz/) forums - say hi, ask a question, or suggest a new recipe!
- Tweet me up, I'm [@funkypenguin](https://twitter.com/funkypenguin)! 🐦
- [Contact me](https://www.funkypenguin.co.nz/contact/) by a variety of channels
#### [Sponsor](https://github.com/sponsors/funkypenguin) me ❤️
The best way to support this work is to become a [GitHub Sponsor](https://github.com/sponsors/funkypenguin) / [Patreon patron](https://www.patreon.com/bePatron?u=6982506). You get:
* warm fuzzies,
* access to the pre-mix repo,
* an anonymous plug you can pull at any time,
* and a bunch more loot based on tier
- warm fuzzies,
- access to the pre-mix repo,
- an anonymous plug you can pull at any time,
- and a bunch more loot based on tier
.. and I get some pocket money every month to buy wine, cheese, and cryptocurrency! 🍷 💰
@@ -115,8 +114,6 @@ Impulsively **[click here (NOW quick do it!)](https://github.com/sponsors/funkyp
Need some Cloud / Microservices / DevOps / Infrastructure design work done? This stuff is my bread and butter! :bread: :fork_and_knife: [Get in touch][contact], and let's talk!
#### Buy me a coffee ☕️
A sponsorship is too much commitment, and a book is TL;DR? Hit me up with a [one-time caffine shot](https://www.buymeacoffee.com/funkypenguin)!

View File

@@ -35,7 +35,6 @@ Some of the "let's-just-get-started" advantages to k3s are:
Strictly, it doesn't matter. I prefer the latest Ubuntu LTS server version, but that's because I like to standardize my toolset across different clusters / platforms - I find this makes it easier to manage the "cattle" :cow: over time!
## k3s single node setup
If you only want a single-node k3s cluster, then simply run the following to do the deployment:
@@ -157,5 +156,4 @@ Cuddle your beautiful new cluster by running `kubectl cluster-info` [^1] - if th
[^2]: Looking for your k3s logs? Under Ubuntu LTS, run `journalctl -u k3s` to show your logs
[^3]: k3s is not the only "lightweight kubernetes" game in town. Minikube (*virtualization-based*) and mikrok8s (*possibly better for Ubuntu users since it's installed in a "snap" - haha*) are also popular options. One day I'll write a "mikrok8s vs k3s" review, but it doesn't really matter for our cluster operations - as I understand it, microk8s makes HA clustering slightly easire than k3s, but you get slightly less "out-of-the-box" in return, so mikrok8s may be more suitable for experience users / production edge deployments.
--8<-- "recipe-footer.md"

View File

@@ -1,6 +1,7 @@
---
title: Run Immich in Docker Swarm
description: How to install your own immich instance using Docker Swarm
status: new
---
# Immich in Docker Swarm

View File

@@ -14,7 +14,7 @@ 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!
--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

View File

@@ -1,6 +1,7 @@
---
title: Install Mastodon in Kubernetes
description: How to install your own Mastodon instance using Kubernetes
status: new
---
# Install Mastodon in Kubernetes

View File

@@ -74,7 +74,6 @@ The Mobile app seems very polished, and based on my testing, works better than t
<figcaption>Apparently this was 4000+ photos!</figcaption>
</figure>
### Other
Here's what the filesystem where photos are stored looks like:

View File

@@ -8,7 +8,6 @@ Unlike the [Docker Swarm](/docker-swarm/) or [Kubernetes](/kubernetes/) sections
What you'll find here are opinions and notes about various self-hosted applications, which will be updated from time-to-time to keep them "fresh" :leafy_green:
App | Description | Date
---------|----------| ---------
[Immich][review/immich] | Google Photos replacement | 3 Aug 2022

View File

@@ -83,5 +83,4 @@ A sponsorship is too much commitment, and a book is TL;DR? Hit me up with a [one
[13]: https://www.youracclaim.com/badges/a0c4a196-55ab-4472-b46b-b610b44dc00f/public_url
[14]: https://www.funkypenguin.co.nz
--8<-- "common-links.md"

View File

@@ -32,9 +32,9 @@ plugins:
# 504: ['https://www.mkdocs.org/']
# 404: ['https://github.com/manuzhang/mkdocs-htmlproofer-plugin']
# 400: ['*']
git-committers:
repository: geek-cookbook/geek-cookbook
token: !ENV GH_TOKEN
# git-committers: # This seems to create double-ups
# repository: geek-cookbook/geek-cookbook
# token: !ENV GH_TOKEN
meta-descriptions: # If not provided, auto-generate a description (https://pypi.org/project/mkdocs-meta-descriptions-plugin/)
with-pdf:
#author: David Young
@@ -289,7 +289,7 @@ nav:
- Discord: community/discord.md
- Reddit: community/reddit.md
- Mastodon: community/mastodon.md
# - Forums: community/discourse.md
- Forum: community/discourse.md
- Support: support.md
- Contribute: community/contribute.md
- Code of Conduct: community/code-of-conduct.md
@@ -351,6 +351,9 @@ theme:
code: 'Ubuntu Mono'
extra:
status:
new: Recently added
deprecated: Deprecated
social:
- icon: 'fontawesome/brands/mastodon'
link: 'https://so.fnky.nz/'

View File

@@ -11,17 +11,17 @@
if [ -z "$GH_TOKEN" ]
then
pip install mkdocs-material
ENABLE_PDF_EXPORT=1 mkdocs build -f mkdocs.yml
ENABLE_PDF_EXPORT=0 mkdocs build -f mkdocs.yml
else
# Bypass search issue described at https://github.com/squidfunk/mkdocs-material/issues/3053
# git clone --depth 1 https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
pip install -e mkdocs-material-insiders
ENABLE_PDF_EXPORT=1 mkdocs build -f mkdocs-insiders.yml
ENABLE_PDF_EXPORT=0 mkdocs build -f mkdocs-insiders.yml
fi
# Setup any necessary netlify redirects
cp netlify_redirects.txt site/_redirects
# Put the PDF into secret location
mkdir -p site/${PDF_PATH}
mv site/funkypenguins-geek-cookbook.pdf site/${PDF_PATH}/
# mkdir -p site/${PDF_PATH}
# mv site/funkypenguins-geek-cookbook.pdf site/${PDF_PATH}/