1
0

Compare commits

...

10 Commits

Author SHA1 Message Date
8b671291e7 new file: .gitignore
new file:   assets/css/custom.css
	new file:   config.toml
	modified:   content/posts/AboutMe.md
	modified:   hugo.toml
	new file:   layouts/partials/footer.html
2025-12-23 00:19:38 +01:00
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
ea52115b47 Rebuild 2025-12-03 12:51:21 +01:00
556445c2b5 Rebuild 2025-12-03 12:48:45 +01:00
f1a4089d0e Rebuild 2025-12-03 12:47:59 +01:00
fuh
f3842285d9 content/posts/WhatImWorkingOnCurrently.md aktualisiert
change
2025-12-03 12:47:54 +01:00
8099dbce4f Rebuild 2025-12-03 12:47:17 +01:00
207f56128c Rebuild 2025-12-03 12:46:48 +01:00
fuh
5767c31162 content/posts/WhatImWorkingOnCurrently.md aktualisiert
Make it look better
2025-12-03 12:46:41 +01:00
50 changed files with 134 additions and 2133 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
content/*

23
assets/css/custom.css Normal file
View File

@@ -0,0 +1,23 @@
.footer {
margin-top: 50px;
padding: 20px 0;
border-top: 1px solid var(--accent);
}
.footer__inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.contact {
display: flex;
flex-wrap: wrap;
gap: 15px;
justify-content: center;
}
.contact span {
white-space: nowrap;
}

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

12
config.toml Normal file
View File

@@ -0,0 +1,12 @@
[params]
themeColor = "pink"
fullWidthTheme = false
centerTheme = true
# Custom CSS
customCSS = ["css/custom.css"]
# Your contact info (optional - for use in templates)
email = "blog@fuhlig.de"
github = "florianuhlig"
linkedin = "yourprofile"

View File

@@ -6,10 +6,18 @@ weight: 1
draft: false draft: false
--- ---
## Who am I ## 👋 Who am I?
My name is Florian and I'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. My name is **Florian**, and I'm a 22-year-old IT Technician based in Frankfurt, Germany. I spend my days working with Linux servers at a mid-sized company of around 50 people, dealing with everything from Docker containers to network infrastructure.
## 💭 Why This Blog?
I created this space to document what I learn, share the things that inspire me, and maybe help someone else solve a problem they're stuck on. Sometimes the best way to understand something is to explain it to others.
## 🤷 The Real Reason
Well, if I'm being completely honest... this just seemed like a great idea to waste some time. But hey, if you're reading this, at least the time wasn't completely wasted, right?
---
*Feel free to reach out if you have questions about anything I post or just want to chat about infrastructure, Docker, or why your Hugo theme won't load properly.*

View File

@@ -5,65 +5,60 @@ tags: ["blog"]
draft: false draft: false
--- ---
Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup # Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
Overview
## Overview
Creating a resilient, self-sustaining infrastructure doesn'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. Creating a resilient, self-sustaining infrastructure doesn'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 ## The Architecture
Docker Host Server
### Docker Host Server
The primary server runs all application workloads using Docker containers. This containerized approach provides: 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
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
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. 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.
Backup Storage Server ### Backup Storage Server
The secondary server serves as a dedicated backup repository with substantial storage capacity. This server is: The secondary server serves as a dedicated backup repository with substantial storage capacity. This server is:
- **Isolated from the internet**: No external access is permitted
- **Secured via iptables**: Firewall rules prevent unauthorized connections
- **Connected via WireGuard VPN**: Encrypted tunnel ensures secure communication between servers
Isolated from the internet: No external access is permitted ## Security Through Network Segmentation
Secured via iptables: Firewall rules prevent unauthorized connections
Connected via WireGuard VPN: Encrypted tunnel ensures secure communication between servers
Security Through Network Segmentation
The WireGuard VPN creates a secure, encrypted tunnel between the Docker host and backup server. This architecture provides several benefits: The WireGuard VPN creates a secure, encrypted tunnel between the Docker host and backup server. This architecture provides several benefits:
Private communication channel for backup operations - Private communication channel for backup operations
- Zero trust model for the backup server (completely isolated from public internet)
- Reduced risk of data exfiltration
- Encrypted data transfer between servers
Zero trust model for the backup server (completely isolated from public internet) ## Automated Backup Strategy
Reduced risk of data exfiltration
Encrypted data transfer between servers
Automated Backup Strategy
Daily automated backups capture the critical components: Daily automated backups capture the critical components:
Database Backups ### Database Backups
All databases are exported and stored, ensuring data consistency and point-in-time recovery capabilities. All databases are exported and stored, ensuring data consistency and point-in-time recovery capabilities.
Docker Volume Backups ### Docker Volume Backups
Persistent data from Docker volumes is systematically backed up, including: Persistent data from Docker volumes is systematically backed up, including:
- Application configuration files
Application configuration files - User-generated content
- Service-specific data stores
User-generated content
Service-specific data stores
This comprehensive approach ensures that the entire infrastructure can be restored from backups, making the system truly self-sustaining. This comprehensive approach ensures that the entire infrastructure can be restored from backups, making the system truly self-sustaining.
Benefits of This Approach ## Benefits of This Approach
Resilience: Hardware failure on the Docker host doesn't result in data loss
Security: Multi-layered security with network segmentation and minimal exposure **Resilience**: Hardware failure on the Docker host doesn't result in data loss
Maintainability: Containerized services are easy to update and manage **Security**: Multi-layered security with network segmentation and minimal exposure
Scalability: Additional Docker hosts can connect to the same backup server **Maintainability**: Containerized services are easy to update and manage
Cost-effective: Self-hosted solution with predictable costs **Scalability**: Additional Docker hosts can connect to the same backup server
**Cost-effective**: Self-hosted solution with predictable costs
## Conclusion
Conclusion
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. 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.

View File

@@ -11,3 +11,18 @@ theme = "terminal"
[params.logo] [params.logo]
logoText = "TechnicalBlog" logoText = "TechnicalBlog"
logoHomeLink = "/" logoHomeLink = "/"
# Add footer info
[params.footer]
trademark = "© 2025 Florian"
rss = true
copyright = true
author = true
[[params.social]]
name = "email"
url = "mailto:florian@example.com"
[[params.social]]
name = "github"
url = "https://github.com/yourusername"

View File

@@ -0,0 +1,14 @@
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© {{ now.Format "2006" }} {{ .Site.Title }}</span>
<span>Made with <a href="https://gohugo.io">Hugo</a></span>
</div>
<div class="contact">
<span>📧 Contact: <a href="mailto:your.email@example.com">your.email@example.com</a></span>
<span>🔗 <a href="https://github.com/florianuhlig" target="_blank">GitHub</a></span>
<span>💼 <a href="https://linkedin.com/in/yourprofile" target="_blank">LinkedIn</a></span>
</div>
</div>
</footer>

View File

@@ -1,160 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/404.html" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/404.html" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/">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><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/categories/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/categories/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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>http://localhost:1313/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="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Webdev</title>
<link>http://localhost:1313/categories/webdev/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/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,257 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="Hugo 0.135.0"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<p>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.</p>
<p>The Architecture
Docker Host Server
The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<p>Isolation: Each service runs in its own container with defined resources</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>http://localhost:1313/</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="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About Me</title>
<link>http://localhost:1313/posts/aboutme/</link>
<pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/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>http://localhost:1313/posts/whatimworkingoncurrently/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/whatimworkingoncurrently/</guid>
<description>&lt;p&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&#xA;Overview&#xA;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;p&gt;The Architecture&#xA;Docker Host Server&#xA;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;p&gt;Isolation: Each service runs in its own container with defined resources&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>http://localhost:1313/</title>
<link rel="canonical" href="http://localhost:1313/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/">
</head>
</html>

View File

@@ -1,193 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/posts/aboutme/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/posts/aboutme/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/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,238 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/posts/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/posts/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content">
<p>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.</p>
<p>The Architecture
Docker Host Server
The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<p>Isolation: Each service runs in its own container with defined resources</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>http://localhost:1313/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="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About Me</title>
<link>http://localhost:1313/posts/aboutme/</link>
<pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/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>http://localhost:1313/posts/whatimworkingoncurrently/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/posts/whatimworkingoncurrently/</guid>
<description>&lt;p&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&#xA;Overview&#xA;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;p&gt;The Architecture&#xA;Docker Host Server&#xA;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;p&gt;Isolation: Each service runs in its own container with defined resources&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>http://localhost:1313/posts/</title>
<link rel="canonical" href="http://localhost:1313/posts/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/posts/">
</head>
</html>

View File

@@ -1,228 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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
" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="http://localhost:1313/posts/whatimworkingoncurrently/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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
" />
<meta property="og:url" content="http://localhost:1313/posts/whatimworkingoncurrently/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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="http://localhost:1313/tags/blog/">blog</a>&nbsp;
</span>
<div class="post-content"><div>
<p>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.</p>
<p>The Architecture
Docker Host Server
The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<p>Isolation: Each service runs in its own container with defined resources</p>
<p>Portability: Services can be easily migrated or replicated</p>
<p>Consistency: Docker Compose configurations ensure reproducible deployments</p>
<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>
<p>Backup Storage Server
The secondary server serves as a dedicated backup repository with substantial storage capacity. This server is:</p>
<p>Isolated from the internet: No external access is permitted</p>
<p>Secured via iptables: Firewall rules prevent unauthorized connections</p>
<p>Connected via WireGuard VPN: Encrypted tunnel ensures secure communication between servers</p>
<p>Security Through Network Segmentation
The WireGuard VPN creates a secure, encrypted tunnel between the Docker host and backup server. This architecture provides several benefits:</p>
<p>Private communication channel for backup operations</p>
<p>Zero trust model for the backup server (completely isolated from public internet)</p>
<p>Reduced risk of data exfiltration</p>
<p>Encrypted data transfer between servers</p>
<p>Automated Backup Strategy
Daily automated backups capture the critical components:</p>
<p>Database Backups
All databases are exported and stored, ensuring data consistency and point-in-time recovery capabilities.</p>
<p>Docker Volume Backups
Persistent data from Docker volumes is systematically backed up, including:</p>
<p>Application configuration files</p>
<p>User-generated content</p>
<p>Service-specific data stores</p>
<p>This comprehensive approach ensures that the entire infrastructure can be restored from backups, making the system truly self-sustaining.</p>
<p>Benefits of This Approach
Resilience: Hardware failure on the Docker host doesn&rsquo;t result in data loss
Security: Multi-layered security with network segmentation and minimal exposure
Maintainability: Containerized services are easy to update and manage
Scalability: Additional Docker hosts can connect to the same backup server
Cost-effective: Self-hosted solution with predictable costs</p>
<p>Conclusion
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>http://localhost:1313/</loc>
<lastmod>2025-12-02T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/posts/aboutme/</loc>
<lastmod>2025-12-01T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/blog/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/categories/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/posts/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/categories/webdev/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/posts/whatimworkingoncurrently/</loc>
<lastmod>2025-12-03T00:00:00+00:00</lastmod>
</url>
</urlset>

View File

@@ -1,239 +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">
<p>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.</p>
<p>The Architecture
Docker Host Server
The primary server runs all application workloads using Docker containers. This containerized approach provides:</p>
<p>Isolation: Each service runs in its own container with defined resources</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;p&gt;Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup&#xA;Overview&#xA;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;p&gt;The Architecture&#xA;Docker Host Server&#xA;The primary server runs all application workloads using Docker containers. This containerized approach provides:&lt;/p&gt;&#xA;&lt;p&gt;Isolation: Each service runs in its own container with defined resources&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><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<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="http://localhost:1313/tags/" />
<link rel="stylesheet" href="http://localhost:1313/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
<link rel="stylesheet" href="http://localhost:1313/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
<link rel="stylesheet" href="http://localhost:1313/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
<link rel="stylesheet" href="http://localhost:1313/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
<link rel="stylesheet" href="http://localhost:1313/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
<link rel="stylesheet" href="http://localhost:1313/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
<link rel="stylesheet" href="http://localhost:1313/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
<link rel="stylesheet" href="http://localhost:1313/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
<link rel="stylesheet" href="http://localhost:1313/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
<link rel="stylesheet" href="http://localhost:1313/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
<link rel="stylesheet" href="http://localhost:1313/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
<link rel="stylesheet" href="http://localhost:1313/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
<link rel="shortcut icon" href="http://localhost:1313/favicon.png">
<link rel="apple-touch-icon" href="http://localhost:1313/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="http://localhost:1313/tags/" />
<meta property="og:site_name" content="TechnicalBlog" />
<meta property="og:image" content="http://localhost:1313/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="http://localhost:1313/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>http://localhost:1313/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="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Blog</title>
<link>http://localhost:1313/tags/blog/</link>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/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":{}}