Molecule 7/7: ansible_remote_tmp fix
Test & Deploy Hugo Docker CMS / test-and-deploy (push) Failing after 4m30s

This commit is contained in:
jonnybravo
2026-09-10 09:37:39 +02:00
parent a62b6d36f8
commit bb3ce30b1a
29 changed files with 591 additions and 23 deletions
+8
View File
@@ -0,0 +1,8 @@
# Pagefind: heruntergeladenes Binary (wird vom Entrypoint installiert)
site/.pagefind/
# Pagefind: generierter Suchindex (wird beim Container-Start neu erzeugt)
site/public/pagefind/
# Hugo Cache
site/resources/
+2
View File
@@ -13,6 +13,8 @@
- crt - crt
- site - site
- site/assets/css - site/assets/css
- site/assets/js
- site/assets/js/search.js
- site/layouts/_default - site/layouts/_default
- site/layouts/partials - site/layouts/partials
- Caddyfile - Caddyfile
+7
View File
@@ -12,6 +12,7 @@
- content - content
- crt - crt
- site/assets/css - site/assets/css
- site/assets/js
- site/layouts/_default - site/layouts/_default
- site/layouts/partials - site/layouts/partials
- site/static - site/static
@@ -36,6 +37,12 @@
dest: "{{ deploy_path }}/site/assets/css/main.css" dest: "{{ deploy_path }}/site/assets/css/main.css"
mode: "0644" mode: "0644"
- name: search.js kopieren
ansible.builtin.copy:
src: "{{ project_root }}/site/assets/js/"
dest: "{{ deploy_path }}/site/assets/js/"
mode: "0644"
- name: Entrypoint kopieren und ausführbar machen - name: Entrypoint kopieren und ausführbar machen
ansible.builtin.copy: ansible.builtin.copy:
src: "{{ project_root }}/site/entrypoint.sh" src: "{{ project_root }}/site/entrypoint.sh"
+109
View File
@@ -73,6 +73,115 @@ header {
} }
} }
/* ---- Suche (Pagefind) ---- */
.search {
position: relative;
flex: 1 1 auto;
max-width: 360px;
min-width: 160px;
input[type="search"] {
width: 100%;
padding: 0.45rem 0.9rem;
font-size: 0.9rem;
font-family: inherit;
color: var(--text);
background: var(--card);
border: 1px solid var(--border);
border-radius: 999px;
outline: none;
transition: border-color 0.15s, box-shadow 0.15s;
&::placeholder { color: var(--muted); }
&:focus {
border-color: var(--accent);
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 20%, transparent);
}
&::-webkit-search-cancel-button { cursor: pointer; }
}
}
.search-results {
position: absolute;
top: calc(100% + 0.5rem);
left: 0;
right: 0;
z-index: 50;
max-height: 70vh;
overflow-y: auto;
background: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 0.5rem;
box-shadow: 0 12px 32px oklch(0 0 0 / 0.18);
&[hidden] { display: none; }
}
.search-item {
display: block;
padding: 0.6rem 0.75rem;
border-radius: calc(var(--radius) - 2px);
text-decoration: none;
&:hover { background: var(--card-h); }
}
.search-title {
display: block;
color: var(--text);
font-weight: 600;
font-size: 0.9rem;
}
.search-excerpt {
display: block;
color: var(--muted);
font-size: 0.8rem;
margin-top: 0.15rem;
line-height: 1.5;
mark {
background: color-mix(in oklab, var(--accent) 30%, transparent);
color: var(--text);
border-radius: 2px;
padding: 0 0.1em;
}
}
.search-sub {
list-style: none;
margin: 0.25rem 0 0.5rem;
padding-left: 0.75rem;
border-left: 2px solid var(--border);
li {
margin: 0.15rem 0;
a {
display: block;
padding: 0.25rem 0.5rem;
border-radius: calc(var(--radius) - 2px);
color: var(--muted);
font-size: 0.8rem;
text-decoration: none;
&:hover { background: var(--card-h); color: var(--text); }
}
.search-excerpt { font-size: 0.75rem; }
}
}
.search-empty {
padding: 0.75rem;
color: var(--muted);
font-size: 0.85rem;
text-align: center;
}
/* ---- Footer ---- */ /* ---- Footer ---- */
footer { footer {
margin-top: 3rem; margin-top: 3rem;
+103
View File
@@ -0,0 +1,103 @@
(function () {
"use strict";
const input = document.getElementById("search-input");
const results = document.getElementById("search-results");
if (!input || !results) return;
let pagefind = null;
let timer = null;
async function getPagefind() {
if (!pagefind) pagefind = await import("/pagefind/pagefind.js");
return pagefind;
}
function escapeHtml(str) {
const div = document.createElement("div");
div.textContent = str;
return div.innerHTML;
}
function render(items) {
if (!items.length) {
results.innerHTML = '<p class="search-empty">Keine Treffer.</p>';
results.hidden = false;
return;
}
results.innerHTML = items
.map((it) => {
// excerpt enthält bereits <mark> von Pagefind – als HTML rendern
const excerpt = it.excerpt
? `<span class="search-excerpt">${it.excerpt}</span>`
: "";
const sub = (it.sub_results || [])
.slice(0, 3)
.map(
(s) =>
`<li><a href="${s.url}">${escapeHtml(s.title)}</a>` +
(s.excerpt ? `<span class="search-excerpt">${s.excerpt}</span>` : "") +
`</li>`
)
.join("");
return (
`<a class="search-item" href="${it.url}">` +
`<span class="search-title">${escapeHtml(it.title)}</span>${excerpt}</a>` +
(sub ? `<ul class="search-sub">${sub}</ul>` : "")
);
})
.join("");
results.hidden = false;
}
async function doSearch(query) {
query = query.trim();
if (query.length < 2) {
results.hidden = true;
results.innerHTML = "";
return;
}
try {
const pf = await getPagefind();
const search = await pf.search(query);
const items = [];
for (const res of search.results.slice(0, 8)) {
const data = await res.data();
items.push({
url: data.url,
title: (data.meta && data.meta.title) || data.url,
excerpt: data.excerpt,
sub_results: (data.sub_results || []).map((s) => ({
url: s.url,
title: s.title,
excerpt: s.excerpt,
})),
});
}
render(items);
} catch (e) {
results.innerHTML = '<p class="search-empty">Suche nicht verfügbar.</p>';
results.hidden = false;
}
}
input.addEventListener("input", () => {
clearTimeout(timer);
timer = setTimeout(() => doSearch(input.value), 150);
});
input.addEventListener("focus", () => {
if (input.value.trim().length >= 2) doSearch(input.value);
});
document.addEventListener("click", (e) => {
if (!e.target.closest(".search")) results.hidden = true;
});
document.addEventListener("keydown", (e) => {
if (e.key === "Escape") {
results.hidden = true;
input.blur();
}
});
})();
+52 -2
View File
@@ -1,8 +1,12 @@
#!/bin/sh #!/bin/sh
# Auto-Frontmatter für Hugo 0.165+ # Auto-Frontmatter für Hugo 0.165+
# Fügt fehlenden --- Titel-Block in .md-Dateien ein. # Fügt fehlenden --- Titel-Block in .md-Dateien ein.
# Installiert zusätzlich Pagefind und hält den Suchindex im Watch-Modus aktuell.
CONTENT_DIR="/src/content" CONTENT_DIR="/src/content"
PAGEFIND_DIR="/src/.pagefind"
PAGEFIND_BIN="$PAGEFIND_DIR/pagefind"
PAGEFIND_VERSION="v1.5.2"
for md in "$CONTENT_DIR"/*.md; do for md in "$CONTENT_DIR"/*.md; do
[ -f "$md" ] || continue [ -f "$md" ] || continue
@@ -29,10 +33,56 @@ for md in "$CONTENT_DIR"/*.md; do
fi fi
done done
exec hugo server \ # ── Pagefind installieren (einmalig, persistent via site-Mount) ──
if [ ! -x "$PAGEFIND_BIN" ]; then
echo "[pagefind] installiere ${PAGEFIND_VERSION} ..."
mkdir -p "$PAGEFIND_DIR"
wget -q -O /tmp/pagefind.tar.gz \
"https://github.com/CloudCannon/pagefind/releases/download/${PAGEFIND_VERSION}/pagefind-${PAGEFIND_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
&& tar -xzf /tmp/pagefind.tar.gz -C "$PAGEFIND_DIR" \
&& chmod +x "$PAGEFIND_BIN" \
&& rm -f /tmp/pagefind.tar.gz \
&& echo "[pagefind] installiert: $("$PAGEFIND_BIN" --version 2>&1 | head -1)"
fi
# ── Pagefind-Index (neu) bauen ──
build_pagefind() {
if [ -x "$PAGEFIND_BIN" ] && [ -d /src/public ]; then
"$PAGEFIND_BIN" --site /src/public --output-subdir pagefind >/dev/null 2>&1 \
&& echo "[pagefind] Index aktualisiert"
fi
}
# Hugo im Hintergrund starten (Watch-Modus)
hugo server \
--watch \ --watch \
--bind=0.0.0.0 \ --bind=0.0.0.0 \
--port=1313 \ --port=1313 \
--disableFastRender \ --disableFastRender \
--baseURL=https://localhost:5443/ \ --baseURL=https://localhost:5443/ \
--renderStaticToDisk --renderStaticToDisk &
HUGO_PID=$!
# Warten bis der erste Build fertig ist, dann initial indizieren
i=0
while [ $i -lt 60 ]; do
[ -f /src/public/index.html ] && break
sleep 1
i=$((i + 1))
done
build_pagefind
# ── Watch-Loop: Pagefind neu bauen, wenn sich HTML in public ändert ──
PAGEFIND_MARKER=/tmp/pagefind.marker
touch "$PAGEFIND_MARKER"
while true; do
sleep 2
if find /src/public -name '*.html' -newer "$PAGEFIND_MARKER" 2>/dev/null | grep -q .; then
touch "$PAGEFIND_MARKER"
build_pagefind
fi
done &
# Hugo im Vordergrund halten; bei dessen Ende den Container beenden
wait "$HUGO_PID"
+1 -1
View File
@@ -4,7 +4,7 @@
</head> </head>
<body> <body>
{{ partial "header.html" . }} {{ partial "header.html" . }}
<main> <main data-pagefind-body>
{{ block "main" . }}{{ end }} {{ block "main" . }}{{ end }}
</main> </main>
{{ partial "footer.html" . }} {{ partial "footer.html" . }}
+5
View File
@@ -14,6 +14,11 @@
{{ $css := resources.Get "css/main.css" | resources.Minify }} {{ $css := resources.Get "css/main.css" | resources.Minify }}
<link rel="stylesheet" href="{{ $css.RelPermalink }}"> <link rel="stylesheet" href="{{ $css.RelPermalink }}">
<!-- Suche (Pagefind) -->
{{ $js := resources.Get "js/search.js" | resources.Minify | resources.Fingerprint }}
<script src="{{ $js.RelPermalink }}" defer></script>
<!-- RSS --> <!-- RSS -->
{{ with .OutputFormats.Get "rss" }} {{ with .OutputFormats.Get "rss" }}
<link rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" href="{{ .RelPermalink }}"> <link rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" href="{{ .RelPermalink }}">
+11
View File
@@ -1,5 +1,16 @@
<header> <header>
<a href="/" class="logo">{{ .Site.Title }}</a> <a href="/" class="logo">{{ .Site.Title }}</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
{{ if not .IsHome }} {{ if not .IsHome }}
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -20,17 +20,34 @@ Benötigte …">
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -20,17 +20,34 @@ Allgemeine …">
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+1 -1
View File
File diff suppressed because one or more lines are too long
+18 -1
View File
@@ -19,15 +19,32 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
<link rel="alternate" type="application/rss+xml" title="Hugo Docker CMS" href="/index.xml"> <link rel="alternate" type="application/rss+xml" title="Hugo Docker CMS" href="/index.xml">
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
</header> </header>
<main>
<main data-pagefind-body>
<h1>Hugo Docker CMS</h1> <h1>Hugo Docker CMS</h1>
<p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p> <p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p>
+1 -1
View File
@@ -6,7 +6,7 @@
<description>Markdown-Dateien einfach in content/ ablegen.</description> <description>Markdown-Dateien einfach in content/ ablegen.</description>
<generator>Hugo 0.165.0</generator> <generator>Hugo 0.165.0</generator>
<language>de</language> <language>de</language>
<lastBuildDate>Tue, 08 Sep 2026 08:07:00 +0000</lastBuildDate> <lastBuildDate>Thu, 10 Sep 2026 07:28:09 +0000</lastBuildDate>
<atom:link href="https://localhost:1313/index.xml" rel="self" type="application/rss+xml"/> <atom:link href="https://localhost:1313/index.xml" rel="self" type="application/rss+xml"/>
<item> <item>
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
@@ -0,0 +1 @@
(function(){"use strict";const t=document.getElementById("search-input"),e=document.getElementById("search-results");if(!t||!e)return;let n=null,s=null;async function a(){return n||(n=await import("/pagefind/pagefind.js")),n}function o(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function r(t){if(!t.length){e.innerHTML='<p class="search-empty">Keine Treffer.</p>',e.hidden=!1;return}e.innerHTML=t.map(e=>{const n=e.excerpt?`<span class="search-excerpt">${e.excerpt}</span>`:"",t=(e.sub_results||[]).slice(0,3).map(e=>`<li><a href="${e.url}">${o(e.title)}</a>`+(e.excerpt?`<span class="search-excerpt">${e.excerpt}</span>`:"")+`</li>`).join("");return`<a class="search-item" href="${e.url}">`+`<span class="search-title">${o(e.title)}</span>${n}</a>`+(t?`<ul class="search-sub">${t}</ul>`:"")}).join(""),e.hidden=!1}async function i(t){if(t=t.trim(),t.length<2){e.hidden=!0,e.innerHTML="";return}try{const n=await a(),s=await n.search(t),e=[];for(const n of s.results.slice(0,8)){const t=await n.data();e.push({url:t.url,title:t.meta&&t.meta.title||t.url,excerpt:t.excerpt,sub_results:(t.sub_results||[]).map(e=>({url:e.url,title:e.title,excerpt:e.excerpt}))})}r(e)}catch{e.innerHTML='<p class="search-empty">Suche nicht verfügbar.</p>',e.hidden=!1}}t.addEventListener("input",()=>{clearTimeout(s),s=setTimeout(()=>i(t.value),150)}),t.addEventListener("focus",()=>{t.value.trim().length>=2&&i(t.value)}),document.addEventListener("click",t=>{t.target.closest(".search")||(e.hidden=!0)}),document.addEventListener("keydown",n=>{n.key==="Escape"&&(e.hidden=!0,t.blur())})})()
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -20,17 +20,34 @@ Zwillingswadenmuskel dehnen S166 Zwillingswadenmuskel dehen S164 Beste Dhenübun
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,19 +18,36 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
<link rel="alternate" type="application/rss+xml" title="Hugo Docker CMS" href="/tags/index.xml"> <link rel="alternate" type="application/rss+xml" title="Hugo Docker CMS" href="/tags/index.xml">
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<h1>Tags</h1> <h1>Tags</h1>
<p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p> <p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p>
+1 -1
View File
@@ -6,7 +6,7 @@
<description>Markdown-Dateien einfach in content/ ablegen.</description> <description>Markdown-Dateien einfach in content/ ablegen.</description>
<generator>Hugo 0.165.0</generator> <generator>Hugo 0.165.0</generator>
<language>de</language> <language>de</language>
<lastBuildDate>Tue, 08 Sep 2026 08:07:00 +0000</lastBuildDate> <lastBuildDate>Thu, 10 Sep 2026 07:26:03 +0000</lastBuildDate>
<atom:link href="https://localhost:1313/index.xml" rel="self" type="application/rss+xml"/> <atom:link href="https://localhost:1313/index.xml" rel="self" type="application/rss+xml"/>
</channel> </channel>
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -22,17 +22,34 @@ So geht&rsquo;s # Neue Seite …">
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">
+18 -1
View File
@@ -18,17 +18,34 @@
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
</head> </head>
<body> <body>
<header> <header>
<a href="/" class="logo">Hugo Docker CMS</a> <a href="/" class="logo">Hugo Docker CMS</a>
<div class="search">
<input
type="search"
id="search-input"
placeholder="Suchen…"
autocomplete="off"
aria-label="Suche"
aria-controls="search-results"
aria-expanded="false">
<div id="search-results" class="search-results" hidden></div>
</div>
<nav aria-label="Breadcrumb"> <nav aria-label="Breadcrumb">
<a href="/">← Start</a> <a href="/">← Start</a>
</nav> </nav>
</header> </header>
<main>
<main data-pagefind-body>
<article> <article>
<header class="article-header"> <header class="article-header">