mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-11 00:36:29 +00:00
Fix markdownlint, add Discourse page
Signed-off-by: David Young <davidy@funkypenguin.co.nz>
This commit is contained in:
26
Dockerfile
26
Dockerfile
@@ -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
37
Dockerfile-pdf-build
Normal 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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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*).
|
||||
|
||||
{ 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:
|
||||
|
||||
{ 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).
|
||||
|
||||
@@ -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!
|
||||
* [Facebook](https://www.facebook.com/funkypenguinnz/) - Social networking for old-timers!
|
||||
|
||||
@@ -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.
|
||||
|
||||
{ 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"
|
||||
|
||||
@@ -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!
|
||||
|
||||
{ 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:
|
||||
|
||||
{ loading=lazy }
|
||||
{ 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).
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -253,15 +251,15 @@ Launch the Authelia stack by running ```docker stack deploy authelia -c <path -t
|
||||
|
||||
### Test Authelia
|
||||
|
||||
To test the service works successfully, try logging into Authelia itself first, as a user whose password you've setup in `/var/data/config/authelia/users_database.yml`.
|
||||
To test the service works successfully, try logging into Authelia itself first, as a user whose password you've setup in `/var/data/config/authelia/users_database.yml`.
|
||||
|
||||
You'll notice that upon successful login, you're requested to setup 2FA. If (*like me!*) you didn't configure an SMTP server, you can still setup 2FA (*TOTP or webauthn*), and the setup link email instructions should be found in `/var/data/config/authelia/notifications.txt`
|
||||
|
||||
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
|
||||
## Summary
|
||||
|
||||
What have we achieved? By adding a simple label to any service, we can secure any service behind our Authelia, with minimal processing / handling overhead, and benefit from the 1FA/2FA multi-layered features provided by Autheila.
|
||||
|
||||
@@ -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!)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -26,4 +26,4 @@ Ready to enter the matrix? Jump in on one of the links above, or start reading t
|
||||
--8<-- "recipe-footer.md"
|
||||
|
||||
[^1]: This was an [iconic movie](https://www.imdb.com/title/tt0111257/). It even won 2 Oscars! (*but not for the acting*)
|
||||
[^2]: There are significant advantages to using Docker Swarm, even on just a single node.
|
||||
[^2]: There are significant advantages to using Docker Swarm, even on just a single node.
|
||||
|
||||
@@ -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"
|
||||
|
||||
BIN
docs/images/discourse-flag.png
Normal file
BIN
docs/images/discourse-flag.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/images/discourse.png
Normal file
BIN
docs/images/discourse.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 131 KiB |
BIN
docs/images/reddit.png
Normal file
BIN
docs/images/reddit.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 146 KiB |
@@ -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)!
|
||||
@@ -136,4 +133,4 @@ I regularly donate to / sponsor the following projects. **Join me** in supportin
|
||||
| [WidgetBot's Discord Widget](https://widgetbot.io/) | [Patreon](https://www.patreon.com/widgetbot/overview)
|
||||
| [Carl-bot](https://carl.gg/) | [Patreon](https://www.patreon.com/carlbot)
|
||||
|
||||
--8<-- "common-links.md"
|
||||
--8<-- "common-links.md"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -8,4 +8,4 @@ In a break from tradition, the flux design is best understood *after* installing
|
||||
|
||||
1. [Install](/kubernetes/deployment/flux/install/)
|
||||
2. [Design](/kubernetes/deployment/flux/design/)
|
||||
3. [Operate](/kubernetes/deployment/flux/operate/)
|
||||
3. [Operate](/kubernetes/deployment/flux/operate/)
|
||||
|
||||
@@ -16,8 +16,8 @@ This behaviour can be prohibitive, because (a) we don't want to have to request/
|
||||
To take advantage of the various workarounds available, I find it best to put the certificates into a dedicated namespace, which I name.. `letsencrypt-wildcard-cert`.
|
||||
|
||||
!!! question "Why not the cert-manager namespace?"
|
||||
Because cert-manager is a _controller_, whose job it is to act on resources. I should be able to remove cert-manager entirely (even its namespace) from my cluster, and re-add it, without impacting the resources it acts upon. If the certificates lived in the `cert-manager` namespace, then I wouldn't be able to remove the namespace without also destroying the certificates.
|
||||
|
||||
Because cert-manager is a _controller_, whose job it is to act on resources. I should be able to remove cert-manager entirely (even its namespace) from my cluster, and re-add it, without impacting the resources it acts upon. If the certificates lived in the `cert-manager` namespace, then I wouldn't be able to remove the namespace without also destroying the certificates.
|
||||
|
||||
Furthermore, we can't deploy ClusterIssuers (a CRD) in the same kustomization which deploys the helmrelease which creates those CRDs in the first place. Flux won't be able to apply the ClusterIssuers until the CRD is created, and so will fail to reconcile.
|
||||
|
||||
## Preparation
|
||||
|
||||
@@ -15,9 +15,9 @@ Recipes are usually "baked" in premix first, before they are published on the we
|
||||
|
||||
### ⛳️ Eliminate toil
|
||||
|
||||
Building hosts, installing OS and deploying tooling is all "prep" for the really fun stuff - deploying and using recipes!
|
||||
Building hosts, installing OS and deploying tooling is all "prep" for the really fun stuff - deploying and using recipes!
|
||||
|
||||
Premix [eliminates TOIL](https://sre.google/sre-book/eliminating-toil/) with an ansible playbook to deploy a fresh cluster automatically, or apply individual recipes to an existing cluster.
|
||||
Premix [eliminates TOIL](https://sre.google/sre-book/eliminating-toil/) with an ansible playbook to deploy a fresh cluster automatically, or apply individual recipes to an existing cluster.
|
||||
|
||||
(*You still have to "feed" the playbook your configuration, but it's centralized, repeatable, and versionable*.)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -229,7 +230,7 @@ networks:
|
||||
|
||||
## Launch Immich!
|
||||
|
||||
Launch the Immich stack by running
|
||||
Launch the Immich stack by running
|
||||
|
||||
```bash
|
||||
docker stack deploy immich -c /var/data/config/immich/immich.yml
|
||||
@@ -237,7 +238,7 @@ docker stack deploy immich -c /var/data/config/immich/immich.yml
|
||||
|
||||
Now hit the URL you defined in your config, and you should be prompted to create your first (admin) account, after which you can login (*with the details you just created*), and start admin-ing. Install a mobile app, connect using the same credentials, and start backing up all your photos!
|
||||
|
||||
## Summary
|
||||
## Summary
|
||||
|
||||
What have we achieved? We have an HTTPS-protected endpoint to target with the native mobile apps, allowing us to backup photos from mobile devices and have them become searchable, shareable, and browseable via a beautiful, Google Photos-esque interface!
|
||||
|
||||
@@ -254,4 +255,4 @@ Sponsors have access to a [Premix](/premix/) playbook, which will set up Immich
|
||||
--8<-- "recipe-footer.md"
|
||||
|
||||
[^1]: "wife-insurance": When the developer's wife is a primary user of the platform, you can bet he'll be writing quality code! :woman: :material-karate: :man: :bed: :cry:
|
||||
[^2]: There's a [friendly Discord server](https://discord.com/invite/D8JsnBEuKb) for Immich too!
|
||||
[^2]: There's a [friendly Discord server](https://discord.com/invite/D8JsnBEuKb) for Immich too!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@ Once your user is created, to set their password, click on the "**Credentials**"
|
||||
|
||||
Keycloak can be used with Traefik in two ways..
|
||||
|
||||
#### Keycloak behind Traefik
|
||||
#### Keycloak behind Traefik
|
||||
|
||||
You'll notice that the docker compose example above includes labels for both Traefik v2 and Traefik v2. You obviously don't need both (*although it wont't hurt*), but make sure you update the example domain in the Traefik labels. Keycloak should work behind Traefik without any further customization.
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Harbor
|
||||
|
||||
harbor
|
||||
harbor
|
||||
|
||||
@@ -1 +1 @@
|
||||
# Istio with Harbor
|
||||
# Istio with Harbor
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
@@ -100,7 +99,7 @@ Here's what the filesystem where photos are stored looks like:
|
||||
/var/data/immich/upload/cae22784-474c-4527-825c-46d7f324e8e8/thumb/WEB/2245d33b-fbc5-40ee-a50b-2a234f73e3d9.jpeg
|
||||
```
|
||||
|
||||
As you'll note, while it's true that files are stored locally, there's no filesystem-level metadata easily parsable, like yearly or album-based folders. While the files are stored locally, and *technically* you could move them elsewhere, it certainly wouldn't be easy.
|
||||
As you'll note, while it's true that files are stored locally, there's no filesystem-level metadata easily parsable, like yearly or album-based folders. While the files are stored locally, and *technically* you could move them elsewhere, it certainly wouldn't be easy.
|
||||
|
||||
It's also not easy to access the files via any sort of sharing (*NFS, SMB, etc*), other than using the Immich UI. Par for the course though, I expect, if we want to be able to rely on the database for metadata without requiring intensive filesystem interaction.
|
||||
|
||||
|
||||
@@ -8,10 +8,9 @@ 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
|
||||
[Mastodon][review/mastodon] | Federated microblogging social network | 9 Aug 2022
|
||||
|
||||
--8<-- "common-links.md"
|
||||
--8<-- "common-links.md"
|
||||
|
||||
@@ -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"
|
||||
--8<-- "common-links.md"
|
||||
|
||||
11
mkdocs.yml
11
mkdocs.yml
@@ -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/'
|
||||
|
||||
@@ -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}/
|
||||
|
||||
Reference in New Issue
Block a user