Compare commits

...

16 commits
v0.1.2 ... main

Author SHA1 Message Date
537d3f6166
fix: move to own git
Some checks failed
/ build (push) Has been cancelled
2025-04-04 11:02:56 +02:00
Renovate Bot
46bd006078 fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.142.0 2025-01-22 13:05:02 +00:00
Renovate Bot
5fafb925cd fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.141.0 2025-01-16 14:03:57 +00:00
Renovate Bot
0bb09df315 fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.140.2 2024-12-30 16:04:42 +00:00
Renovate Bot
1b28b9c383 fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.140.1 2024-12-23 17:04:12 +00:00
Renovate Bot
c1ef46a2de fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.5 2024-12-14 19:34:35 +00:00
Renovate Bot
34dfac84f0 fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.4 2024-12-09 17:34:16 +00:00
Renovate Bot
79005f350c fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.3 2024-11-29 16:06:45 +00:00
Renovate Bot
266e5a1bbb fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.2 2024-11-23 16:04:23 +00:00
Renovate Bot
f5a20f7d64 fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.1 2024-11-23 15:04:29 +00:00
a50c23d45c
fix(ci): build container 2024-11-21 01:39:38 +01:00
Renovate Bot
ac2ba661d5
fix(deps): update ghcr.io/gohugoio/hugo docker tag to v0.139.0 2024-11-21 00:39:25 +01:00
67a416a82b
fix: update favicon 2024-11-11 12:33:06 +01:00
107b57d299
try hugo and hextra 2024-11-08 19:15:43 +01:00
53efa2c0c4
try adidoks 2024-11-07 20:34:34 +01:00
37813805fe
fix: start writting matrix posts 2024-08-23 22:29:52 +02:00
47 changed files with 410 additions and 161 deletions

View file

@ -19,7 +19,7 @@ jobs:
id: meta
with:
images: |
codeberg.org/${{ github.repository }}
git.chaos.fyi/${{ github.repository }}
tags: |
type=schedule
type=raw,value=latest,enable={{is_default_branch}}
@ -30,7 +30,7 @@ jobs:
- name: Container-Registry login
uses: docker/login-action@v3
with:
registry: codeberg.org/wrenix
registry: git.chaos.fyi/wrenix
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View file

@ -0,0 +1 @@
/.hugo_build.lock

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "themes/terminimal"]
path = themes/terminimal
url = https://github.com/pawroman/zola-theme-terminimal.git

View file

@ -0,0 +1,19 @@
steps:
- name: publish
image: woodpeckerci/plugin-kaniko
when:
- event: push
branch:
- main
- event: tag
ref: refs/tags/v*
- event: cron
cron: sync_*
settings:
dockerfile: Containerfile
registry: "${CI_FORGE_URL#https://}"
repo: "${CI_REPO}"
auto_tag: true
username: "${CI_REPO_OWNER}"
password:
from_secret: CODEBERG_TOKEN

View file

@ -1,15 +1,20 @@
FROM ghcr.io/getzola/zola:v0.18.0 as builder
FROM ghcr.io/gohugoio/hugo:v0.142.0 as builder
COPY content content
COPY static static
COPY themes themes
COPY templates templates
COPY config.toml config.toml
RUN [ "/bin/zola", "build" ]
COPY --chown=hugo:hugo .git .git
COPY --chown=hugo:hugo content content
COPY --chown=hugo:hugo data data
COPY --chown=hugo:hugo go.mod go.mod
COPY --chown=hugo:hugo hugo.yaml hugo.yaml
COPY --chown=hugo:hugo i18n i18n
COPY --chown=hugo:hugo layouts layouts
COPY --chown=hugo:hugo static static
COPY --chown=hugo:hugo themes themes
RUN [ "/usr/bin/hugo", "mod", "get", "-u" ]
RUN [ "/usr/bin/hugo", "build", "--minify" ]
FROM docker.io/svenstaro/miniserve:alpine
COPY --from=builder /public /data
COPY --from=builder /project/public /data
CMD [ "--index", "index.html", "/data" ]
CMD [ "--index", "index.html", "/data" ]

View file

