mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-13 17:56:26 +00:00
@@ -4,7 +4,7 @@
|
|||||||
Already deployed:
|
Already deployed:
|
||||||
|
|
||||||
* [X] [Docker swarm cluster](/docker-swarm/design/) with [persistent shared storage](/docker-swarm/shared-storage-ceph/)
|
* [X] [Docker swarm cluster](/docker-swarm/design/) with [persistent shared storage](/docker-swarm/shared-storage-ceph/)
|
||||||
* [X] [Traefik](/docker-swarm/traefik) configured per design
|
* [X] [Traefik](/docker-swarm/traefik/) configured per design
|
||||||
|
|
||||||
New:
|
New:
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ description: The most realtime and exciting way engage with our geeky community
|
|||||||
|
|
||||||
The most realtime and exciting way engage with our geeky community is in our [Discord server](http://chat.funkypenguin.co.nz)
|
The most realtime and exciting way engage with our geeky community is in our [Discord server](http://chat.funkypenguin.co.nz)
|
||||||
|
|
||||||
!!! question "Eh? What's a Discord? Get off my lawn, young whippersnappers!!"
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<iframe src="https://e.widgetbot.io/channels/396055506072109067/456689991326760973" height="600" width="800"></iframe>
|
||||||
|
|
||||||
|
!!! question "Eh? What's a Discord? Get off my lawn, young whippersnappers!!"
|
||||||
Yeah, I know. I also thought Discord was just for the gamer kids, but it turns out it's great for a geeky community. Why? [Let me elucidate ya.](https://www.youtube.com/watch?v=1qHoSWxVqtE)..
|
Yeah, I know. I also thought Discord was just for the gamer kids, but it turns out it's great for a geeky community. Why? [Let me elucidate ya.](https://www.youtube.com/watch?v=1qHoSWxVqtE)..
|
||||||
|
|
||||||
1. Native markdown for code blocks
|
1. Native markdown for code blocks
|
||||||
@@ -19,8 +21,6 @@ Yeah, I know. I also thought Discord was just for the gamer kids, but it turns o
|
|||||||
|
|
||||||
1. Create [an account](https://discordapp.com)
|
1. Create [an account](https://discordapp.com)
|
||||||
2. [Join the geek party](http://chat.funkypenguin.co.nz)!
|
2. [Join the geek party](http://chat.funkypenguin.co.nz)!
|
||||||
<!-- markdownlint-disable MD033 -->
|
|
||||||
<iframe src="https://discordapp.com/widget?id=396055506072109067&theme=dark" width="350" height="400" allowtransparency="true" frameborder="0"></iframe>
|
|
||||||
|
|
||||||
## Code of Conduct
|
## Code of Conduct
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
new Crate({
|
|
||||||
server: '396055506072109067',
|
|
||||||
channel: '396055506663374849',
|
|
||||||
color: 'black',
|
|
||||||
indicator: false,
|
|
||||||
notifications: true,
|
|
||||||
indicator: true,
|
|
||||||
timeout: 5000
|
|
||||||
})
|
|
||||||
|
|
||||||
// Display for 10 seconds + custom avatar
|
|
||||||
crate.notify({
|
|
||||||
content: 'Need a 🤚? Hot, sweaty geeks are waiting to chat to you! Click 👇',
|
|
||||||
timeout: 5000,
|
|
||||||
avatar: 'https://avatars2.githubusercontent.com/u/1524686?s=400&v=4'
|
|
||||||
})
|
|
||||||
1
manuscript/extras/javascript/plausible.js
Normal file
1
manuscript/extras/javascript/plausible.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||||
10
manuscript/extras/javascript/rightmessage.js
Normal file
10
manuscript/extras/javascript/rightmessage.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<!-- RightMessage -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
(function(p, a, n, d, o, b, c) {
|
||||||
|
o = n.createElement('script'); o.type = 'text/javascript'; o.async = true; o.src = 'https://tb.rightmessage.com/'+p+'.js';
|
||||||
|
b = n.getElementsByTagName('script')[0]; d = function(h, u, i) { var c = n.createElement('style'); c.id = 'rmcloak'+i;
|
||||||
|
c.type = 'text/css'; c.appendChild(n.createTextNode('.rmcloak'+h+'{visibility:hidden}.rmcloak'+u+'{display:none}'));
|
||||||
|
b.parentNode.insertBefore(c, b); return c; }; c = d('', '-hidden', ''); d('-stay-invisible', '-stay-hidden', '-stay');
|
||||||
|
setTimeout(o.onerror = function() { c.parentNode && c.parentNode.removeChild(c); }, a); b.parentNode.insertBefore(o, b);
|
||||||
|
})('1802694484', 20000, document);
|
||||||
|
</script>
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
app.document$.subscribe(function() {
|
|
||||||
var tables = document.querySelectorAll("article table")
|
|
||||||
tables.forEach(function(table) {
|
|
||||||
new Tablesort(table)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
6
manuscript/extras/javascript/tablesort.js
Normal file
6
manuscript/extras/javascript/tablesort.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
document$.subscribe(function() {
|
||||||
|
var tables = document.querySelectorAll("article table:not([class])")
|
||||||
|
tables.forEach(function(table) {
|
||||||
|
new Tablesort(table)
|
||||||
|
})
|
||||||
|
})
|
||||||
27
manuscript/extras/javascript/widgetbot.js
Normal file
27
manuscript/extras/javascript/widgetbot.js
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// Display for 10 seconds + custom avatar
|
||||||
|
// crate.notify({
|
||||||
|
// content: 'Need a 🤚? Hot, sweaty geeks are waiting to chat to you! Click 👇',
|
||||||
|
// timeout: 5000,
|
||||||
|
// avatar: 'https://avatars2.githubusercontent.com/u/1524686?s=400&v=4'
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
// This file should _not_ be routinely included, it's here to make tweaking of the widgetbot settings
|
||||||
|
// faster, since making changes doesn't require restarting mkdocs serve
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/@widgetbot/crate@3"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const devbutton = new Crate({
|
||||||
|
server: '396055506072109067',
|
||||||
|
channel: '456689991326760973' // Cookbook channel
|
||||||
|
color: '#000',
|
||||||
|
indicator: false,
|
||||||
|
notifications: true,
|
||||||
|
indicator: true,
|
||||||
|
timeout: 5000,
|
||||||
|
glyph: 'https://avatars2.githubusercontent.com/u/1524686?s=400&v=4'
|
||||||
|
})
|
||||||
|
|
||||||
|
devbutton.notify('Hello __world__\n```js\n// This is Sync!\n```')
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ Similar to the other backup options in the Cookbook, we can use Duplicati to bac
|
|||||||
- Cloud services (OneDrive, Google Drive, etc)
|
- Cloud services (OneDrive, Google Drive, etc)
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Since Duplicati itself offers no user authentication, this design secures Duplicati behind [Traefik Forward Auth](/docker-swarm/traefik-forward-auth), so that in order to gain access to the Duplicati UI at all, authentication through the mechanism configured in traefik-forward-auth (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
Since Duplicati itself offers no user authentication, this design secures Duplicati behind [Traefik Forward Auth](/docker-swarm/traefik-forward-auth/), so that in order to gain access to the Duplicati UI at all, authentication through the mechanism configured in traefik-forward-auth (_to GitHub, GitLab, Google, etc_) must have already occurred.
|
||||||
|
|
||||||
## Ingredients
|
## Ingredients
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
title: How to share screenshots with linx under Docker
|
||||||
description: Quickly share self-destructing screenshots, text, etc
|
description: Quickly share self-destructing screenshots, text, etc
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
13
mkdocs.yml
13
mkdocs.yml
@@ -242,7 +242,7 @@ nav:
|
|||||||
- Design: premix/ansible/design.md
|
- Design: premix/ansible/design.md
|
||||||
# - Swarm: premix/swarm.md
|
# - Swarm: premix/swarm.md
|
||||||
# - Kubernetes: premix/kubernetes.md
|
# - Kubernetes: premix/kubernetes.md
|
||||||
- CHANGELOG: CHANGELOG.md
|
- CHANGELOG: changelog.md
|
||||||
- Support: support.md
|
- Support: support.md
|
||||||
- Contribute: community/contribute.md
|
- Contribute: community/contribute.md
|
||||||
- Community:
|
- Community:
|
||||||
@@ -358,11 +358,12 @@ extra_css:
|
|||||||
- extras/css/icons.css
|
- extras/css/icons.css
|
||||||
|
|
||||||
extra_javascript:
|
extra_javascript:
|
||||||
- extras/javascript/discord.js
|
- extras/javascript/plausible.js
|
||||||
- extras/javascript/sortable-tables.js
|
# - extras/javascript/widgetbot.js # uncommented for dev
|
||||||
- extras/javascript/feedback.js
|
# - extras/javascript/rightmessage.js
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/tablesort.min.js
|
# - extras/javascript/feedback.js
|
||||||
|
- https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js
|
||||||
|
- extras/javascript/tablesort.js
|
||||||
|
|
||||||
# Extensions
|
# Extensions
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{% extends "main.html" %}
|
{% extends "main.html" %}
|
||||||
|
|
||||||
<!-- Content -->
|
<!-- For 404 tracking using Plausible -->
|
||||||
{% block libs %}
|
{% block libs %}
|
||||||
<script>plausible("404",{ props: { path: document.location.pathname } });</script>
|
<script>plausible("404",{ props: { path: document.location.pathname } });</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block analytics %}
|
{% block analytics %}
|
||||||
<!-- <script src="https://cdn.jsdelivr.net/npm/@widgetbot/crate@3" async defer></script> -->
|
|
||||||
<script src="/js/i-am-groot.js"></script>
|
<script src="/js/i-am-groot.js"></script>
|
||||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||||
<!-- RightMessage -->
|
<!-- RightMessage -->
|
||||||
@@ -46,3 +45,25 @@
|
|||||||
<title>{{ config.site_name }}</title>
|
<title>{{ config.site_name }}</title>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extrahead %}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- For widgetbot -->
|
||||||
|
<!-- <script src='https://cdn.jsdelivr.net/npm/@widgetbot/crate@3' async defer>
|
||||||
|
const button = new Crate({
|
||||||
|
server: '396055506072109067', // Funky Penguin
|
||||||
|
channel: '456689991326760973', // Cookbook channel
|
||||||
|
// username: 'Website Reader',
|
||||||
|
// color: '#000',
|
||||||
|
notifications: true,
|
||||||
|
indicator: true // most recent change
|
||||||
|
})
|
||||||
|
button.notify({
|
||||||
|
content: 'Need a 🤚? Hot, sweaty geeks are waiting to chat to you! Click 👇',
|
||||||
|
timeout: 100000
|
||||||
|
})
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user