1
0

Compare commits

...

2 Commits

Author SHA1 Message Date
ed58de749c Changes to be committed:
deleted:    startup.sh
2025-12-03 13:14:34 +01:00
d7b5585666 with nginx as webbrowser running 2025-12-03 13:14:23 +01:00
44 changed files with 21 additions and 2129 deletions

View File

@@ -1,18 +0,0 @@
# Pull changes
git pull origin main
# Rebuild
docker compose exec -it hugo hugo --cleanDestinationDir
# Add
git add .
# commit
git commit -m "Rebuild"
# Push
git push origin main
# Rebuild
docker compose exec -it hugo hugo --cleanDestinationDir

View File

@@ -2,15 +2,34 @@ services:
hugo: hugo:
image: hugomods/hugo:0.135.0 image: hugomods/hugo:0.135.0
container_name: hugo container_name: hugo
user: 1000:1000 restart: no
volumes: volumes:
- ./:/src - ./:/src
- static-site:/src/public
#ports: #ports:
#- "1313:1313" #- "1313:1313"
command: server --bind 0.0.0.0 command: ["hugo", "--cleanDestinationDir", "--baseURL", "https://blog.fuhlig.de/", "--ignoreCache"]
#command: ["hugo"]
networks: networks:
- net - net
nginx:
image: nginx:alpine
container_name: blog
#ports:
#- "80:80"
volumes:
- static-site:/usr/share/nginx/html:ro
depends_on:
- hugo
restart: unless-stopped
networks:
- net
volumes:
static-site:
name: blog.data
networks: networks:
net: net:
name: docker_public name: docker_public

View File

@@ -1,160 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>404 Page not found :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/404.html" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="404 Page not found">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/404.html" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">404 — Page not found...</h1>
<div class="post-content">
<a href="https://blog.fuhlig.de/">Back to home page&nbsp;</a>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

View File

@@ -1,3 +0,0 @@
(()=>{var t=document.querySelector(".container"),e=document.querySelectorAll(".menu");document.body.addEventListener("click",()=>{e.forEach(e=>{e.classList.contains("open")&&e.classList.remove("open")})}),window.addEventListener("resize",()=>{e.forEach(e=>{e.classList.remove("open")})}),e.forEach(n=>{const o=n.querySelector(".menu__trigger"),s=n.querySelector(".menu__dropdown");o.addEventListener("click",o=>{o.stopPropagation(),n.classList.contains("open")?n.classList.remove("open"):(e.forEach(e=>e.classList.remove("open")),n.classList.add("open")),s.getBoundingClientRect().right>t.getBoundingClientRect().right&&(s.style.left="auto",s.style.right=0)}),s.addEventListener("click",e=>e.stopPropagation())})})(),(()=>{var e=document.querySelectorAll(".chroma code[data-lang]");for(const n of e){const s=n.parentElement,o=n.innerText.split(`
`).filter(Boolean).join(`
`),t=document.createElement("div"),i=n.dataset.lang;if(t.classList.add("code-title"),t.innerText=i,navigator.clipboard!==void 0){const e=document.createElement("button");e.classList.add("copy-button"),e.innerText="Copy",e.addEventListener("click",()=>{e.innerText="Copied",setTimeout(()=>{e.innerText="Copy"},1e3),navigator.clipboard.writeText(o)}),t.append(e)}s.closest(".highlight").prepend(t)}})()

View File

@@ -1,170 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Categories :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/categories/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Categories">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/categories/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="/categories/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="terms">
<h1>Categories</h1>
<ul>
<li>
<a class="terms-title" href="https://blog.fuhlig.de/categories/webdev/">webdev [1]</a>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on TechnicalBlog</title>
<link>https://blog.fuhlig.de/categories/</link>
<description>Recent content in Categories on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/categories/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Webdev</title>
<link>https://blog.fuhlig.de/categories/webdev/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/categories/webdev/</guid>
<description></description>
</item>
</channel>
</rss>

View File

