Compare commits
10 Commits
53a23ee08c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b671291e7 | |||
| ed58de749c | |||
| d7b5585666 | |||
| ea52115b47 | |||
| 556445c2b5 | |||
| f1a4089d0e | |||
| f3842285d9 | |||
| 8099dbce4f | |||
| 207f56128c | |||
| 5767c31162 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
content/*
|
||||
23
assets/css/custom.css
Normal file
23
assets/css/custom.css
Normal 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;
|
||||
}
|
||||
23
compose.yml
23
compose.yml
@@ -2,15 +2,34 @@ services:
|
||||
hugo:
|
||||
image: hugomods/hugo:0.135.0
|
||||
container_name: hugo
|
||||
user: 1000:1000
|
||||
restart: no
|
||||
volumes:
|
||||
- ./:/src
|
||||
- static-site:/src/public
|
||||
#ports:
|
||||
#- "1313:1313"
|
||||
command: server --bind 0.0.0.0
|
||||
command: ["hugo", "--cleanDestinationDir", "--baseURL", "https://blog.fuhlig.de/", "--ignoreCache"]
|
||||
#command: ["hugo"]
|
||||
networks:
|
||||
- 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:
|
||||
net:
|
||||
name: docker_public
|
||||
|
||||
12
config.toml
Normal file
12
config.toml
Normal 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"
|
||||
@@ -6,10 +6,18 @@ weight: 1
|
||||
draft: false
|
||||
---
|
||||
|
||||
## 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.
|
||||
## 👋 Who am I?
|
||||
|
||||
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.*
|
||||
|
||||
@@ -5,65 +5,60 @@ tags: ["blog"]
|
||||
draft: false
|
||||
---
|
||||
|
||||
Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
|
||||
Overview
|
||||
# Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
|
||||
|
||||
## 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.
|
||||
|
||||
The Architecture
|
||||
Docker Host Server
|
||||
## 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
|
||||
- **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.
|
||||
|
||||
Backup Storage Server
|
||||
### Backup Storage Server
|
||||
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:
|
||||
|
||||
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:
|
||||
|
||||
Database Backups
|
||||
### Database Backups
|
||||
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:
|
||||
|
||||
Application configuration files
|
||||
|
||||
User-generated content
|
||||
|
||||
Service-specific data stores
|
||||
- Application configuration files
|
||||
- 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.
|
||||
|
||||
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
|
||||
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
|
||||
## 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
|
||||
**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
|
||||
|
||||
## 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.
|
||||
|
||||
15
hugo.toml
15
hugo.toml
@@ -11,3 +11,18 @@ theme = "terminal"
|
||||
[params.logo]
|
||||
logoText = "TechnicalBlog"
|
||||
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"
|
||||
|
||||
14
layouts/partials/footer.html
Normal file
14
layouts/partials/footer.html
Normal 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>
|
||||
160
public/404.html
160
public/404.html
@@ -1,160 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 →</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 |
3
public/bundle.min.js
vendored
3
public/bundle.min.js
vendored
@@ -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)}})()
|
||||
@@ -1,170 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}}
|
||||
@@ -1 +0,0 @@
|
||||
body .gist .blob-num,body .gist .blob-code-inner{border:none}
|
||||
@@ -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
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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)}
|
||||
@@ -1,2 +0,0 @@
|
||||
/* Placeholder file for your custom settings. */
|
||||
/* You can get the color scheme variables from https://panr.github.io/terminal-css/ */
|
||||
@@ -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.
@@ -1,257 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.135.0"><script src="/livereload.js?mindelay=10&v=2&port=1313&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 +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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<h2 id="who-am-i">Who am I</h2>
|
||||
<p>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.</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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<p>Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
|
||||
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.</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>
|
||||
@@ -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><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></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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.5 KiB |
@@ -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>
|
||||
@@ -1,193 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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’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’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 +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>
|
||||
|
||||
</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’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>
|
||||
@@ -1,238 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<h2 id="who-am-i">Who am I</h2>
|
||||
<p>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.</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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<p>Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
|
||||
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.</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>
|
||||
@@ -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><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></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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: "About Me"
|
||||
date: 2025-12-01
|
||||
tags: ["blog"]
|
||||
draft: false
|
||||
---
|
||||
@@ -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>
|
||||
@@ -1,228 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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’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’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 +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>
|
||||
|
||||
</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’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’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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<h2 id="who-am-i">Who am I</h2>
|
||||
<p>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.</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>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
|
||||
<p>Building a Self-Sustaining Infrastructure: A Two-Server Docker Setup
|
||||
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.</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>
|
||||
@@ -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><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></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><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></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -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>
|
||||
@@ -1,180 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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 +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>
|
||||
@@ -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
@@ -1 +0,0 @@
|
||||
{"Target":"/ananke/css/main.min.css","MediaType":"text/css","Data":{}}
|
||||
Reference in New Issue
Block a user