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
|
||||
- site
|
||||
- site/assets/css
|
||||
- site/assets/js
|
||||
- site/assets/js/search.js
|
||||
- site/layouts/_default
|
||||
- site/layouts/partials
|
||||
- Caddyfile
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
- content
|
||||
- crt
|
||||
- site/assets/css
|
||||
- site/assets/js
|
||||
- site/layouts/_default
|
||||
- site/layouts/partials
|
||||
- site/static
|
||||
@@ -36,6 +37,12 @@
|
||||
dest: "{{ deploy_path }}/site/assets/css/main.css"
|
||||
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
|
||||
ansible.builtin.copy:
|
||||
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 {
|
||||
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
|
||||
# Auto-Frontmatter für Hugo 0.165+
|
||||
# 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"
|
||||
PAGEFIND_DIR="/src/.pagefind"
|
||||
PAGEFIND_BIN="$PAGEFIND_DIR/pagefind"
|
||||
PAGEFIND_VERSION="v1.5.2"
|
||||
|
||||
for md in "$CONTENT_DIR"/*.md; do
|
||||
[ -f "$md" ] || continue
|
||||
@@ -29,10 +33,56 @@ for md in "$CONTENT_DIR"/*.md; do
|
||||
fi
|
||||
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 \
|
||||
--bind=0.0.0.0 \
|
||||
--port=1313 \
|
||||
--disableFastRender \
|
||||
--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>
|
||||
<body>
|
||||
{{ partial "header.html" . }}
|
||||
<main>
|
||||
<main data-pagefind-body>
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
{{ partial "footer.html" . }}
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
{{ $css := resources.Get "css/main.css" | resources.Minify }}
|
||||
<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 -->
|
||||
{{ with .OutputFormats.Get "rss" }}
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" href="{{ .RelPermalink }}">
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
<header>
|
||||
<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 }}
|
||||
<nav aria-label="Breadcrumb">
|
||||
<a href="/">← Start</a>
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -20,17 +20,34 @@ Benötigte …">
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -20,17 +20,34 @@ Allgemeine …">
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<h1>Hugo Docker CMS</h1>
|
||||
<p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<description>Markdown-Dateien einfach in content/ ablegen.</description>
|
||||
<generator>Hugo 0.165.0</generator>
|
||||
<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"/>
|
||||
|
||||
<item>
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<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>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<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>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<h1>Tags</h1>
|
||||
<p class="subtitle">Markdown-Dateien einfach in content/ ablegen.</p>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<description>Markdown-Dateien einfach in content/ ablegen.</description>
|
||||
<generator>Hugo 0.165.0</generator>
|
||||
<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"/>
|
||||
|
||||
</channel>
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -22,17 +22,34 @@ So geht’s # Neue Seite …">
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
@@ -18,17 +18,34 @@
|
||||
|
||||
|
||||
|
||||
<script src="/js/search.min.868f9708373e89ca72730cc71884718dc463b495c2a72c24a6d6f48e64000709.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<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">
|
||||
<a href="/">← Start</a>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<main data-pagefind-body>
|
||||
|
||||
<article>
|
||||
<header class="article-header">
|
||||
|
||||
Reference in New Issue
Block a user