@@ -1,192 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Webdev :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/categories/webdev/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Webdev">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/categories/webdev/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="/categories/webdev/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<h1>Posts for: #Webdev</h1>
<div class="posts">
<article class="post on-list">
<h1 class="post-title">
<a href="https://blog.fuhlig.de/tags/">Tags</a>
</h1>
<div class="post-meta"><time class="post-date">2025-12-03</time></div>
<div class="post-content">
Here you can find entry quicker thru my tags
</div>
<div>
<a class="read-more button inline" href="/tags/">[]</a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Webdev on TechnicalBlog</title>
<link>https://blog.fuhlig.de/categories/webdev/</link>
<description>Recent content in Webdev on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/categories/webdev/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Tags</title>
<link>https://blog.fuhlig.de/tags/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/tags/</guid>
<description>Here you can find entry quicker thru my tags</description>
</item>
</channel>
</rss>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://blog.fuhlig.de/categories/webdev/</title>
<link rel="canonical" href="https://blog.fuhlig.de/categories/webdev/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://blog.fuhlig.de/categories/webdev/">
</head>
</html>

View File

@@ -1 +0,0 @@
.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:8px 18px;text-decoration:none;text-align:center;font:inherit;font-weight:700;appearance:none;cursor:pointer;outline:none}button.outline,.button.outline,a.button.outline{background:0 0;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:0 0;font-size:var(--font-size)}button.small,.button.small,a.button.small{font-size:calc(var(--font-size) * .8)}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.button.inline{background:0 0;color:var(--accent);padding:initial;margin:initial;border:initial;font-weight:initial;text-decoration:none}a.button.inline:active,a.button.inline:hover{background:0 0}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;background:0 0;box-shadow:none;padding:0;max-width:100%;text-decoration:none}

View File

@@ -1 +0,0 @@
:root{--code-border:color-mix(in srgb, var(--foreground) 10%, transparent)}pre:not(.chroma){padding:10px}pre.chroma{margin:0;padding:10px 0;color:var(--foreground)}pre code{color:var(--foreground);border:none}code{color:var(--accent);text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}.highlight{position:relative;margin:20px 0;border:1px solid var(--code-border)}.highlight pre{border:none}.code-title{display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--foreground) 5%,transparent);border-bottom:1px solid var(--code-border);color:var(--comment);text-transform:uppercase;font-size:calc(var(--font-size) * .8);padding:6px 10px;line-height:1}.copy-button{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);appearance:none;cursor:pointer;outline:none}.code-title .copy-button{z-index:1;background:color-mix(in srgb,var(--foreground) 5%,var(--background))}.code-title:hover .copy-button{display:inline-block}.code-title .copy-button:hover{background:color-mix(in srgb,var(--accent) 10%,var(--background))}.collapsable-code{position:relative;width:100%;margin:20px 0;border:1px solid var(--accent);.highlight { margin: 0; }}.collapsable-code__title{display:inline-flex;align-items:center;flex:1;color:var(--accent);padding:3px 10px;font-size:calc(var(--font-size) * .9);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:var(--accent);border:1px solid var(--accent);border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code summary{color:var(--accent);padding:0 10px;cursor:pointer}.collapsable-code summary:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}

View File

@@ -1 +0,0 @@
@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-LatinExt.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:fira code;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/FiraCode-Latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

View File

@@ -1 +0,0 @@
.footer{padding:40px 0;flex-grow:0;opacity:.65}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;max-width:100%}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}@media(max-width:900px){.footer__inner{flex-direction:column}}

View File

@@ -1 +0,0 @@
body .gist .blob-num,body .gist .blob-code-inner{border:none}

View File

@@ -1 +0,0 @@
.header{display:flex;flex-direction:column;position:relative}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo::after{content:"";background:repeating-linear-gradient(90deg,var(--accent),var(--accent) 2px,transparent 0,transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:none;max-width:100%;text-decoration:none}.logo{display:flex;align-items:center;text-decoration:none;background:var(--accent);color:var(--background);font-weight:700;padding:5px 10px}@media print{.header{display:none}}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:none;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}.navigation-menu .spacer{flex-grow:1!important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0!important;color:var(--accent);user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:var(--background);box-shadow:0 10px var(--background),-10px 10px var(--background),10px 10px var(--background);color:var(--accent);border:2px solid var(--accent);margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:none}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}.menu--mobile .menu__trigger{color:var(--accent);border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer;display:none}.menu--mobile li{flex:none}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:var(--accent);border:2px solid;margin-left:5px;height:100%;padding:3px 8px;margin-bottom:0!important;position:relative;cursor:pointer}.menu--language-selector .menu__dropdown{left:auto;right:0}@media(max-width:684px){.navigation-menu{margin:0}.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}.menu--desktop{display:none}.menu--mobile .menu__trigger{display:block}.menu--mobile .menu__dropdown{left:auto;right:0}.menu--language-selector .menu__trigger{display:none}}

