From aae0a052e6419e6e92ad3e56151f1ccd1390dfa0 Mon Sep 17 00:00:00 2001 From: Timo Jaspers <67470612+Kariton@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:53:16 +0200 Subject: [PATCH] reworked a lot --- .../hetzner_webhost.yml} | 2 - .../workflows/{build-hugo.yml => publish.yml} | 4 +- README.md | 2 +- config/_default/languages.yaml | 8 ++ config/_default/module.yaml | 4 + config/_default/params.yaml | 2 - config/_default/privacy.yaml | 1 - config/development/hugo.yaml | 5 + config/production/hugo.yaml | 4 + content/de/authors/timo-jaspers/_index.md | 14 +-- content/de/blog/_index.md | 4 +- content/de/blog/de-test-post/index.md | 24 ---- content/de/doc/_index.md | 6 +- content/de/privacy-policy/index.md | 13 +- content/de/search/index.md | 4 +- content/en/authors/_index.md | 2 +- content/en/authors/chatgpt/_index.md | 2 +- content/en/authors/timo-jaspers/_index.md | 15 +-- content/en/blog/_index.md | 4 +- content/en/blog/en-test-blog/index.md | 24 ---- .../en/blog/opnsense-carp-unicast/index.md | 116 ++++++++++++++++++ content/en/doc/_index.md | 6 +- content/en/privacy-policy/index.md | 15 +-- content/en/search/index.md | 4 +- content/en/site/logo_ansible.yml | 1 - content/en/site/logo_dn42.yml | 1 - content/en/site/logo_frr.yml | 1 - content/en/site/logo_git.yml | 1 - content/en/site/logo_gitlab.yml | 1 - content/en/site/logo_hugo.yml | 1 - content/en/site/logo_hugo_wide.yml | 1 - content/en/site/logo_kubernetes.yml | 1 - content/en/site/logo_kvm.yml | 1 - content/en/site/logo_longhorn.yml | 1 - content/en/site/logo_lxc.yml | 1 - content/en/site/logo_mikrotik.yml | 1 - content/en/site/logo_opnsense.yml | 1 - content/en/site/logo_podman.yml | 1 - content/en/site/logo_proxmox.yml | 1 - content/en/site/logo_python.yml | 1 - content/en/site/logo_rancher.yml | 1 - content/en/site/logo_rke2.yml | 1 - content/en/site/logo_rocky_linux.yml | 1 - content/en/site/logo_truenas.yml | 1 - content/en/site/logo_windows.yml | 1 - docker-compose.yml | 25 +++- frontmatter.json | 22 ++-- i18n/de.yml | 6 + i18n/en.yml | 6 + layouts/_default/index.htaccess | 2 +- layouts/_default/rss.xml | 4 +- 51 files changed, 230 insertions(+), 141 deletions(-) rename .github/workflows/{deploy-hetzner_webhost.yml => deploy/hetzner_webhost.yml} (97%) rename .github/workflows/{build-hugo.yml => publish.yml} (96%) delete mode 100644 content/de/blog/de-test-post/index.md delete mode 100644 content/en/blog/en-test-blog/index.md create mode 100644 content/en/blog/opnsense-carp-unicast/index.md create mode 100644 i18n/de.yml create mode 100644 i18n/en.yml diff --git a/.github/workflows/deploy-hetzner_webhost.yml b/.github/workflows/deploy/hetzner_webhost.yml similarity index 97% rename from .github/workflows/deploy-hetzner_webhost.yml rename to .github/workflows/deploy/hetzner_webhost.yml index bb42d4d..a04a719 100644 --- a/.github/workflows/deploy-hetzner_webhost.yml +++ b/.github/workflows/deploy/hetzner_webhost.yml @@ -1,5 +1,3 @@ -name: Deploy to Hetzner Webhost - on: workflow_call: diff --git a/.github/workflows/build-hugo.yml b/.github/workflows/publish.yml similarity index 96% rename from .github/workflows/build-hugo.yml rename to .github/workflows/publish.yml index bc0771d..d9ceb6c 100644 --- a/.github/workflows/build-hugo.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Build with Hugo +name: Publish on: push: @@ -88,5 +88,5 @@ jobs: deploy: needs: build - uses: ./.github/workflows/deploy-hetzner_webhost.yml + uses: ./.github/workflows/deploy/hetzner_webhost.yml secrets: inherit diff --git a/README.md b/README.md index 2346847..05b272e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Hugo](https://img.shields.io/badge/Hugo-black.svg?style=for-the-badge&logo=Hugo)](https://hugo.io/) [![license](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=plastic)](https://github.com/kariton/jaspers-it/blob/main/LICENSE) -[![Build with Hugo](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml/badge.svg)](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml) +[![Publish](https://github.com/Kariton/jaspers-it/actions/workflows/publish.yml/badge.svg?branch=main)](https://github.com/Kariton/jaspers-it/actions/workflows/publish.yml) # Codebase for my personal website [jaspers.it](https://jaspers.it) diff --git a/config/_default/languages.yaml b/config/_default/languages.yaml index 0874762..abf31ae 100644 --- a/config/_default/languages.yaml +++ b/config/_default/languages.yaml @@ -1,7 +1,13 @@ +# +# Configuration section for Languages +# + en: languageCode: en-US languageName: English weight: 1 + params: + description: My small personal website menu: main_social: - name: GitHub @@ -17,6 +23,8 @@ de: languageCode: de-DE languageName: Deutsch weight: 2 + params: + description: Meine kleine persönliche Webseite menu: main_social: - name: GitHub diff --git a/config/_default/module.yaml b/config/_default/module.yaml index f92d686..171652c 100644 --- a/config/_default/module.yaml +++ b/config/_default/module.yaml @@ -1,3 +1,7 @@ +# +# Configuration section for Modules +# + imports: - path: github.com/kariton/perplex diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 62927cf..9e9a699 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -2,8 +2,6 @@ # Additional parameters # -description: This is my simple homepage. - # Site wide favicon for browser and OS display favicon: svg: favicon/favicon.svg diff --git a/config/_default/privacy.yaml b/config/_default/privacy.yaml index e5cc656..3cd4a41 100644 --- a/config/_default/privacy.yaml +++ b/config/_default/privacy.yaml @@ -3,7 +3,6 @@ # # They are all turned on initially. -# Please apply the appropriate settings for your site. disqus: disable: true diff --git a/config/development/hugo.yaml b/config/development/hugo.yaml index 2237ef0..1c5ac60 100644 --- a/config/development/hugo.yaml +++ b/config/development/hugo.yaml @@ -1,2 +1,7 @@ +## +## Main configuration file +## + title: Jaspers IT DRAFT baseURL: 'https://draft.jaspers.it' +buildDrafts: true \ No newline at end of file diff --git a/config/production/hugo.yaml b/config/production/hugo.yaml index aeb88ee..ba0db89 100644 --- a/config/production/hugo.yaml +++ b/config/production/hugo.yaml @@ -1 +1,5 @@ +## +## Main configuration file +## + baseURL: 'https://jaspers.it' diff --git a/content/de/authors/timo-jaspers/_index.md b/content/de/authors/timo-jaspers/_index.md index df356e2..1fab2cf 100644 --- a/content/de/authors/timo-jaspers/_index.md +++ b/content/de/authors/timo-jaspers/_index.md @@ -39,25 +39,23 @@ toc: true aliases: - /about fmContentType: author -lastmod: 2024-07-22T05:11:23.203Z +lastmod: 2024-08-27T21:43:49.219Z --- -Fachinformatiker für Systemintegration -{.p-first} - Hier teile ich Einblicke in meine Homelab-Basteleien sowie das eine oder andere aus dem Berufsalltag. +{.p-first} + Außerdem schreibe ich über alles andere, was mich interessiert, -wie zum Beispiel meine Ameisen, meine Katze oder andere -Erlebnisse und Projekte. +wie zum Beispiel meine Ameisen, meine Katze oder sonstige Projekte. --- -Seit ich 2016 meinen ersten Gaming-PC gekauft habe, beschäftige ich mich mit Homelabbing. +Seit ich 2014 meinen ersten Gaming-PC gekauft habe, beschäftige ich mich mit Homelabbing. Alles begann mit virtualisierten Spielservern in [VirtualBox](https://www.virtualbox.org), Portweiterleitung und regelmäßig geskripteten Backups von Spielständen. -Ein Jahr später kaufte ich meinen ersten Heimserver und migrierte von [VirtualBox](https://www.virtualbox.org) zu [Proxmox](https://www.proxmox.com/en/proxmox-virtual-environment/overview). +Ein paar Jahre später kaufte ich meinen ersten Heimserver und migrierte von [VirtualBox](https://www.virtualbox.org) zu [Proxmox](https://www.proxmox.com/en/proxmox-virtual-environment/overview). Mit Blick auf Sicherheitsrisiken im **W**orld **W**ide **W**est begann ich, eine Firewall zu virtualisieren, VLANs zu implementieren und tauchte tief in die IT-Administration ein. Anfangs konzentrierte ich mich darauf, die Grundlagen von Linux, IT-Infrastruktur und Infrastrukturmanagement in meinem Homelab zu erlernen. diff --git a/content/de/blog/_index.md b/content/de/blog/_index.md index d3245b3..c857d6e 100644 --- a/content/de/blog/_index.md +++ b/content/de/blog/_index.md @@ -1,6 +1,6 @@ --- title: Blog -description: Blog über Zeug +description: null linktitle: null subtitle: false draft: false @@ -20,5 +20,5 @@ toc: false aliases: [] url: /de fmContentType: content-categorie -lastmod: 2024-07-20T18:00:58.551Z +lastmod: 2024-07-30T21:55:17.386Z --- diff --git a/content/de/blog/de-test-post/index.md b/content/de/blog/de-test-post/index.md deleted file mode 100644 index 825150a..0000000 --- a/content/de/blog/de-test-post/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: de-test-post -description: dieser blog post nur in deutsch verfügbar -linktitle: null -subtitle: true -draft: false -authors: - - Timo Jaspers -date: 2024-07-19T21:05:05.545Z -featured: null -weight: 9999 -math: false -chem: false -mermaid: false -contentlanguage: de -resources: {} -categories: [] -tags: [] -series: [] -toc: true -aliases: [] -fmContentType: article -lastmod: 2024-07-21T13:35:51.204Z ---- diff --git a/content/de/doc/_index.md b/content/de/doc/_index.md index 5148d73..100564d 100644 --- a/content/de/doc/_index.md +++ b/content/de/doc/_index.md @@ -1,13 +1,13 @@ --- title: Dokumentation -description: Dokumentation über Zeug +description: null linktitle: null subtitle: true draft: false menu: main: - identifier: docs name: Docs + identifier: docs weight: 20 frontmatter_configure_seo: false featured: null @@ -24,5 +24,5 @@ resources: toc: false aliases: [] fmContentType: content-categorie -lastmod: 2024-07-19T02:26:40.295Z +lastmod: 2024-07-30T22:27:52.447Z --- diff --git a/content/de/privacy-policy/index.md b/content/de/privacy-policy/index.md index 9179357..c098c3d 100644 --- a/content/de/privacy-policy/index.md +++ b/content/de/privacy-policy/index.md @@ -15,7 +15,7 @@ resources: {} toc: true aliases: [] fmContentType: content-standalone -lastmod: 2024-07-23T22:05:40.130Z +lastmod: 2024-07-30T22:09:14.218Z --- Deine persönlichen Daten sind unbezahlbar und ausschließlich deine. Sie sind dein privates Eigentum und müssen als solches geschützt werden! @@ -23,15 +23,14 @@ Deine persönlichen Daten sind unbezahlbar und ausschließlich deine. Sie sind d ## Generell -Ich habe kein Interesse an deinen persönlichen Daten! - Da ich deine Daten schützen will, wähle ich alle Bestandteile für den Betrieb dieser Seite sorgfältig und nach bestem Wissen und Gewissen aus. Jedoch bin ich für den Schutz deiner persönlichen Daten auf die Datenschutzpraktiken der Anbieter verschiedener Dienstleistungen angewiesen. Es werden ausschließlich Dienste verwendet, die angeben, sich mindestens an die [europäische Datenschutz-Grundverordnung (DSGVO)](https://www.bfdi.bund.de/DE/DerBfDI/Inhalte/Datenschutzpfad/DSGVO.html) und [ePrivacy Verordnung](https://www.bfdi.bund.de/DE/Fachthemen/Inhalte/Telemedien/ePrivacy_Verordnung.html) zu halten. Für maximale Transparenz habe ich aufgeschlüsselt, welche Dienstleistungen ich nutze und wie diese mit den anfallenden Daten umgehen oder auf welche Daten ich Zugriff habe. -Ich zitiere teilweise Ausschnitte und/oder übersetze aus dem Englischen die Richtlinien der Anbieter zum aktuellen Zeitpunkt (07/2024). +Ich zitiere teilweise Ausschnitte und/oder übersetze aus dem Englischen die Richtlinien der Anbieter zum aktuellen Zeitpunkt. (Stand: 07/2024) + Unter jedem dieser Zitate ist eine entsprechende Quellenangabe. Änderungen an diesen durch die Dienstleister kann ich nicht ausschließen. Alle Angaben ohne Gewähr. @@ -44,7 +43,7 @@ Ich erfasse, speichere oder analysiere keine Cookies oder personenbezogenen Info Diese Website wird bei [Hetzner Webhosting](https://www.hetzner.com/webhosting) betrieben. -### Datenschutzrichtlinie von Hetzner Webhosting +### Anfallende Daten bei Hetzner Webhosting > Logfiles speichern unter anderem die IP Adresse, den verwendeten Browser, Uhrzeit und Datum und das genutzte System eines Seitenbesuchers. Bei uns werden nur anonymisierte IP Adressen von Besuchern der Website gespeichert. Auf Webserver-Ebene erfolgt dies dadurch, dass im Logfile standardmäßig statt der tatsächlichen IP Adresse des Besuchers z.B. `<123.123.123.123>` eine IP Adresse `<123.123.123.XXX>` gespeichert wird, wobei XXX ein Zufallswert zwischen 1 und 254 ist. Die Herstellung eines Personenbezuges ist nicht mehr möglich. > --- [Hetzner Datenschutz FAQ](https://docs.hetzner.com/de/general/general-terms-and-conditions/data-privacy-faq/) @@ -64,7 +63,7 @@ Um kommentieren zu können, ist ein GitHub Konto, für das die [Datenschutzricht Alternativ kannst du, sofern die Diskussion bereits existiert, auch [direkt über GitHub](https://github.com/Kariton/jaspers-it/discussions/categories/giscus) kommentieren. -### Datenschutzrichtlinie von giscus +### Anfallende Daten bei giscus Aufgrund einer fehlenden deutschen Fassung hier ein übersetzter Auszug der giscus Datenschutzrichtlinie: @@ -78,6 +77,8 @@ Aufgrund einer fehlenden deutschen Fassung hier ein übersetzter Auszug der gisc Ich habe (derzeit) nichts implementiert, um Bewegungsmuster auf meiner Website zu erfassen oder zu analysieren. Ich plane jedoch, in Zukunft [Fathom Analytics](https://usefathom.com) zu verwenden. +Fathom Analytics kann das Nutzerverhalten ohne Cookies und ohne personalisierte Informationen analysieren. + ### Suchmaschinen Ich benutze [Google Search Console](https://search.google.com/search-console) und [Bing Webmaster Tools](https://www.bing.com/webmasters), um zu verstehen, wie Leute meine Website entdecken. Diese Dienste bieten mir Einblicke, teilen jedoch keine persönlichen Daten über dich mit mir. diff --git a/content/de/search/index.md b/content/de/search/index.md index cc3815a..0a05661 100644 --- a/content/de/search/index.md +++ b/content/de/search/index.md @@ -17,9 +17,9 @@ fmContentType: content-standalone type: search _build: list: never -lastmod: 2024-07-19T02:26:40.289Z +lastmod: 2024-07-30T21:22:37.341Z --- Durchsuchen Sie den Volltextinhalt dieser Website. Ausgeschlossen von der Suche sind Latex-Codeblöcke. {.p-first} - \ No newline at end of file + diff --git a/content/en/authors/_index.md b/content/en/authors/_index.md index 49ba8bf..c912309 100644 --- a/content/en/authors/_index.md +++ b/content/en/authors/_index.md @@ -11,5 +11,5 @@ resources: anchor: Center fieldGroup: resources fmContentType: content-categorie -lastmod: 2024-07-15T21:26:20.899Z +lastmod: 2024-07-30T21:55:37.213Z --- diff --git a/content/en/authors/chatgpt/_index.md b/content/en/authors/chatgpt/_index.md index 017e0f6..a0b28af 100644 --- a/content/en/authors/chatgpt/_index.md +++ b/content/en/authors/chatgpt/_index.md @@ -22,7 +22,7 @@ resources: toc: true aliases: [] fmContentType: author -lastmod: 2024-07-16T19:50:04.394Z +lastmod: 2024-07-30T21:22:58.477Z --- Language model developed by OpenAI diff --git a/content/en/authors/timo-jaspers/_index.md b/content/en/authors/timo-jaspers/_index.md index ae7f890..f8ef17b 100644 --- a/content/en/authors/timo-jaspers/_index.md +++ b/content/en/authors/timo-jaspers/_index.md @@ -39,26 +39,23 @@ toc: true aliases: - /about fmContentType: author -lastmod: 2024-07-22T05:11:21.305Z +lastmod: 2024-08-27T21:44:00.320Z --- -Computer Science Expert Subject Area: System Integration -{.p-first} - - - Here, I share insights into my home lab tinkering as well as various aspects of my professional life. +{.p-first} + Additionally, I write about anything else that interests me, -such as my ants, my cat, or other experiences and projects. +such as my ants, my cat, or other projects. --- -Since I bought my first gaming PC in 2016, I have been engaged in homelabbing. +Since I bought my first gaming PC in 2014, I have been engaged in homelabbing. It all started with virtualized game servers in [VirtualBox](https://www.virtualbox.org), port forwarding, and regularly scripted backups of game save files. -A year later, I bought my first home server and migrated from [VirtualBox](https://www.virtualbox.org) to [Proxmox](https://www.proxmox.com/en/proxmox-virtual-environment/overview). +A few years later, I bought my first home server and migrated from [VirtualBox](https://www.virtualbox.org) to [Proxmox](https://www.proxmox.com/en/proxmox-virtual-environment/overview). With an eye on security risks on the **W**orld **W**ide **W**est, I began virtualizing a firewall, implementing VLANs, and delving deep into IT administration. diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md index 7e43ebd..d194be8 100644 --- a/content/en/blog/_index.md +++ b/content/en/blog/_index.md @@ -1,6 +1,6 @@ --- title: Blog -description: Blog about stuff +description: null linktitle: null subtitle: false draft: false @@ -20,5 +20,5 @@ toc: false aliases: [] url: / fmContentType: content-categorie -lastmod: 2024-07-20T18:01:05.735Z +lastmod: 2024-07-30T21:55:00.516Z --- diff --git a/content/en/blog/en-test-blog/index.md b/content/en/blog/en-test-blog/index.md deleted file mode 100644 index 9d9b911..0000000 --- a/content/en/blog/en-test-blog/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: en-test-blog -description: this blog post is only available in english -linktitle: null -subtitle: true -draft: false -authors: - - Timo Jaspers -date: 2024-07-16T21:45:30.216Z -featured: null -weight: 9999 -math: false -chem: false -mermaid: false -resources: {} -categories: [] -tags: [] -series: [] -toc: true -aliases: [] -contentlanguage: en -fmContentType: article -lastmod: 2024-07-21T13:36:01.575Z ---- diff --git a/content/en/blog/opnsense-carp-unicast/index.md b/content/en/blog/opnsense-carp-unicast/index.md new file mode 100644 index 0000000..b74bed7 --- /dev/null +++ b/content/en/blog/opnsense-carp-unicast/index.md @@ -0,0 +1,116 @@ +--- +title: OPNsense CARP over Unicast +description: null +linktitle: null +subtitle: true +draft: true +lastmod: 2024-08-27T21:25:00.949Z +authors: + - Timo Jaspers +date: 2024-08-01T19:47:13.441Z +featured: logo_opnsense +weight: 9999 +contentlanguage: en +disableGiscus: false +resources: {} +categories: + - hardware + - network +tags: + - opnsense +series: [] +toc: true +aliases: [] +fmContentType: article +--- + +OPNsense added support for CARP peering over unicast with the last update, released on July 25 '24, and i had to test it. +{ .p-first} + +## What is CARP + +CARP is the OpenBSD implementation of VRRP by CISCO. +CARP stands for **C**ommon **A**ddress **R**edundancy **P**rotocol. +VRRP on the other hand stands for **V**irtual **R**outer **R**edundancy **P**rotocol. + +Due to patent and licensing issues CARP was created as alternative to VRRP and serves the same porpuse. + +In a network a IP address needs to be unique. How can you make an highly available IP that floats between multible devices? +For availability there are two devices and if one fails or needs to be rebooted to apply updates - how can you handle this without reconfiguration or any client noticing this downtime? + +**To simplify:** +{ .inline } + +{{< mnote >}} +Most commonly used is this for gateways or routers but not limited to those. +{{< /mnote >}} + +```mermaid {.fig--w-text} +%%{init: + { + "theme": "dark", + "fontFamily": "ibm plex sans" + } +}%% +flowchart TD + A[Client 1 - 192.0.2.101] -->|Uses VIP| B(VIP - 192.0.2.1) + C[Client 2 - 192.0.2.102] -->|Uses VIP| B(VIP - 192.0.2.1) + D[Client 3 - 192.0.2.103] -->|Uses VIP| B(VIP - 192.0.2.1) + + subgraph VRRP Configuration + B(VIP - 192.0.2.1) -->|Primary VRRP| E[Firewall 1] + B(VIP - 192.0.2.1) -.->|Backup VRRP| F[Firewall 2] + + E[Firewall 1] + F[Firewall 2] + + E[Firewall 1] -->|Active| G(VIP - 198.51.100.1) + F[Firewall 2] -.->|Standby| G(VIP - 198.51.100.1) + end + + G(VIP - 198.51.100.1) --> H[Internet] +``` + +On Firewalls there are, most of the time, at least two floating IPs nessesarry. +One is the source gateway, the other is facing towards the destination. + +When a clients wants to connect to some remote server the gateway is used to reach this server. +The source uses `192.0.2.1` as gateway, which is currently on _Firewall 1_. +From the remote site the gateway to the client is `198.51.100.1`. + +When the _Firewall 1_ goes offline mid-communication both gateway IPs float to the _Firewall 2_. +And when those connection states are synced between both firewalls the connection will not be interrupted and nobody will notice. + +## What is unicast + +Unicast is one of three _cast_ methods for network communication. +**Broadcast/Anycast** +: is the typical way to communicate to all devices within the same IPv4 subnet - the broadcast domain. + This works by _talking_ to the broadcast address - the highest address within a subnet. + In a `192.0.2.0/24` network this is the IP `192.0.2.255`. + IPv6 does have an other implemetnation to achive this, which is called **anycast** and works a bit diffferent. + Clients subscribe and send to a multicast group. This is accomplished by assigning the same IPv6 address to more than one device. + **Every device will** recive this package. +{ .d-loose } + +**Multicast** +: is a way to communicate with other network members via a specific service address in the `224.0.0.0/4` range or `ff00::/8` for IPv6. + Those are differently handled then traditional IP addresses. + Addresses in `224.0.0.0/24` and `ffx2::/16` are uses for multicast within a local subnet. + Some of those special addersses are not routable (cannot communicate across different subnets), others are. + For VRRP, the underlying standart for CARP, this address is `224.0.0.18` and in IPv6 networks `ff02::12` which are not routable. + NTP (`224.0.1.1`/`ff0x::101`) and PTP (`224.0.1.129–132`/`ff0x::181`/`ff02::6b`) on the other hand are routable across different networks. + **Every device can** listen to those multicast messages. +{ .inline } + +{{< mnote >}} +NTP = Network Time Protocol +PTP = Precision Time Protocol +{{< /mnote >}} + +**Unicast** +: is generally used to directly talk to one target specificly. This is how most of network traffic is transmitted. + **One device** talks to only one reciepient. +{ .d-loose } + +## Why is it such a big deal diff --git a/content/en/doc/_index.md b/content/en/doc/_index.md index 577a690..1424718 100644 --- a/content/en/doc/_index.md +++ b/content/en/doc/_index.md @@ -1,13 +1,13 @@ --- title: Documentation -description: Documentation about stuff +description: null linktitle: null subtitle: true draft: false menu: main: - identifier: docs name: Docs + identifier: docs weight: 20 frontmatter_configure_seo: false featured: null @@ -24,5 +24,5 @@ resources: toc: false aliases: [] fmContentType: content-categorie -lastmod: 2024-07-19T02:26:40.264Z +lastmod: 2024-08-27T21:08:44.651Z --- diff --git a/content/en/privacy-policy/index.md b/content/en/privacy-policy/index.md index 6367b4f..5142885 100644 --- a/content/en/privacy-policy/index.md +++ b/content/en/privacy-policy/index.md @@ -16,7 +16,7 @@ toc: true aliases: - /privacy/ fmContentType: content-standalone -lastmod: 2024-07-23T22:07:02.411Z +lastmod: 2024-08-04T19:00:47.569Z --- Your personal data is invaluable and exclusively yours. It is your private property and must be protected as such! @@ -24,15 +24,14 @@ Your personal data is invaluable and exclusively yours. It is your private prope ## General -I have no interest in your personal data! - Since I want to protect your data, I carefully select all components used to operate this site to the best of my knowledge and belief. However, I rely on the data protection practices of the providers of various services to protect your personal data. Only services that claim to comply at least with the [General Data Protection Regulation (GDPR)](https://www.edps.europa.eu/general-data-protection-regulation_en) and the [ePrivacy Directive](https://www.edps.europa.eu/data-protection/data-protection/glossary/e_en#e-privacy_directive2009-136-ec) are used. For maximum transparency, I have detailed which services I use and how they handle the data collected or what data I have access to. -I quote partial excerpts of the providers policies as of today (07/2024). +I quote partial excerpts of the providers policies at the current +time. (as of 07/2024) Each of these quotes includes a corresponding source reference. I cannot rule out changes to these by the service providers. All information is provided without guarantee. @@ -45,7 +44,7 @@ I do not collect, store, or analyze any cookies or personal information. This website is hosted by [Hetzner Webhosting](https://www.hetzner.com/webhosting). -### Privacy Policy of Hetzner Webhosting +### Data collected by Hetzner Webhosting > For our customers' websites, the log files store, among other things, the IP address, the browser visitors use, the time and date of the visits, and the system that visitors use. We at Hetzner Online only store pseudonymised IP addresses of visitors to the website. At the web server level, this happens by default by storing an IP address `<123.123.123.XXX>` in the log file instead of the visitor's actual IP address, for example, `<123.123.123.123>`. The XXX is a random value between 1 and 254, so it is no longer possible to establish the true identity of the visitor. > --- [Hetzner Data Privacy FAQ](https://docs.hetzner.com/general/general-terms-and-conditions/data-privacy-faq/) @@ -65,7 +64,7 @@ This requires a GitHub account for which GitHub's [Privacy Policy](https://docs. Alternatively, if the discussion already exists, you can also comment [directly via GitHub](https://github.com/Kariton/jaspers-it/discussions/categories/giscus). -### Privacy Policy of giscus +### Data collected by giscus > We do not collect any data. > [...] @@ -77,6 +76,8 @@ Alternatively, if the discussion already exists, you can also comment [directly I currently have nothing implemented to track or analyze user movements on my website. However, I plan to use [Fathom Analytics](https://usefathom.com) in the future. +Fathom Analytics can analyse user behaviour without cookies or any personalised information. + ### Search Engines I use [Google Search Console](https://search.google.com/search-console) and [Bing Webmaster Tools](https://www.bing.com/webmasters) to understand how people discover my website. These services provide me with insights but do not share any personal data about you with me. @@ -97,4 +98,4 @@ Other accesses, such as direct visits or links from other websites, are not affe This privacy policy may change at any time. -I cannot verify the claims made by third-party service providers and have no connection to the mentioned services. Please review this policy periodically for updates and also check the privacy policies of the third-party providers used. +I cannot verify the claims made by third-party service providers and am not affiliated with the mentioned services. Please review this policy periodically for updates and also check the privacy policies of the third-party providers used. diff --git a/content/en/search/index.md b/content/en/search/index.md index 0385d67..e1620bb 100644 --- a/content/en/search/index.md +++ b/content/en/search/index.md @@ -17,10 +17,10 @@ fmContentType: content-standalone type: search _build: list: never -lastmod: 2024-07-19T02:26:40.258Z +lastmod: 2024-07-30T21:22:39.467Z --- Search the full-text content of this site. Excluded from the search are latex code blocks. {.p-first} - \ No newline at end of file + diff --git a/content/en/site/logo_ansible.yml b/content/en/site/logo_ansible.yml index f2381f8..e0fb1ba 100644 --- a/content/en/site/logo_ansible.yml +++ b/content/en/site/logo_ansible.yml @@ -1,5 +1,4 @@ src: logo/ansible/Ansible-Community-Mark-Black.svg alt: Ansible logo -link: https://www.ansible.com type: symbol box: none diff --git a/content/en/site/logo_dn42.yml b/content/en/site/logo_dn42.yml index b00515c..f698814 100644 --- a/content/en/site/logo_dn42.yml +++ b/content/en/site/logo_dn42.yml @@ -1,5 +1,4 @@ src: logo/dn42/logo.svg alt: dn42 logo -link: https://dn42.cc type: symbol box: none diff --git a/content/en/site/logo_frr.yml b/content/en/site/logo_frr.yml index cb2c4a8..29e804e 100644 --- a/content/en/site/logo_frr.yml +++ b/content/en/site/logo_frr.yml @@ -1,5 +1,4 @@ src: logo/frr/frr-icon.svg alt: FRR logo -link: https://frrouting.org type: symbol box: none diff --git a/content/en/site/logo_git.yml b/content/en/site/logo_git.yml index 3cd0fd3..5f1b8bf 100644 --- a/content/en/site/logo_git.yml +++ b/content/en/site/logo_git.yml @@ -1,5 +1,4 @@ src: logo/git/git-logomark-orange.svg alt: Git logo -link: https://git-scm.com type: symbol box: none diff --git a/content/en/site/logo_gitlab.yml b/content/en/site/logo_gitlab.yml index f19f47a..62b6c83 100644 --- a/content/en/site/logo_gitlab.yml +++ b/content/en/site/logo_gitlab.yml @@ -1,5 +1,4 @@ src: logo/gitlab/gitlab_logo.svg alt: GitLab logo -link: https://gitlab.com type: symbol box: none diff --git a/content/en/site/logo_hugo.yml b/content/en/site/logo_hugo.yml index 700cfae..cc329ee 100644 --- a/content/en/site/logo_hugo.yml +++ b/content/en/site/logo_hugo.yml @@ -1,5 +1,4 @@ src: logo/hugo/hugo-logo.svg alt: Hugo logo -link: https://gohugo.io type: symbol box: none diff --git a/content/en/site/logo_hugo_wide.yml b/content/en/site/logo_hugo_wide.yml index 350dc51..a5b3512 100644 --- a/content/en/site/logo_hugo_wide.yml +++ b/content/en/site/logo_hugo_wide.yml @@ -1,5 +1,4 @@ src: logo/hugo/hugo-logo-wide.svg alt: Hugo logo -link: https://gohugo.io type: symbol box: none diff --git a/content/en/site/logo_kubernetes.yml b/content/en/site/logo_kubernetes.yml index 27a6cbb..c906e96 100644 --- a/content/en/site/logo_kubernetes.yml +++ b/content/en/site/logo_kubernetes.yml @@ -1,5 +1,4 @@ src: logo/kubernetes/logo.svg alt: Kubernetes logo -link: https://kubernetes.io type: symbol box: none diff --git a/content/en/site/logo_kvm.yml b/content/en/site/logo_kvm.yml index 2607d98..fd1a04e 100644 --- a/content/en/site/logo_kvm.yml +++ b/content/en/site/logo_kvm.yml @@ -1,5 +1,4 @@ src: logo/kvm/kvm-logo.svg alt: KVM logo -link: https://www.linux-kvm.org type: symbol box: none diff --git a/content/en/site/logo_longhorn.yml b/content/en/site/logo_longhorn.yml index 5b793d6..4e1f1e9 100644 --- a/content/en/site/logo_longhorn.yml +++ b/content/en/site/logo_longhorn.yml @@ -1,5 +1,4 @@ src: logo/longhorn/logo-stacked-white-longhorn.svg alt: Longhorn logo -link: https://longhorn.io type: symbol box: none \ No newline at end of file diff --git a/content/en/site/logo_lxc.yml b/content/en/site/logo_lxc.yml index 885feaf..d36a0ee 100644 --- a/content/en/site/logo_lxc.yml +++ b/content/en/site/logo_lxc.yml @@ -1,5 +1,4 @@ src: logo/lxc/containers.svg alt: LXC logo -link: https://linuxcontainers.org type: symbol box: none diff --git a/content/en/site/logo_mikrotik.yml b/content/en/site/logo_mikrotik.yml index 49332f2..627a2a3 100644 --- a/content/en/site/logo_mikrotik.yml +++ b/content/en/site/logo_mikrotik.yml @@ -1,5 +1,4 @@ src: logo/mikrotik/MT_Symbol_Line_White.svg alt: MikroTik logo -link: https://mikrotik.com type: symbol box: none diff --git a/content/en/site/logo_opnsense.yml b/content/en/site/logo_opnsense.yml index 8d95715..75ef6c5 100644 --- a/content/en/site/logo_opnsense.yml +++ b/content/en/site/logo_opnsense.yml @@ -1,5 +1,4 @@ src: logo/opnsense/opnsense-logo.svg alt: OPNsense logo -link: https://opnsense.org type: symbol box: none diff --git a/content/en/site/logo_podman.yml b/content/en/site/logo_podman.yml index 73a453a..a0f5800 100644 --- a/content/en/site/logo_podman.yml +++ b/content/en/site/logo_podman.yml @@ -1,5 +1,4 @@ src: logo/podman/podman-logo-source.svg alt: Podman logo -link: https://podman.io type: symbol box: none diff --git a/content/en/site/logo_proxmox.yml b/content/en/site/logo_proxmox.yml index 8c66b53..4eff88d 100644 --- a/content/en/site/logo_proxmox.yml +++ b/content/en/site/logo_proxmox.yml @@ -1,5 +1,4 @@ src: logo/proxmox/proxmox-logo-stacked-inverted-color.svg alt: Proxmox logo -link: https://www.proxmox.com type: symbol box: none diff --git a/content/en/site/logo_python.yml b/content/en/site/logo_python.yml index 1a0c9f7..fe76de7 100644 --- a/content/en/site/logo_python.yml +++ b/content/en/site/logo_python.yml @@ -1,5 +1,4 @@ src: logo/python/python-logo-only.svg alt: Python logo -link: https://python.org type: symbol box: none diff --git a/content/en/site/logo_rancher.yml b/content/en/site/logo_rancher.yml index 7f9c6cc..289b177 100644 --- a/content/en/site/logo_rancher.yml +++ b/content/en/site/logo_rancher.yml @@ -1,5 +1,4 @@ src: logo/rancher/rancher-suse-logo-stacked-white.svg alt: Rancher logo -link: https://rancher.io type: symbol box: none \ No newline at end of file diff --git a/content/en/site/logo_rke2.yml b/content/en/site/logo_rke2.yml index 6697aa5..1600682 100644 --- a/content/en/site/logo_rke2.yml +++ b/content/en/site/logo_rke2.yml @@ -1,5 +1,4 @@ src: logo/rke2/logo-stacked-white-rke2.svg alt: RKE2 logo -link: https://rke2.io type: symbol box: none diff --git a/content/en/site/logo_rocky_linux.yml b/content/en/site/logo_rocky_linux.yml index c0dc00e..fe1c25f 100644 --- a/content/en/site/logo_rocky_linux.yml +++ b/content/en/site/logo_rocky_linux.yml @@ -1,5 +1,4 @@ src: logo/rocky_linux/icon-primary.svg alt: Rocky Linux logo -link: https://rockylinux.org type: symbol box: none diff --git a/content/en/site/logo_truenas.yml b/content/en/site/logo_truenas.yml index bdff529..a413099 100644 --- a/content/en/site/logo_truenas.yml +++ b/content/en/site/logo_truenas.yml @@ -1,5 +1,4 @@ src: logo/truenas/truenas_open_storage-logo-full-color-rgb.svg alt: TrueNAS Open Storage -link: https://www.truenas.com type: symbol box: none \ No newline at end of file diff --git a/content/en/site/logo_windows.yml b/content/en/site/logo_windows.yml index 4b5c7e3..454a790 100644 --- a/content/en/site/logo_windows.yml +++ b/content/en/site/logo_windows.yml @@ -1,5 +1,4 @@ src: logo/windows/Windows_logo_-_2021.svg alt: Microsoft Windows logo -link: https://www.microsoft.com/de-de/windows type: symbol box: none diff --git a/docker-compose.yml b/docker-compose.yml index b1a6425..a1849a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: HUGO_ENV: development HUGO_ENVIRONMENT: development ports: - - 127.0.0.1:1313:80 + - 127.0.0.1:1314:80 networks: - hugo-net @@ -20,12 +20,27 @@ services: HUGO_ENV: production HUGO_ENVIRONMENT: production ports: - - 127.0.0.1:1314:80 + - 127.0.0.1:1313:80 + networks: + - hugo-net + + hugo-deploy-dev: + profiles: [deploy-dev] + build: + context: . + dockerfile: Dockerfile-deploy-hetzner-webhost + args: + HUGO_ENV: development + HUGO_ENVIRONMENT: development + HETZNER_SFTP_USERNAME: "${HETZNER_SFTP_USERNAME}" + HETZNER_SFTP_SSH_KEY: "${HETZNER_SFTP_SSH_KEY}" + HETZNER_SFTP_HOST: "${HETZNER_SFTP_HOST}" + HETZNER_SFTP_DIRECTORY: "${HETZNER_SFTP_DEV_DIRECTORY}" networks: - hugo-net - hugo-deploy: - profiles: [deploy] + hugo-deploy-prod: + profiles: [deploy-prod] build: context: . dockerfile: Dockerfile-deploy-hetzner-webhost @@ -35,7 +50,7 @@ services: HETZNER_SFTP_USERNAME: "${HETZNER_SFTP_USERNAME}" HETZNER_SFTP_SSH_KEY: "${HETZNER_SFTP_SSH_KEY}" HETZNER_SFTP_HOST: "${HETZNER_SFTP_HOST}" - HETZNER_SFTP_DIRECTORY: "${HETZNER_SFTP_DIRECTORY}" + HETZNER_SFTP_DIRECTORY: "${HETZNER_SFTP_PROD_DIRECTORY}" networks: - hugo-net diff --git a/frontmatter.json b/frontmatter.json index 722ff85..46f3ad9 100644 --- a/frontmatter.json +++ b/frontmatter.json @@ -128,41 +128,43 @@ ] }, { - "title": "Legal", + "title": "News", "defaultLocale": "en", "path": "[[workspace]]/content", "filePrefix": "", - "previewPath": "{{locale|ignore:en}}/legal/{{pathToken.relPath}}", + "previewPath": "{{locale|ignore:en}}/news/{{pathToken.relPath}}", "locales": [ { "title": "English", "locale": "en", - "path": "/en/legal" + "path": "/en/news" }, { "title": "German", "locale": "de", - "path": "/de/legal" + "path": "/de/news" } ], - "disableCreation": true + "contentTypes": [ + "article" + ] }, { - "title": "News", + "title": "Article", "defaultLocale": "en", "path": "[[workspace]]/content", "filePrefix": "", - "previewPath": "{{locale|ignore:en}}/news/{{pathToken.relPath}}", + "previewPath": "{{locale|ignore:en}}/article/{{pathToken.relPath}}", "locales": [ { "title": "English", "locale": "en", - "path": "/en/news" + "path": "/en/article" }, { "title": "German", "locale": "de", - "path": "/de/news" + "path": "/de/article" } ], "contentTypes": [ @@ -644,7 +646,7 @@ { "title": "Comments with giscus", "name": "disableGiscus", - "default": "false", + "default": false, "type": "boolean", "description": "Disable comments via giscus.app; works only when configured in params anyway." } diff --git a/i18n/de.yml b/i18n/de.yml new file mode 100644 index 0000000..57a6a3a --- /dev/null +++ b/i18n/de.yml @@ -0,0 +1,6 @@ +- id: recent_posts + translation: "Neuste Beiträge" +- id: "from" + translation: "von" +- id: in + translation: "in" diff --git a/i18n/en.yml b/i18n/en.yml new file mode 100644 index 0000000..31b94ec --- /dev/null +++ b/i18n/en.yml @@ -0,0 +1,6 @@ +- id: recent_posts + translation: "Recent posts" +- id: "from" + translation: "from" +- id: in + translation: "in" diff --git a/layouts/_default/index.htaccess b/layouts/_default/index.htaccess index c0969bb..8de7964 100644 --- a/layouts/_default/index.htaccess +++ b/layouts/_default/index.htaccess @@ -1,5 +1,5 @@ # error pages -{{- if .Site.IsMultiLingual }} +{{- if hugo.IsMultilingual }} ErrorDocument 404 {{ print .Site.LanguagePrefix "/" | absURL }}404/ {{ else }} ErrorDocument 404 {{ "/404/" absURL }} diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 48051bc..2808707 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -13,9 +13,9 @@ {{- printf "" | safeHTML }} - {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} + {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} {{ i18n "from" }} {{ end }}{{ .Site.Title }}{{ end }} {{ .Permalink }} - Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} + {{ i18n "recent_posts" }} {{ if ne .Title .Site.Title }}{{ with .Title }}{{ i18n "in" }} {{.}} {{ end }}{{ end }}{{ i18n "from" }} {{ .Site.Title }} Hugo -- gohugo.io{{ with .Site.LanguageCode }} {{.}}{{end}}{{ with .Site.Copyright }} {{.}}{{end}}{{ if not .Date.IsZero }}