@ -1,74 +0,0 @@
base_url = "https://wrenix.eu"
title = "WrenIX"
description = "Der Zaunkönig im Netzwerk"
generate_feed = true
compile_sass = true
build_search_index = false
# theme = "anatole-zola"
# theme = "tabi"
theme = "terminimal"
taxonomies = [
{name = "tags"}
]
feed_filename = "rss.xml"
default_language = "de"
[languages.en]
[markdown]
external_links_target_blank = true
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true
# highlight_theme = "base16-ocean-light"
[extra]
accent_color = "blue"
background_color = "blue"
logo_text="WrenIX"
author="WrenIX"
copyright_html="© WrenIX"
use_full_hack_font = true
page_titles = "main_only"
favicon = "/images/avatar.png"
favicon_mimetype = "image/png"
[[extra.menu_items]]
name="home"
url="$BASE_URL"
[[extra.menu_items]]
name="archive"
url="$BASE_URL/archive"
[[extra.menu_items]]
name="about me"
url="$BASE_URL/about"
[[extra.menu_items]]
name="rss"
url="$BASE_URL/rss.xml"
newtab=true
[[extra.menu_items]]
name="docs"
url="https://docs.wrenix.eu"
newtab=true
[[extra.menu_items]]
name="mastodon"
url="https://social.chaos.fyi/@wrenix"
newtab=true
[[extra.menu_items]]
name="git"
url="https://codeberg.org/wrenix"
newtab=true

View file

@ -1,17 +0,0 @@
+++
title = "Passwordmanager mit GPG-Key"
date = "2023-05-18"
[taxonomies]
tags = [
"gpg",
"desktop"
]
+++
```
pass init 0x7AFDB012974B1BB5
pass edit dev/codeberg.org
git remote add origin git@codeberg.org:wrenix/password-store.git
git push -u origin main
```

View file

@ -1,5 +1,14 @@
+++
title = "Home"
sort_by = "date"
paginate_by = 3
+++
---
title: WrenIX
toc: false
---
This is my privat homepage.
## Explore
{{< cards >}}
{{< card link="blog" title="Blog" icon="newspaper" >}}
{{< card link="docs" title="Docs" icon="book-open" >}}
{{< card link="about" title="About Me" icon="user" >}}
{{< /cards >}}

28
content/about.en.md Normal file
View file