View File

@@ -1 +0,0 @@
.pagination{margin-top:50px}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:var(--background);color:color-mix(in srgb var(--foreground) 30%,transparent);font-size:calc(var(--font-size) * .8);text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{display:inline-flex;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:inherit;padding:0;appearance:none}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next .button__icon{margin-left:8px}.prev .button__icon{margin-right:8px}@media print{.pagination{display:none}}

View File

@@ -1 +0,0 @@
.index-content{margin:25px 0}.framed{border:1px solid var(--accent);padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;padding:30px 0}.post:not(:last-of-type){border-bottom:1px solid color-mix(in srgb,var(--foreground) 10%,transparent)}.post-meta{font-size:inherit;margin-bottom:10px;color:color-mix(in srgb,var(--foreground) 65%,transparent)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{position:relative;color:var(--accent);margin-top:0!important;margin-bottom:15px!important;padding-bottom:15px;border-bottom:3px dotted var(--accent);text-decoration:none!important}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted var(--accent)}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:inherit;color:var(--accent)}.table-of-contents{margin:40px 0}.post-content{margin-top:25px}.post-cover{margin:25px 0}.post ul{list-style:none}.post ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{position:absolute;color:var(--accent);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover .hanchor,h2:hover .hanchor,h3:hover .hanchor,h4:hover .hanchor,h5:hover .hanchor,h6:hover .hanchor{visibility:visible}.footnotes{color:color-mix(in srgb,var(--foreground) 50%,transparent)}.footnotes hr{background:color-mix(in srgb,var(--foreground) 50%,transparent)}@media(max-width:684px){.post-cover{padding:10px;border-width:10px}}

View File

@@ -1 +0,0 @@
:root{--first-tone:var(--accent);--second-tone:color-mix(in srgb, var(--accent) 70%, transparent);--comment:color-mix(in srgb, var(--foreground) 50%, transparent)}.bg{}.chroma{overflow:auto}.chroma .x{}.chroma .err{}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{width:100%;vertical-align:top;padding:0;margin:0;border:0}.chroma .lntd:first-child{width:auto}.chroma .lntd code{display:grid}.chroma .lntable{width:100%;border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:color-mix(in srgb,var(--foreground) 5%,transparent)!important}.chroma .lnt{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;padding:0 10px}.chroma .ln{color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.8em;padding:0 .4em 0 0}.chroma .line{display:flex;padding:0 10px}.chroma .k{color:var(--second-tone)}.chroma .kc{color:var(--second-tone)}.chroma .kd{color:var(--second-tone)}.chroma .kn{color:var(--second-tone)}.chroma .kp{color:var(--second-tone)}.chroma .kr{color:var(--second-tone)}.chroma .kt{color:var(--second-tone)}.chroma .n{color:var(--first-tone)}.chroma .na{color:var(--second-tone)}.chroma .nb{color:var(--first-tone)}.chroma .bp{color:var(--first-tone)}.chroma .nc{color:var(--foreground)}.chroma .no{color:var(--first-tone)}.chroma .nd{color:var(--first-tone)}.chroma .ni{color:var(--first-tone)}.chroma .ne{color:var(--first-tone)}.chroma .nf{color:var(--first-tone)}.chroma .fm{color:var(--first-tone)}.chroma .nl{color:var(--first-tone)}.chroma .nn{color:var(--first-tone)}.chroma .nx{color:var(--first-tone)}.chroma .py{color:var(--first-tone)}.chroma .nt{color:var(--first-tone)}.chroma .nv{color:var(--first-tone)}.chroma .vc{color:var(--first-tone)}.chroma .vg{color:var(--first-tone)}.chroma .vi{color:var(--first-tone)}.chroma .vm{color:var(--first-tone)}.chroma .l{}.chroma .ld{}.chroma .s{color:var(--foreground)}.chroma .sa{color:var(--foreground)}.chroma .sb{color:var(--foreground)}.chroma .sc{color:var(--foreground)}.chroma .dl{color:var(--foreground)}.chroma .sd{color:var(--foreground)}.chroma .s2{color:var(--foreground)}.chroma .se{color:var(--foreground)}.chroma .sh{color:var(--foreground)}.chroma .si{color:var(--foreground)}.chroma .sx{color:var(--foreground)}.chroma .sr{color:var(--foreground)}.chroma .s1{color:var(--foreground)}.chroma .ss{color:var(--foreground)}.chroma .m{color:var(--first-tone)}.chroma .mb{color:var(--first-tone)}.chroma .mf{color:var(--first-tone)}.chroma .mh{color:var(--first-tone)}.chroma .mi{color:var(--first-tone)}.chroma .il{color:var(--first-tone)}.chroma .mo{color:var(--first-tone)}.chroma .o{color:var(--foreground)}.chroma .ow{color:var(--foreground)}.chroma .p{color:var(--foreground)}.chroma .c{color:var(--comment)}.chroma .ch{color:var(--comment)}.chroma .cm{color:var(--comment)}.chroma .c1{color:var(--comment)}.chroma .cs{color:var(--comment)}.chroma .cp{color:var(--comment)}.chroma .cpf{color:var(--comment)}.chroma .g{}.chroma .gd{color:var(--first-tone)}.chroma .ge{}.chroma .gr{}.chroma .gh{}.chroma .gi{color:var(--second-tone)}.chroma .go{}.chroma .gp{}.chroma .gs{}.chroma .gu{}.chroma .gt{}.chroma .gl{}.chroma .w{}.chroma .language-php .cp{color:var(--foreground)}

View File

@@ -1,2 +0,0 @@
/* Placeholder file for your custom settings. */
/* You can get the color scheme variables from https://panr.github.io/terminal-css/ */

View File

@@ -1 +0,0 @@
.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:var(--accent)}.terms ul li:not(:empty)::before{content:"-";position:absolute;left:-20px;color:var(--accent)}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Binary file not shown.

