Molecule 7/7: ansible_remote_tmp fix
Test & Deploy Hugo Docker CMS / test-and-deploy (push) Failing after 4m30s
Test & Deploy Hugo Docker CMS / test-and-deploy (push) Failing after 4m30s
This commit is contained in:
@@ -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/
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
@@ -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"
|
||||||
|
|||||||
@@ -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" . }}
|
||||||
|
|||||||
@@ -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 }}">
|
||||||
|
|||||||
@@ -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,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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+18
-1
@@ -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>
|
||||||
|
|||||||
@@ -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,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">
|
||||||
|
|||||||
+1
@@ -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,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,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">
|
||||||
|
|||||||
@@ -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,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,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,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>
|
||||||
|
|||||||
@@ -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,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,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">
|
||||||
|
|||||||
@@ -22,17 +22,34 @@ So geht’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,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">
|
||||||
|
|||||||
Reference in New Issue
Block a user