@ -0,0 +1,28 @@
---
title: "About Me"
type: about
---
# WrenIX
I call myself WrenIX.
I use the small slogan:
> The wren in the network.
![blue bird](/images/avatar.png)
## Contakt
E-Mail: [contact@wrenix.eu](mailto:contact@wrenix.eu)
Matrix: [@wrenix:chaos.fyi](https://matrix.to/#/@wrenix:chaos.fyi)
## Cryptography
SSH: `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGONGPQ79A9WZ7EwM6vMfBKBkgPD2dsjExFoo2UXyd79 dev@wrenix.eu`
* [Download](/keys/ssh.txt)
GPG-Fingerprint: `B9C3 5FDD 7362 F063 A870 6A2E 7AFD B012 974B 1BB5`
* [Armour](/keys/dev.gpg.txt)
* [Binary](/keys/dev.gpg.bin)

View file

@ -1,7 +1,7 @@
+++
title = "About Me"
path = "about"
+++
---
title: "About Me"
type: about
---
# WrenIX

View file

@ -1,13 +1,14 @@
+++
title = "eToken und GPG-Key"
date = "2023-05-17"
[taxonomies]
tags = [
"gpg",
"desktop"
]
+++
---
title: "eToken und GPG-Key"
date: "2023-05-17"
authors:
- name: "me"
link: "/about/"
image: "/images/avatar.png"
tags:
- "gpg"
- "desktop"
---
Ich nutze den GPG-Key für folgende Funktionen:
- SSH-Key (gpg-agent und unter Android [TermBot](https://f-droid.org/en/packages/org.sufficientlysecure.termbot/) der OpenKeyChain Support wurde ersetzt, Gründe gab es mal wurden von der Webseite entfernt)
@ -550,4 +551,4 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGONGPQ79A9WZ7EwM6vMfBKBkgPD2dsjExFoo2UXyd79
```bash
gpg2 --no-armour -o .well-known/openpgpkey/hu/gudx35f8m3ns6jx87gkuda1nmtsb53nd --export B9C35FDD7362F063A8706A2E7AFDB012974B1BB5
```
```

View file

@ -0,0 +1,18 @@
---
title: "Passwordmanager mit GPG-Key"
date: "2023-05-18"
authors:
- name: "me"
link: "/about/"
image: "/images/avatar.png"
tags:
- "gpg"
- "desktop"
---
```
pass init 0x7AFDB012974B1BB5
pass edit dev/codeberg.org
git remote add origin git@codeberg.org:wrenix/password-store.git
git push -u origin main
```

View file

@ -1,15 +1,16 @@
+++
title = "Modernes Logging Konzept"
date= "2023-06-22"
[taxonomies]
tags = [
"k8s",
"kubernetes",
"server",
"logging"
]
+++
---
title: "Modernes Logging Konzept"
date: "2023-06-22"
authors:
- name: "me"
link: "/about/"
image: "/images/avatar.png"
tags:
- "k8s"
- "kubernetes"
- "server"
- "logging"
---
- Logging Schema / Format
- Collector, Parsen und Transformieren/Filtern
@ -95,4 +96,4 @@ Es gibt viele Logging Backends, sowohl OpenSource, als auch proritär. In den me
TODO:
- elasticsearch
- loki von grafana
- loki von grafana

View file

@ -0,0 +1,75 @@
---
title: "Die Zukunft von Matrix"
date: "2024-08-28"
draft: true
authors:
- name: "me"
link: "/about/"
image: "/images/avatar.png"
tags:
- "matrix"
- "element"
---
Zunächst, ich bin eine private Person und stehe nicht in Verbindung zu Element oder der Matrix Foundation.
Daher kann ich nicht die Zukunft vorhersagen, sondern lediglich die ganzen Alphas und Betas bewerten und technisch hier einmal zusammensetzen.
Ein weiteres Wort vorweg, Element setzt sehr viel Energie daran, den Grundstock von Element auf eine moderne Technik zu setzen (sogar mit ein kompletten Rewrite der Clients, der gerade Element-X genannt wird).
Dieses Vorgehen ist löblich, doch zieht einige Änderungen im Betrieb nach sich und besteht nicht mehr nur aus einem Synapse-Server.
Die folgenden Artikel werden die einzelnen Komponenten und deren technisches Zusammenspiel einzeln erläutern.
Diese Artikel plane ich:
* [Element-Call](https://element.io/blog/introducing-native-matrix-voip-with-element-call/) der folgende Komponenten beschreibt:
* Element-Web / Element-X
* [Element-Call](https://github.com/element-hq/element-call)
* [Livekit JWT - Service](https://github.com/element-hq/lk-jwt-service)
* [Livekit](https://docs.livekit.io/home/self-hosting/deployment/)
* Synapse
* [Sliding-Sync](https://github.com/matrix-org/sliding-sync/blob/main/docs/Landing.md): neu Client API, [die 6000x schneller ist](https://element.io/blog/element-x-experience-the-future-of-element/).
* [Matrix-Authentification-Server (MAS)](https://matrix-org.github.io/matrix-authentication-service/): neu OIDC-Anbindung
## Deployments
Wie ihr bereits sieht, sind es ganz schön viele neue Komponenten,
da entsteht schnell die Frage,
wie soll man diese alle orchestrieren.
Meine berufliche Laufbahn hat mich zu Kubernetes geführt, den Weg der Element auch gerade geht.
Doch aus Sicht eines privaten Betreibers bin ich unglücklich von den Ideen:
- [Komischer Installer](https://ems-docs.element.io/books/element-on-premise-documentation-lts-2404/page/installing-element-server-suite#bkmrk-kubernetes-deploymen-2)
- [Kubernetes-Operatoren](https://github.com/element-hq/ess-starter-edition-core)
Zu letzteren möchte ich hier ein paar Worte verlieren.
### Für Applikation in ein Kubernetes-Cluster sollten Operatoren vermieden werden.
Hier erst mal eine kurze Begriffserklärung:
* Ein **Controller** greift auf der Kubernetes-API zu und "kontrolliert" den Workload.
Dabei kann er mittels eines ServiceAccounts und eine entsprechende RBAC-Rolle auf notwendig ConfigMap, Secrets und Deployments (usw.) zugreifen (durch die Rolle kann diese wunderbar in Namespaces eingesperrt werden).
* Ein **Operator** ist ein Controller, dessen Logik auf eigene CustomResourceDefinition (CRDs) basieren. Damit ist es eine Cluster-weite Erweiterung der API.
#### Warum?
Genau das ist das Problem, in vielen Kontexten möchte man nicht für jede Anwendung (und deren Version) ein ganzen Kubernetes Cluster hinstellen.
Operatoren verursachen folgende Probleme, die aus meiner Sicht beim Betrieb von Anwendungen benötigt werden:
* **Staging**, auch wenn die CRDs apiVersion vorsieht, ist nur im geringen Maße ein Staging möglich.
Der Operator muss alle apiVersion unterstützen und daher den aktuellen Stand entsprechen.
* **Separierung** ein Operator wird über die CRDs angesprochen, daher muss es für ihn möglich sein, in allen Namespaces Ressourcen verwalten können.
Dieses ist mit Vorsicht zu genießen. Immerhin ist es damit fast der ganze Cluster (wie für ihn unnötige Namespace und Pods und Secrets andere Applikation).
* **Shared Hosting** ist in Kubernetes generelle möglich,
durch die erwähnte Separierung mittels Namespaces und RBAC-Regeln können Benutzer voneinander getrennt (siehe [Rancher-Project](https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/manage-clusters/projects-and-namespaces) oder [Capsule](https://capsule.clastix.io/)) werden.
Da ein Operator mindestens für die Installation der CRDs clusterweite Rechte benötigt, schließt man einen solchen Kunden aus.
PS: Das Teilen eines Clusters könnte nicht nur innerhalb eines Unternehmens (in Abteilungen oder Teams), sondern auch für private Personen, wenn wir an [Uberspace](https://uberspace.de/) denken.
Somit ist ein Operator zwar sinnvoll für die Erweiterung aus Infrastruktur-Sicht (Logging, Monitoring usw.), aber nicht aus Anwendungssicht.
#### Lösung
Neben den typischen Tools:
* Helm-Chart mit Jobs usw. (Meine sind [hier](https://codeberg.org/wrenix/helm-charts))
* Helmfile für komplexere Orchestrierung
* GitOps Operatoren ala FluxCD oder ArgoCD (gilt ja als Infrastruktur) (Meine sind [hier](https://codeberg.org/wrenix/flux-charts/src/branch/main/mycloud-matrix))
Hiermit der **Tipp**: Schreibt gerne **Controller**, der mittels Labels ConfigMaps und Secrets sich eure Anwendung konfigurieren lassen.
So ist es möglich feingranular, in Namespaces:
* Zu Stagen (mehrere verschiede Versionen des Controllers und der Anwendung)
* Auf Kubernetes-Ebene Berechtigungen mittels RBAC-Rollen innerhalb eines Namespaces zu beschränken.

10
content/blog/_index.md Normal file
View file

@ -0,0 +1,10 @@
---
title: "Blog"
---
<div style="text-align: center; margin-top: 1em;">
{{< hextra/hero-badge link="index.xml" >}}
<span>RSS Feed</span>
{{< icon name="rss" attributes="height=14" >}}
{{< /hextra/hero-badge >}}
</div>

10
content/docs/_index.md Normal file
View file

@ -0,0 +1,10 @@
---
title: "Docs"
description: "All the documentations from WrenIX projects"
sort_by: "weight"
weight: 1
---
Kubernetes:
* [Helm Charts](helm-charts)
* [FluxCD (Charts)](flux-charts)

View file

@ -1,3 +0,0 @@
+++
render = false
+++

View file

@ -1,6 +0,0 @@
+++
title = "About Me"
path = "en/about"
+++
# WrenIX

View file

@ -1,6 +0,0 @@
+++
title = "Archive"
template = "archive.html"
path = "en/archive"
+++
# Archive

View file

@ -1,6 +0,0 @@
+++
title = "Archiv"
template = "archive.html"
path = "archive"
+++
# Archiv

2
data/icons.yaml Normal file
View file

@ -0,0 +1,2 @@
rss: <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg>
git: <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-git-branch"><line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path></svg>

11
go.mod Normal file
View file

@ -0,0 +1,11 @@
module wrenix.eu
go 1.23.2
require (
codeberg.org/wrenix/flux-charts v0.0.0-20241111111801-09752b52215b // indirect
codeberg.org/wrenix/helm-charts v0.0.0-20241108144325-1d57a623fc3e // indirect
git.chaos.fyi/wrenix/flux-charts v0.0.0-20250401222947-c5bf68c60cbd // indirect
git.chaos.fyi/wrenix/helm-charts v0.0.0-20250404084343-83eb4bb9252b // indirect
github.com/imfing/hextra v0.9.7 // indirect
)

18
go.sum Normal file
View file

@ -0,0 +1,18 @@
codeberg.org/wrenix/flux-charts v0.0.0-20241108180735-fe00364918d9 h1:phkjKboijEztsFb/UHbETj7DWwBYmFAbaHLyW/uo83c=
codeberg.org/wrenix/flux-charts v0.0.0-20241108180735-fe00364918d9/go.mod h1:qmbBEgAQOiY/2M4IJ0LZaGpbV1JGxlVoDiiuFs7kOqI=
codeberg.org/wrenix/flux-charts v0.0.0-20241111111240-1a731115e995 h1:eVSALLuLPt7K55PUSCPhxWtPRMZkOiEe+BF5izRqNQU=
codeberg.org/wrenix/flux-charts v0.0.0-20241111111240-1a731115e995/go.mod h1:qmbBEgAQOiY/2M4IJ0LZaGpbV1JGxlVoDiiuFs7kOqI=
codeberg.org/wrenix/flux-charts v0.0.0-20241111111801-09752b52215b h1:bVA6zx9JG7+NYP5ymOqQq6ZgXs8IKjvCR37YNCtPuEQ=
codeberg.org/wrenix/flux-charts v0.0.0-20241111111801-09752b52215b/go.mod h1:qmbBEgAQOiY/2M4IJ0LZaGpbV1JGxlVoDiiuFs7kOqI=
codeberg.org/wrenix/helm-charts v0.0.0-20241106223712-cdddf6b09b90 h1:s7Q3qnQfADdmPjsC4El3llNvLd4jo0h7Einq1c5i7nk=
codeberg.org/wrenix/helm-charts v0.0.0-20241106223712-cdddf6b09b90/go.mod h1:Nd4pJ7oRNZvbFLxpC7qCQIHK3c0qf59wjq4ajMdJCjg=
codeberg.org/wrenix/helm-charts v0.0.0-20241108144325-1d57a623fc3e h1:Vr3B2r+j0Ry6WdXdlzZz+PCbjVBW5BS9qRf1LiX5uA4=
codeberg.org/wrenix/helm-charts v0.0.0-20241108144325-1d57a623fc3e/go.mod h1:Nd4pJ7oRNZvbFLxpC7qCQIHK3c0qf59wjq4ajMdJCjg=
git.chaos.fyi/wrenix/flux-charts v0.0.0-20250401222947-c5bf68c60cbd h1:X2MHLIDWDShwtmbTuWCXjWOae10JkiaxSc3x8El3KOs=
git.chaos.fyi/wrenix/flux-charts v0.0.0-20250401222947-c5bf68c60cbd/go.mod h1:BYSJakg99gvgKPQrY1c/QwLKz+zJ8sMtED0gRc+4bIE=
git.chaos.fyi/wrenix/helm-charts v0.0.0-20250404084343-83eb4bb9252b h1:FN9OZiGFwGisUC91+51IsA/l8zb1AvjzjDqR5ZTS1bk=
git.chaos.fyi/wrenix/helm-charts v0.0.0-20250404084343-83eb4bb9252b/go.mod h1:yQ55FaIwEKAdsKKKkssrXjEO88V6S7tp00fT/UVSadU=
github.com/imfing/hextra v0.8.6 h1:fpOqzcUs26Lc/ZzowYSBcnpe00d/aZw4HhiHP7ycSks=
github.com/imfing/hextra v0.8.6/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
github.com/imfing/hextra v0.9.7 h1:Zg5n24us36Bn/S/5mEUPkRW6uwE6vHHEqWSgN0bPXaM=
github.com/imfing/hextra v0.9.7/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=

111
hugo.yaml Normal file
View file

@ -0,0 +1,111 @@
baseURL: https://wrenix.eu/
languageCode: de-de
title: WrenIX
enableRobotsTXT: true
enableGitInfo: true
defaultContentLanguage: de
languages:
de:
languageName: Deutsch
en:
languageName: English
markup:
goldmark:
renderer:
unsafe: true
highlight:
noClasses: false
module:
mounts:
- source: content
target: content
imports:
- path: github.com/imfing/hextra
- path: "git.chaos.fyi/wrenix/helm-charts"
mounts:
- source: "README.md"
target: content/docs/helm-charts/_index.md
- source: "."
target: "content/docs/helm-charts"
includeFiles: [ "*/README.md" ]
- path: "git.chaos.fyi/wrenix/flux-charts"
mounts:
- source: "README.md"
target: content/docs/flux-charts/_index.md
# extra docs (e.g. for flux, infra and mycloud)
- source: "docs"
target: content/docs/flux-charts/
includeFiles:
- "**/*.md"
# base
- source: "base/README.md"
target: content/docs/flux-charts/base/README.md
- source: "base/docs"
target: content/docs/flux-charts/base/
includeFiles:
- "*.md"
# all components
- source: "."
target: content/docs/flux-charts/components/
includeFiles:
- "_index.md"
- "infra-*/*.md"
- "mycloud-*/*.md"
enableInlineShortcodes: true
menu:
main:
- name: Blog
pageRef: /blog
weight: 1
- name: Docs
pageRef: /docs
weight: 2
- name: About Me
pageRef: /about
weight: 3
- name: Search
weight: 4
params:
type: search
- name: RSS
weight: 5
pageRef: /blog/index.xml
params:
icon: rss
- name: Mastodon
weight: 6
url: "https://social.chaos.fyi/@wrenix"
params:
icon: mastodon
- name: git
weight: 7
url: "https://git.chaos.fyi/wrenix"
params:
icon: git
params:
navbar:
displayTitle: true
displayLogo: true
logo:
path: /images/avatar.png
link: /blog
footer:
enable: true
displayCopyright: false
displayPoweredBy: false
editURL:
enable: true
base: "https://git.chaos.fyi/wrenix/wrenix.eu/_edit/main/content"
blog:
list:
displayTags: true

1
i18n/de.yaml Normal file
View file

@ -0,0 +1 @@
editThisPage: "Diese Seite bearbeiten →"

1
i18n/en.yaml Normal file
View file

@ -0,0 +1 @@
editThisPage: "Edit this page →"

View file

@ -0,0 +1,38 @@
{{- $enableFooterSwitches := .Scratch.Get "enableFooterSwitches" | default false -}}
{{- $displayThemeToggle := site.Params.theme.displayToggle | default true -}}
{{- $copyright := (T "copyright") | default "© 2024 Hextra." -}}
{{- $poweredBy := (T "poweredBy") | default "Powered by Hextra" -}}
{{- $footerWidth := "hx-max-w-screen-xl" -}}
{{- with .Site.Params.footer.width -}}
{{ if eq . "wide" -}}
{{ $footerWidth = "hx-max-w-[90rem]" -}}
{{ else if eq . "full" -}}
{{ $footerWidth = "max-w-full" -}}
{{ end -}}
{{- end -}}
<footer class="hextra-footer hx-bg-gray-100 hx-pb-[env(safe-area-inset-bottom)] dark:hx-bg-neutral-900 print:hx-bg-transparent">
{{- if $enableFooterSwitches -}}
<div class="hx-mx-auto hx-flex hx-gap-2 hx-py-2 hx-px-4 {{ $footerWidth }}">
{{- partial "language-switch.html" (dict "context" .) -}}
{{- with $displayThemeToggle }}{{ partial "theme-toggle.html" }}{{ end -}}
</div>
{{- if or hugo.IsMultilingual $displayThemeToggle -}}
<hr class="dark:hx-border-neutral-800" />
{{- end -}}
{{- end -}}
</footer>
{{- define "theme-credit" -}}
<a class="hx-flex hx-text-sm hx-items-center hx-gap-1 hx-text-current" target="_blank" rel="noopener noreferrer" title="Hextra GitHub Homepage" href="https://github.com/imfing/hextra">
<span>
{{- . | markdownify -}}
{{- if strings.Contains . "Hextra" -}}
{{- partial "utils/icon.html" (dict "name" "hextra" "attributes" `height=1em class="hx-inline-block ltr:hx-ml-1 rtl:hx-mr-1 hx-align-[-2.5px]"`) -}}
{{- end -}}
</span>
</a>
{{- end -}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

3
static/favicon-dark.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 117 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

3
static/favicon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

1
static/site.webmanifest Normal file
View file

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

View file

@ -1 +0,0 @@
themes/terminimal/templates

0
themes/.keep Normal file
View file

@ -1 +0,0 @@
Subproject commit 910e50b824c898fc9641ab7910ce4a984e97040f