View File

@@ -1,262 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="Hugo 0.135.0">
<title>TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="TechnicalBlog">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-12-02 00:00:00 &#43;0000 UTC" />
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="index-content ">
<h1 id="welcometomytechnicalblog">WelcomeToMyTechnicalBlog</h1>
</div>
<div class="posts">
<article class="post on-list">
<h2 class="post-title">
<a href="https://blog.fuhlig.de/posts/aboutme/">About Me</a>
</h2>
<div class="post-meta"><time class="post-date">2025-12-01</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h2 id="who-am-i">Who am I</h2>
<p>My name is Florian and I&rsquo;m 22 years old.
I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.
My company is midsized around 50 people working here.
I mainly want to post about what I learned, what inspires me.</p>
<p>Well I dont really, this just seemed like a great idea to waste some time.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/aboutme/">[]</a>
</div>
</article>
<article class="post on-list">
<h2 class="post-title">
<a href="https://blog.fuhlig.de/posts/whatimworkingoncurrently/">What am I currently working on</a>
</h2>
<div class="post-meta"><time class="post-date">2025-12-03</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h1 id="building-a-self-sustaining-infrastructure-a-two-server-docker-setup">Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup</h1>
<h2 id="overview">Overview</h2>
<p>Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.</p>
<h2 id="the-architecture">The Architecture</h2>
<h3 id="docker-host-server">Docker Host Server</h3>
<p>The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<ul>
<li><strong>Isolation</strong>: Each service runs in its own container with defined resources</li>
<li><strong>Portability</strong>: Services can be easily migrated or replicated</li>
<li><strong>Consistency</strong>: Docker Compose configurations ensure reproducible deployments</li>
</ul>
<p>The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/whatimworkingoncurrently/">[]</a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>WelcomeToMyTechnicalBlog on TechnicalBlog</title>
<link>https://blog.fuhlig.de/</link>
<description>Recent content in WelcomeToMyTechnicalBlog on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About Me</title>
<link>https://blog.fuhlig.de/posts/aboutme/</link>
<pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/aboutme/</guid>
<description>&lt;h2 id=&#34;who-am-i&#34;&gt;Who am I&lt;/h2&gt;&#xA;&lt;p&gt;My name is Florian and I&amp;rsquo;m 22 years old.&#xA;I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.&#xA;My company is midsized around 50 people working here.&#xA;I mainly want to post about what I learned, what inspires me.&lt;/p&gt;&#xA;&lt;p&gt;Well I dont really, this just seemed like a great idea to waste some time.&lt;/p&gt;</description>
</item>
<item>
<title>What am I currently working on</title>
<link>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</guid>
<description>&lt;h1 id=&#34;building-a-self-sustaining-infrastructure-a-two-server-docker-setup&#34;&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Creating a resilient, self-sustaining infrastructure doesn&amp;rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-architecture&#34;&gt;The Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;docker-host-server&#34;&gt;Docker Host Server&lt;/h3&gt;&#xA;&lt;p&gt;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: Each service runs in its own container with defined resources&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Portability&lt;/strong&gt;: Services can be easily migrated or replicated&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Consistency&lt;/strong&gt;: Docker Compose configurations ensure reproducible deployments&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.&lt;/p&gt;</description>
</item>
</channel>
</rss>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://blog.fuhlig.de/</title>
<link rel="canonical" href="https://blog.fuhlig.de/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://blog.fuhlig.de/">
</head>
</html>

View File

@@ -1,193 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>About Me :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Who am I My name is Florian and I&rsquo;m 22 years old. I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany. My company is midsized around 50 people working here. I mainly want to post about what I learned, what inspires me.
Well I dont really, this just seemed like a great idea to waste some time.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/posts/aboutme/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="About Me">
<meta property="og:description" content="Who am I My name is Florian and I&rsquo;m 22 years old. I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany. My company is midsized around 50 people working here. I mainly want to post about what I learned, what inspires me.
Well I dont really, this just seemed like a great idea to waste some time.
" />
<meta property="og:url" content="https://blog.fuhlig.de/posts/aboutme/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-12-01 00:00:00 &#43;0000 UTC" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.fuhlig.de/posts/aboutme/">About Me</a>
</h1>
<div class="post-meta"><time class="post-date">2025-12-01</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content"><div>
<h2 id="who-am-i">Who am I<a href="#who-am-i" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>My name is Florian and I&rsquo;m 22 years old.
I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.
My company is midsized around 50 people working here.
I mainly want to post about what I learned, what inspires me.</p>
<p>Well I dont really, this just seemed like a great idea to waste some time.</p>
</div></div>
</article>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,243 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Posts :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/posts/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Posts">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/posts/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="/posts/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="posts">
<article class="post on-list">
<h2 class="post-title">
<a href="https://blog.fuhlig.de/posts/aboutme/">About Me</a>
</h2>
<div class="post-meta"><time class="post-date">2025-12-01</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h2 id="who-am-i">Who am I</h2>
<p>My name is Florian and I&rsquo;m 22 years old.
I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.
My company is midsized around 50 people working here.
I mainly want to post about what I learned, what inspires me.</p>
<p>Well I dont really, this just seemed like a great idea to waste some time.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/aboutme/">[]</a>
</div>
</article>
<article class="post on-list">
<h2 class="post-title">
<a href="https://blog.fuhlig.de/posts/whatimworkingoncurrently/">What am I currently working on</a>
</h2>
<div class="post-meta"><time class="post-date">2025-12-03</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h1 id="building-a-self-sustaining-infrastructure-a-two-server-docker-setup">Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup</h1>
<h2 id="overview">Overview</h2>
<p>Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.</p>
<h2 id="the-architecture">The Architecture</h2>
<h3 id="docker-host-server">Docker Host Server</h3>
<p>The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<ul>
<li><strong>Isolation</strong>: Each service runs in its own container with defined resources</li>
<li><strong>Portability</strong>: Services can be easily migrated or replicated</li>
<li><strong>Consistency</strong>: Docker Compose configurations ensure reproducible deployments</li>
</ul>
<p>The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/whatimworkingoncurrently/">[]</a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Posts on TechnicalBlog</title>
<link>https://blog.fuhlig.de/posts/</link>
<description>Recent content in Posts on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About Me</title>
<link>https://blog.fuhlig.de/posts/aboutme/</link>
<pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/aboutme/</guid>
<description>&lt;h2 id=&#34;who-am-i&#34;&gt;Who am I&lt;/h2&gt;&#xA;&lt;p&gt;My name is Florian and I&amp;rsquo;m 22 years old.&#xA;I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.&#xA;My company is midsized around 50 people working here.&#xA;I mainly want to post about what I learned, what inspires me.&lt;/p&gt;&#xA;&lt;p&gt;Well I dont really, this just seemed like a great idea to waste some time.&lt;/p&gt;</description>
</item>
<item>
<title>What am I currently working on</title>
<link>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</guid>
<description>&lt;h1 id=&#34;building-a-self-sustaining-infrastructure-a-two-server-docker-setup&#34;&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Creating a resilient, self-sustaining infrastructure doesn&amp;rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-architecture&#34;&gt;The Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;docker-host-server&#34;&gt;Docker Host Server&lt;/h3&gt;&#xA;&lt;p&gt;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: Each service runs in its own container with defined resources&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Portability&lt;/strong&gt;: Services can be easily migrated or replicated&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Consistency&lt;/strong&gt;: Docker Compose configurations ensure reproducible deployments&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@@ -1,6 +0,0 @@
---
title: "About Me"
date: 2025-12-01
tags: ["blog"]
draft: false
---

View File

@@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://blog.fuhlig.de/posts/</title>
<link rel="canonical" href="https://blog.fuhlig.de/posts/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://blog.fuhlig.de/posts/">
</head>
</html>

View File

@@ -1,236 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>What am I currently working on :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup Overview Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.
The Architecture Docker Host Server The primary server runs all application workloads using Docker containers. This containerized approach provides:
Isolation: Each service runs in its own container with defined resources Portability: Services can be easily migrated or replicated Consistency: Docker Compose configurations ensure reproducible deployments The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/posts/whatimworkingoncurrently/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="What am I currently working on">
<meta property="og:description" content="Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup Overview Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.
The Architecture Docker Host Server The primary server runs all application workloads using Docker containers. This containerized approach provides:
Isolation: Each service runs in its own container with defined resources Portability: Services can be easily migrated or replicated Consistency: Docker Compose configurations ensure reproducible deployments The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.
" />
<meta property="og:url" content="https://blog.fuhlig.de/posts/whatimworkingoncurrently/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2025-12-03 00:00:00 &#43;0000 UTC" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://blog.fuhlig.de/posts/whatimworkingoncurrently/">What am I currently working on</a>
</h1>
<div class="post-meta"><time class="post-date">2025-12-03</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content"><div>
<h1 id="building-a-self-sustaining-infrastructure-a-two-server-docker-setup">Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup<a href="#building-a-self-sustaining-infrastructure-a-two-server-docker-setup" class="hanchor" ariaLabel="Anchor">#</a> </h1>
<h2 id="overview">Overview<a href="#overview" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.</p>
<h2 id="the-architecture">The Architecture<a href="#the-architecture" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<h3 id="docker-host-server">Docker Host Server<a href="#docker-host-server" class="hanchor" ariaLabel="Anchor">#</a> </h3>
<p>The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<ul>
<li><strong>Isolation</strong>: Each service runs in its own container with defined resources</li>
<li><strong>Portability</strong>: Services can be easily migrated or replicated</li>
<li><strong>Consistency</strong>: Docker Compose configurations ensure reproducible deployments</li>
</ul>
<p>The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.</p>
<h3 id="backup-storage-server">Backup Storage Server<a href="#backup-storage-server" class="hanchor" ariaLabel="Anchor">#</a> </h3>
<p>The secondary server serves as a dedicated backup repository with substantial storage capacity. This server is:</p>
<ul>
<li><strong>Isolated from the internet</strong>: No external access is permitted</li>
<li><strong>Secured via iptables</strong>: Firewall rules prevent unauthorized connections</li>
<li><strong>Connected via WireGuard VPN</strong>: Encrypted tunnel ensures secure communication between servers</li>
</ul>
<h2 id="security-through-network-segmentation">Security Through Network Segmentation<a href="#security-through-network-segmentation" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>The WireGuard VPN creates a secure, encrypted tunnel between the Docker host and backup server. This architecture provides several benefits:</p>
<ul>
<li>Private communication channel for backup operations</li>
<li>Zero trust model for the backup server (completely isolated from public internet)</li>
<li>Reduced risk of data exfiltration</li>
<li>Encrypted data transfer between servers</li>
</ul>
<h2 id="automated-backup-strategy">Automated Backup Strategy<a href="#automated-backup-strategy" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>Daily automated backups capture the critical components:</p>
<h3 id="database-backups">Database Backups<a href="#database-backups" class="hanchor" ariaLabel="Anchor">#</a> </h3>
<p>All databases are exported and stored, ensuring data consistency and point-in-time recovery capabilities.</p>
<h3 id="docker-volume-backups">Docker Volume Backups<a href="#docker-volume-backups" class="hanchor" ariaLabel="Anchor">#</a> </h3>
<p>Persistent data from Docker volumes is systematically backed up, including:</p>
<ul>
<li>Application configuration files</li>
<li>User-generated content</li>
<li>Service-specific data stores</li>
</ul>
<p>This comprehensive approach ensures that the entire infrastructure can be restored from backups, making the system truly self-sustaining.</p>
<h2 id="benefits-of-this-approach">Benefits of This Approach<a href="#benefits-of-this-approach" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p><strong>Resilience</strong>: Hardware failure on the Docker host doesn&rsquo;t result in data loss<br>
<strong>Security</strong>: Multi-layered security with network segmentation and minimal exposure<br>
<strong>Maintainability</strong>: Containerized services are easy to update and manage<br>
<strong>Scalability</strong>: Additional Docker hosts can connect to the same backup server<br>
<strong>Cost-effective</strong>: Self-hosted solution with predictable costs</p>
<h2 id="conclusion">Conclusion<a href="#conclusion" class="hanchor" ariaLabel="Anchor">#</a> </h2>
<p>This two-server architecture strikes an excellent balance between simplicity and robustness. By combining Docker containerization with a dedicated, secured backup server connected via WireGuard, you achieve enterprise-grade reliability without enterprise-level complexity. Daily automated backups provide peace of mind, while the security-first network design protects your data from external threats.</p>
</div></div>
</article>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://blog.fuhlig.de/</loc>
<lastmod>2025-12-02T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/posts/aboutme/</loc>
<lastmod>2025-12-01T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/tags/blog/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/categories/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/posts/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/tags/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/categories/webdev/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url>
</urlset>

View File

@@ -1,244 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Blog :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/tags/blog/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Blog">
<meta property="og:description" content="" />
<meta property="og:url" content="https://blog.fuhlig.de/tags/blog/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="/tags/blog/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<h1>Posts for: #Blog</h1>
<div class="posts">
<article class="post on-list">
<h1 class="post-title">
<a href="https://blog.fuhlig.de/posts/aboutme/">About Me</a>
</h1>
<div class="post-meta"><time class="post-date">2025-12-01</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h2 id="who-am-i">Who am I</h2>
<p>My name is Florian and I&rsquo;m 22 years old.
I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.
My company is midsized around 50 people working here.
I mainly want to post about what I learned, what inspires me.</p>
<p>Well I dont really, this just seemed like a great idea to waste some time.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/aboutme/">[]</a>
</div>
</article>
<article class="post on-list">
<h1 class="post-title">
<a href="https://blog.fuhlig.de/posts/whatimworkingoncurrently/">What am I currently working on</a>
</h1>
<div class="post-meta"><time class="post-date">2025-12-03</time></div>
<span class="post-tags">
#<a href="https://blog.fuhlig.de/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<h1 id="building-a-self-sustaining-infrastructure-a-two-server-docker-setup">Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup</h1>
<h2 id="overview">Overview</h2>
<p>Creating a resilient, self-sustaining infrastructure doesn&rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.</p>
<h2 id="the-architecture">The Architecture</h2>
<h3 id="docker-host-server">Docker Host Server</h3>
<p>The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<ul>
<li><strong>Isolation</strong>: Each service runs in its own container with defined resources</li>
<li><strong>Portability</strong>: Services can be easily migrated or replicated</li>
<li><strong>Consistency</strong>: Docker Compose configurations ensure reproducible deployments</li>
</ul>
<p>The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.</p>
</div>
<div>
<a class="read-more button inline" href="/posts/whatimworkingoncurrently/">[]</a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Blog on TechnicalBlog</title>
<link>https://blog.fuhlig.de/tags/blog/</link>
<description>Recent content in Blog on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/tags/blog/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About Me</title>
<link>https://blog.fuhlig.de/posts/aboutme/</link>
<pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/aboutme/</guid>
<description>&lt;h2 id=&#34;who-am-i&#34;&gt;Who am I&lt;/h2&gt;&#xA;&lt;p&gt;My name is Florian and I&amp;rsquo;m 22 years old.&#xA;I work as an IT Technican mainly with Linux Servers in Frankfurt, Germany.&#xA;My company is midsized around 50 people working here.&#xA;I mainly want to post about what I learned, what inspires me.&lt;/p&gt;&#xA;&lt;p&gt;Well I dont really, this just seemed like a great idea to waste some time.&lt;/p&gt;</description>
</item>
<item>
<title>What am I currently working on</title>
<link>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/posts/whatimworkingoncurrently/</guid>
<description>&lt;h1 id=&#34;building-a-self-sustaining-infrastructure-a-two-server-docker-setup&#34;&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Creating a resilient, self-sustaining infrastructure doesn&amp;rsquo;t require complex enterprise solutions. With two strategically configured servers and a well-thought-out backup strategy, you can achieve both reliability and security for your self-hosted applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-architecture&#34;&gt;The Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;docker-host-server&#34;&gt;Docker Host Server&lt;/h3&gt;&#xA;&lt;p&gt;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: Each service runs in its own container with defined resources&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Portability&lt;/strong&gt;: Services can be easily migrated or replicated&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Consistency&lt;/strong&gt;: Docker Compose configurations ensure reproducible deployments&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Docker host maintains minimal external exposure, with only essential ports opened to the internet. This reduces the attack surface while still providing necessary services.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://blog.fuhlig.de/tags/blog/</title>
<link rel="canonical" href="https://blog.fuhlig.de/tags/blog/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://blog.fuhlig.de/tags/blog/">
</head>
</html>

View File

@@ -1,180 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tags :: TechnicalBlog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Here you can find entry quicker thru my tags" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://blog.fuhlig.de/tags/" />
<link rel="stylesheet" href="https://blog.fuhlig.de/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="https://blog.fuhlig.de/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="https://blog.fuhlig.de/favicon.png">
<link rel="apple-touch-icon" href="https://blog.fuhlig.de/apple-touch-icon.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Tags">
<meta property="og:description" content="Here you can find entry quicker thru my tags" />
<meta property="og:url" content="https://blog.fuhlig.de/tags/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="https://blog.fuhlig.de/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:section" content="webdev" />
<meta property="article:published_time" content="2025-12-03 00:00:00 &#43;0000 UTC" />
<link href="/tags/index.xml" rel="alternate" type="application/rss+xml" title="TechnicalBlog" />
</head>
<body>
<div class="container center">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="/">
<div class="logo">
TechnicalBlog
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="terms">
<h1>Tags</h1>
<div class="index-content">
Here you can find entry quicker thru my tags
</div>
<ul>
<li>
<a class="terms-title" href="https://blog.fuhlig.de/tags/blog/">blog [2]</a>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2025 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="/bundle.min.js"></script>
</div>
</body>
</html>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tags on TechnicalBlog</title>
<link>https://blog.fuhlig.de/tags/</link>
<description>Recent content in Tags on TechnicalBlog</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Wed, 03 Dec 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.fuhlig.de/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Blog</title>
<link>https://blog.fuhlig.de/tags/blog/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://blog.fuhlig.de/tags/blog/</guid>
<description></description>
</item>
</channel>
</rss>

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"Target":"/ananke/css/main.min.css","MediaType":"text/css","Data":{}}