Compare commits

...

38 commits

Author SHA1 Message Date
f2aefc175a Update .domains 2024-06-01 06:48:16 +00:00
95f64533b7 Update .domains 2024-06-01 06:46:07 +00:00
2502fefe02 Update .domains 2024-06-01 06:45:25 +00:00
0892f379e6 Update .domains 2024-06-01 06:42:13 +00:00
8bbde6d6f0 Update .domains 2024-06-01 06:41:29 +00:00
0e3161bb1e Update .domains 2024-06-01 06:28:07 +00:00
a6b485ab11 Update .domains 2024-06-01 06:24:41 +00:00
88d8f08dd3 Update .domains 2024-06-01 06:24:07 +00:00
bbd75226ff Update .domains 2024-06-01 06:17:09 +00:00
12e4bdf11e Update .domains 2024-06-01 06:06:55 +00:00
9e0ae8e9c1 Update .domains 2024-06-01 05:45:36 +00:00
f3242964f4 Add .domains 2024-05-29 05:03:42 +00:00
80aa7da953 adding post 2024-04-02 21:22:46 +00:00
ab23c2ee0d adding BMC 2024-03-27 15:45:33 +00:00
c6019b67ac done with spl post 2024-03-26 19:39:56 +00:00
6152a22eee fixing spl post 2024-03-26 19:17:20 +00:00
20dacf5c7b fixing spl post 2 2024-03-22 17:04:57 +00:00
c1bb3299ef fixing spl post 2024-03-22 16:53:57 +00:00
bed463d73c adding post 2024-03-16 03:43:34 +00:00
e8398f7522 adding post 2024-03-08 00:49:30 +00:00
cb44b84eac adding posts 2024-02-23 16:28:32 +00:00
e3ee29d704 adding post 2024-02-23 03:27:56 +00:00
c609d23d95 updating post settings 2024-02-23 03:08:01 +00:00
72b02a21e2 adding posts/fixing things 2024-02-23 02:40:08 +00:00
ce03813ac4 fixing plausible 2024-02-22 23:52:07 +00:00
78e8935e03 addingplausible 2024-02-22 22:57:56 +00:00
a47cba3a58 adding comments 2024-02-22 22:24:22 +00:00
13df5536a3 changing domain 2024-02-22 21:21:00 +00:00
8ec15e2a2a fixing favicons 2024-02-22 21:01:26 +00:00
23306e5e6d fixed search 2024-02-22 20:45:13 +00:00
112d2c4144 fixing search x3 2024-02-22 20:36:42 +00:00
316d7a7e61 fixing search again 2024-02-22 20:31:37 +00:00
f2f61c8bc4 fixing search 2024-02-22 20:18:31 +00:00
c74df92904 adding features 2024-02-22 19:42:02 +00:00
942d07b5f7 Merge branch 'main' of github.com:Mafyuh/mafyuh.github.io
whoops
2024-02-22 19:16:28 +00:00
9f7563b844 2nd commit 2024-02-22 19:16:00 +00:00
Mafyuh
339d438349
Create CNAME 2024-02-22 14:13:32 -05:00
13db9e5e79 init commit 2024-02-22 19:01:49 +00:00
128 changed files with 19577 additions and 0 deletions

2
.domains Normal file
View file

@ -0,0 +1,2 @@
mafyuh.co
mafyuh.mafyuh.co

207
404.html Normal file
View file

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>404 Page not found | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A blog by Mafyuh">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/404.html">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/404.html">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="404 Page not found" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mafyuh.com/404.html" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="404 Page not found"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<div class="not-found">404</div>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

1
CNAME Normal file
View file

@ -0,0 +1 @@
mafyuh.com

370
about/index.html Normal file
View file

@ -0,0 +1,370 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>About | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Hello! 👋 I&rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.
Before diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what&rsquo;s possible in electronics.
While I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/about/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/about/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="About" />
<meta property="og:description" content="Hello! 👋 I&rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.
Before diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what&rsquo;s possible in electronics.
While I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/about/" /><meta property="article:section" content="" />
<meta property="article:published_time" content="2024-02-22T08:00:00+00:00" />
<meta property="article:modified_time" content="2024-02-22T08:00:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="About"/>
<meta name="twitter:description" content="Hello! 👋 I&rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.
Before diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what&rsquo;s possible in electronics.
While I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "About",
"item": "https://mafyuh.com/about/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "About",
"name": "About",
"description": "Hello! 👋 I\u0026rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.\nBefore diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what\u0026rsquo;s possible in electronics.\nWhile I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things.",
"keywords": [
],
"articleBody": "Hello! 👋 Im Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.\nBefore diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning whats possible in electronics.\nWhile I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things. Just as I mastered the intricacies of hardware, Im now determined to delve into the world of software and emerge as a master of DevOps, GitOps, and system administration. With the same dedication and hunger for knowledge that drove me in the realm of electronics, Im excited to tackle the challenges of software development and infrastructure management head-on.\nWhat Youll Find Here DevOps \u0026 GitOps: From CI/CD pipelines to Git-driven infrastructure. Self-Hosting: Managing my own homelab and orchestrating various services. Cybersecurity: How I keep my infrastructure safe and secure. Kubernetes \u0026 Docker: Pretty much everything I run is containerized. AI: Im also passionate about artificial intelligence (AI), exploring self-hosted text-generation models like Phi, Llama-2, and Gemma, along with running image-generation Stable-Diffusion models. I show you how I integrate AI into various software projects and explore its potential impact. Other Hobbies \u0026 Interests MMA Junkie. I havent missed a major UFC event since I started watching in 2018. Milwaukee Bucks Fan. Born and raised in SE Wisconsin, been a Bucks fan my whole life. MCU Fanboy. I am a huge Marvel fan, especially Spider-Man. Gamer. I spend alot of time playing video games, for the last few years my main game has been Rocket League, as well as COD. But I play all styles of games. Pets. I have a dog named Knox whos a husky-lab mix. I spend mostly all day everyday giving him pets. Why mafyuh? When I was 9 I needed a unique username for Google. My full name is Matthew, if you say mafyuh fast it sort-of sounds the same. Anyways, it stuck. The google account didnt though :(\nPrivacy Policy Analytics I use Plausible for analytics, focusing on:\nPopular posts Optimal posting times User engagement Plausible collects minimal data:\nPage URL HTTP Referer Browser Operating system Device type Visitor Country Note Plausible uses JavaScript for tracking, allowing you to block it using browser extensions. Their code is open-source on GitHub.\n",
"wordCount" : "406",
"inLanguage": "en",
"datePublished": "2024-02-22T08:00:00Z",
"dateModified": "2024-02-22T08:00:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/about/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a></div>
<h1 class="post-title entry-hint-parent">
About
</h1>
<div class="post-meta"><span title='2024-02-22 08:00:00 +0000 UTC'>February 22, 2024</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;406 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>Hello! 👋 I&rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.</p>
<p>Before diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what&rsquo;s possible in electronics.</p>
<p>While I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things. Just as I mastered the intricacies of hardware, I&rsquo;m now determined to delve into the world of software and emerge as a master of DevOps, GitOps, and system administration. With the same dedication and hunger for knowledge that drove me in the realm of electronics, I&rsquo;m excited to tackle the challenges of software development and infrastructure management head-on.</p>
<h1 id="what-youll-find-here">What You&rsquo;ll Find Here<a hidden class="anchor" aria-hidden="true" href="#what-youll-find-here">#</a></h1>
<ul>
<li>DevOps &amp; GitOps: From CI/CD pipelines to Git-driven infrastructure.</li>
<li>Self-Hosting: Managing my own homelab and orchestrating various services.</li>
<li>Cybersecurity: How I keep my infrastructure safe and secure.</li>
<li>Kubernetes &amp; Docker: Pretty much everything I run is containerized.</li>
<li>AI: I&rsquo;m also passionate about artificial intelligence (AI), exploring self-hosted text-generation models like Phi, Llama-2, and Gemma, along with running image-generation Stable-Diffusion models. I show you how I integrate AI into various software projects and explore its potential impact.</li>
</ul>
<h2 id="other-hobbies--interests">Other Hobbies &amp; Interests<a hidden class="anchor" aria-hidden="true" href="#other-hobbies--interests">#</a></h2>
<ul>
<li>MMA Junkie. I haven&rsquo;t missed a major UFC event since I started watching in 2018.</li>
<li>Milwaukee Bucks Fan. Born and raised in SE Wisconsin, been a Bucks fan my whole life.</li>
<li>MCU Fanboy. I am a huge Marvel fan, especially Spider-Man.</li>
<li>Gamer. I spend alot of time playing video games, for the last few years my main game has been Rocket League, as well as COD. But I play all styles of games.</li>
<li>Pets. I have a dog named Knox who&rsquo;s a husky-lab mix. I spend mostly all day everyday giving him pets.</li>
</ul>
<h2 id="why-mafyuh">Why mafyuh?<a hidden class="anchor" aria-hidden="true" href="#why-mafyuh">#</a></h2>
<p>When I was 9 I needed a unique username for Google. My full name is Matthew, if you say mafyuh fast it <em>sort-of</em> sounds the same. Anyways, it stuck. The google account didn&rsquo;t though :(</p>
<h1 id="privacy-policy">Privacy Policy<a hidden class="anchor" aria-hidden="true" href="#privacy-policy">#</a></h1>
<h2 id="analytics">Analytics<a hidden class="anchor" aria-hidden="true" href="#analytics">#</a></h2>
<p>I use Plausible for analytics, focusing on:</p>
<ul>
<li>Popular posts</li>
<li>Optimal posting times</li>
<li>User engagement</li>
</ul>
<p>Plausible collects minimal data:</p>
<ul>
<li>Page URL</li>
<li>HTTP Referer</li>
<li>Browser</li>
<li>Operating system</li>
<li>Device type</li>
<li>Visitor Country</li>
</ul>
<h3 id="note">Note<a hidden class="anchor" aria-hidden="true" href="#note">#</a></h3>
<p>Plausible uses JavaScript for tracking, allowing you to block it using browser extensions. Their code is open-source on <a href="https://github.com/plausible/analytics">GitHub</a>.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

BIN
apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

398
archives/index.html Normal file
View file

@ -0,0 +1,398 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Archives | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="archives">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/archives/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/archives/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Archives" />
<meta property="og:description" content="archives" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/archives/" /><meta property="article:section" content="posts" />
<meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Archives"/>
<meta name="twitter:description" content="archives"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Archives",
"item": "https://mafyuh.com/archives/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Archives",
"name": "Archives",
"description": "archives",
"keywords": [
],
"articleBody": "",
"wordCount" : "0",
"inLanguage": "en",
"datePublished": "0001-01-01T00:00:00Z",
"dateModified": "0001-01-01T00:00:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/archives/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span class="active">Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header">
<h1>
Archives
<a href="/posts/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<div class="archive-year">
<h2 class="archive-year-header">2024<sup class="archive-count">&nbsp;&nbsp;5</sup>
</h2>
<div class="archive-month">
<h3 class="archive-month-header">March<sup class="archive-count">&nbsp;&nbsp;1</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How to create a Solana Token (SPL) from CLI with metadata
</h3>
<div class="archive-meta"><span title='2024-03-15 00:13:40 +0000 UTC'>March 15, 2024</span>&nbsp;·&nbsp;9 min&nbsp;·&nbsp;1713 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How to create a Solana Token (SPL) from CLI with metadata" href="https://mafyuh.com/posts/spl-token-cli/"></a>
</div>
</div>
</div>
<div class="archive-month">
<h3 class="archive-month-header">February<sup class="archive-count">&nbsp;&nbsp;4</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Configuring Arr Stack
</h3>
<div class="archive-meta"><span title='2024-02-25 00:13:40 +0000 UTC'>February 25, 2024</span>&nbsp;·&nbsp;13 min&nbsp;·&nbsp;2716 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Configuring Arr Stack" href="https://mafyuh.com/posts/arr-stack-config-guide/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Docker Compose Arr Stack Guide
</h3>
<div class="archive-meta"><span title='2024-02-23 00:13:40 +0000 UTC'>February 23, 2024</span>&nbsp;·&nbsp;7 min&nbsp;·&nbsp;1305 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Docker Compose Arr Stack Guide" href="https://mafyuh.com/posts/docker-arr-stack-guide/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Selfhosted Game Servers
</h3>
<div class="archive-meta"><span title='2024-02-22 00:13:40 +0000 UTC'>February 22, 2024</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;478 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Selfhosted Game Servers" href="https://mafyuh.com/posts/selfhosted-game-servers/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Resize Ubuntu VM Disk in Proxmox
</h3>
<div class="archive-meta"><span title='2024-02-06 02:58:07 +0000 UTC'>February 6, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;53 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Resize Ubuntu VM Disk in Proxmox" href="https://mafyuh.com/posts/resize-ubuntu-vm-disk/"></a>
</div>
</div>
</div>
</div>
<div class="archive-year">
<h2 class="archive-year-header">2023<sup class="archive-count">&nbsp;&nbsp;9</sup>
</h2>
<div class="archive-month">
<h3 class="archive-month-header">November<sup class="archive-count">&nbsp;&nbsp;2</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Proton Mail - SimpleLogin authentik Social Login Setup
</h3>
<div class="archive-meta"><span title='2023-11-12 16:20:00 +0000 UTC'>November 12, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;227 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Proton Mail - SimpleLogin authentik Social Login Setup" href="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How To Automate Jellyfin Issue Handling
</h3>
<div class="archive-meta"><span title='2023-11-11 16:20:00 +0000 UTC'>November 11, 2023</span>&nbsp;·&nbsp;19 min&nbsp;·&nbsp;3952 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How To Automate Jellyfin Issue Handling" href="https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/"></a>
</div>
</div>
</div>
<div class="archive-month">
<h3 class="archive-month-header">October<sup class="archive-count">&nbsp;&nbsp;2</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager
</h3>
<div class="archive-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;344 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager" href="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How to authenticate Zammad via SAML with Nginx Proxy Manager
</h3>
<div class="archive-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;107 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How to authenticate Zammad via SAML with Nginx Proxy Manager" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"></a>
</div>
</div>
</div>
<div class="archive-month">
<h3 class="archive-month-header">September<sup class="archive-count">&nbsp;&nbsp;2</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How To Authenticate KASM via authentik
</h3>
<div class="archive-meta"><span title='2023-09-30 16:20:00 +0000 UTC'>September 30, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;393 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How To Authenticate KASM via authentik" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">How to Show More Options By Default in Windows 11
</h3>
<div class="archive-meta"><span title='2023-09-05 23:45:25 +0000 UTC'>September 5, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;31 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to How to Show More Options By Default in Windows 11" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/"></a>
</div>
</div>
</div>
<div class="archive-month">
<h3 class="archive-month-header">August<sup class="archive-count">&nbsp;&nbsp;3</sup></h3>
<div class="archive-posts">
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Network Traffic Map
</h3>
<div class="archive-meta"><span title='2023-08-31 16:20:00 +0000 UTC'>August 31, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;27 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Network Traffic Map" href="https://mafyuh.com/posts/network-traffic-map/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Software
</h3>
<div class="archive-meta"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Software" href="https://mafyuh.com/posts/software/"></a>
</div>
<div class="archive-entry">
<h3 class="archive-entry-title entry-hint-parent">Hardware
</h3>
<div class="archive-meta"><span title='2023-08-25 00:13:40 +0000 UTC'>August 25, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;150 words&nbsp;·&nbsp;Matt</div>
<a class="entry-link" aria-label="post link to Hardware" href="https://mafyuh.com/posts/hardware/"></a>
</div>
</div>
</div>
</div>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
assets/favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

777
assets/favicon/favicon.svg Normal file
View file

@ -0,0 +1,777 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="4096.000000pt" height="4096.000000pt" viewBox="0 0 4096.000000 4096.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,4096.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M20267 36185 c-15 -8 -71 -19 -123 -24 -53 -5 -101 -14 -107 -20 -7
-5 -30 -12 -52 -16 -22 -4 -49 -13 -61 -20 -12 -8 -39 -17 -60 -20 -21 -4 -48
-13 -59 -20 -11 -7 -36 -16 -55 -20 -95 -20 -399 -194 -490 -280 -19 -18 -50
-40 -68 -50 -45 -22 -312 -291 -312 -313 0 -10 -27 -48 -60 -85 -46 -52 -60
-75 -60 -99 0 -21 -12 -45 -40 -78 -32 -38 -40 -56 -40 -87 0 -39 -1 -40 -62
-68 -35 -16 -182 -88 -328 -159 -146 -72 -308 -148 -361 -169 -54 -21 -107
-49 -120 -63 -12 -13 -38 -26 -58 -30 -46 -8 -1004 -485 -1053 -525 -21 -16
-52 -32 -70 -35 -48 -9 -134 -52 -180 -91 -22 -18 -51 -33 -64 -33 -30 0 -140
-53 -174 -84 -29 -27 -209 -116 -234 -116 -22 0 -55 -17 -82 -42 -23 -21 -610
-318 -628 -318 -6 0 -17 -9 -24 -20 -7 -11 -10 -20 -7 -20 7 0 886 440 900
450 6 4 249 128 540 275 292 148 589 298 660 334 72 37 200 100 285 140 85 41
243 117 350 169 379 184 484 233 569 268 129 52 129 52 152 113 56 151 207
375 356 526 159 163 323 279 564 400 523 263 1199 304 1747 106 349 -127 611
-301 853 -568 115 -127 256 -360 299 -496 16 -48 29 -71 44 -77 11 -5 53 -21
91 -36 79 -30 318 -148 895 -443 217 -111 710 -359 1095 -551 385 -192 815
-408 955 -479 140 -71 271 -135 291 -141 36 -12 40 -11 139 49 144 88 311 172
415 210 368 134 786 142 1137 22 574 -196 961 -582 1147 -1145 36 -109 36
-110 76 -122 22 -7 111 -34 198 -59 381 -112 1054 -383 1461 -587 380 -190
642 -347 881 -527 120 -90 368 -335 452 -446 247 -328 366 -653 380 -1045 7
-201 -8 -321 -74 -595 l-45 -190 43 -35 c98 -79 283 -270 344 -355 279 -390
366 -921 230 -1395 -57 -199 -132 -353 -245 -505 -150 -201 -329 -331 -605
-440 -38 -15 -78 -34 -87 -42 -26 -23 -36 -87 -54 -337 l-16 -228 60 -57 c179
-167 275 -313 307 -466 26 -124 12 -270 -36 -382 -44 -102 -175 -252 -253
-290 -20 -9 -38 -24 -40 -32 -3 -9 -8 -237 -12 -507 -6 -411 -5 -493 7 -500
29 -18 832 -2 1359 26 314 18 503 -1 683 -65 172 -63 286 -133 407 -255 97
-96 166 -195 210 -298 31 -73 74 -232 85 -314 6 -44 8 -48 34 -48 60 0 290
-22 374 -35 251 -41 462 -131 679 -292 254 -188 472 -447 620 -739 131 -256
198 -549 198 -860 0 -422 -141 -823 -406 -1157 -137 -175 -349 -354 -524 -446
-235 -123 -496 -181 -818 -181 l-135 0 19 -21 c18 -20 25 -21 144 -14 78 4
131 12 140 20 9 8 61 15 139 19 75 5 132 13 145 21 12 7 46 16 76 20 30 4 86
23 126 41 39 19 77 34 85 34 21 0 141 59 165 81 11 10 36 27 56 36 20 10 70
51 112 90 41 40 84 73 94 73 21 0 162 139 162 160 0 8 23 40 51 70 27 30 58
71 68 90 44 86 73 136 90 155 23 25 100 183 111 228 10 38 36 113 62 179 11
28 18 72 18 110 0 44 5 71 18 88 15 23 17 55 17 327 0 267 -2 304 -16 315 -11
8 -19 36 -23 76 -3 35 -12 76 -20 90 -8 15 -18 54 -24 87 -6 33 -19 85 -30
115 -24 69 -97 215 -126 255 -12 17 -40 62 -61 100 -21 39 -68 104 -105 145
-37 41 -70 84 -74 96 -9 28 -198 215 -261 258 -27 19 -72 55 -100 79 -71 64
-356 206 -436 217 -33 5 -67 14 -74 20 -8 6 -55 15 -104 20 -60 6 -96 14 -107
24 -13 13 -41 16 -154 16 -132 0 -140 1 -167 24 -25 22 -28 32 -34 115 -4 59
-12 98 -21 109 -9 9 -18 33 -22 52 -9 48 -43 118 -81 165 -18 22 -35 49 -39
61 -3 11 -60 75 -126 141 -116 117 -122 121 -254 186 -74 37 -143 67 -153 67
-10 0 -35 9 -56 20 -20 11 -49 20 -64 20 -16 0 -41 9 -58 20 -29 19 -48 20
-392 20 -334 0 -363 -1 -372 -17 -9 -17 -47 -18 -545 -21 l-536 -3 0 495 0
496 43 21 c48 24 157 126 157 148 0 8 15 33 34 55 19 23 41 58 49 78 8 19 20
39 26 42 6 4 11 35 11 71 0 54 3 66 21 79 19 13 21 22 17 80 -2 42 -10 71 -21
84 -11 12 -17 35 -17 65 0 73 -81 223 -170 314 -38 40 -70 79 -70 87 0 25 -49
74 -85 86 l-35 12 0 112 c0 90 3 116 17 136 14 20 19 50 21 145 1 66 5 129 7
140 5 24 46 50 95 60 49 10 281 126 328 164 22 17 46 31 52 31 18 0 240 221
240 238 0 7 15 32 34 55 44 55 166 302 166 337 0 15 9 39 20 53 11 14 20 40
20 59 0 18 9 47 20 63 15 23 20 47 20 107 0 59 4 80 17 94 15 15 18 43 22 195
3 164 2 181 -17 211 -15 26 -21 56 -24 140 -3 72 -10 114 -20 130 -8 13 -18
40 -22 60 -8 42 -162 352 -199 401 -13 18 -31 46 -40 62 -25 48 -282 303 -322
319 -31 13 -35 19 -35 53 0 21 7 49 16 61 8 12 18 48 21 80 3 31 14 71 24 88
15 25 19 51 19 130 0 79 4 105 18 124 15 22 17 52 17 257 0 203 -2 234 -16
245 -11 8 -19 36 -23 77 -3 36 -12 74 -19 85 -8 12 -17 45 -20 75 -9 74 -189
438 -257 520 -26 31 -55 71 -63 88 -22 43 -391 409 -435 433 -20 10 -57 38
-82 60 -25 22 -58 48 -75 57 -16 9 -46 28 -65 43 -19 15 -66 44 -105 64 -38
19 -88 49 -110 64 -77 56 -172 112 -187 112 -22 0 -195 87 -238 119 -48 37
-214 121 -238 121 -11 0 -74 27 -140 60 -67 33 -130 60 -141 60 -10 0 -55 18
-100 40 -44 22 -89 40 -100 40 -10 0 -50 15 -88 34 -37 19 -86 39 -108 45 -23
6 -68 24 -101 40 -34 16 -79 34 -102 40 -22 6 -53 18 -69 26 -15 8 -37 15 -48
15 -11 0 -38 9 -60 20 -22 11 -49 20 -60 20 -11 0 -32 6 -47 14 -15 8 -53 20
-84 26 -31 7 -70 18 -87 25 -18 7 -53 16 -79 19 -48 7 -88 40 -88 74 0 32 -56
183 -106 288 -61 125 -135 242 -205 324 -25 30 -49 64 -53 76 -14 46 -177 187
-309 268 -18 11 -51 34 -75 52 -50 38 -363 194 -389 194 -10 0 -34 9 -54 19
-20 11 -60 21 -90 22 -32 2 -64 10 -79 21 -20 14 -48 18 -144 20 -101 2 -122
5 -135 20 -21 25 -116 25 -154 0 -22 -15 -51 -19 -150 -21 -96 -2 -126 -6
-140 -19 -11 -10 -42 -17 -80 -20 -35 -2 -69 -11 -79 -19 -9 -8 -36 -17 -60
-20 -24 -3 -50 -12 -59 -19 -8 -8 -37 -18 -63 -23 -29 -5 -58 -19 -75 -35 -16
-15 -77 -52 -137 -83 -60 -30 -128 -70 -151 -89 -48 -39 -58 -41 -98 -14 -16
11 -40 20 -51 20 -30 0 -217 95 -258 130 -24 21 -44 30 -69 30 -20 0 -38 4
-42 9 -16 26 -303 177 -375 197 -14 4 -41 19 -60 34 -30 23 -214 119 -470 245
-36 18 -81 34 -101 38 -20 3 -49 17 -65 32 -37 35 -136 85 -167 85 -13 0 -42
13 -63 28 -68 49 -115 73 -821 426 -381 190 -703 346 -715 346 -13 0 -29 4
-35 8 -17 11 -63 103 -63 126 0 31 -48 125 -108 211 -30 44 -73 106 -94 138
-50 73 -318 342 -361 361 -17 8 -52 33 -77 56 -25 23 -58 49 -75 57 -16 9 -46
28 -65 43 -42 33 -133 80 -155 80 -9 0 -54 18 -101 40 -47 22 -93 40 -102 40
-9 1 -35 9 -57 20 -22 11 -47 19 -56 20 -9 0 -36 7 -60 16 -24 9 -78 20 -119
24 -41 5 -88 15 -105 24 -43 23 -675 24 -718 1z"/>
<path d="M22004 35785 c-4 -9 -4 -18 -2 -21 9 -8 39 8 35 19 -6 18 -27 20 -33
2z"/>
<path d="M19040 35700 c-6 -12 -9 -24 -7 -27 9 -8 48 18 44 30 -6 20 -25 19
-37 -3z"/>
<path d="M22250 35700 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2
0 -4 -4 -4 -10z"/>
<path d="M22330 35625 c0 -8 7 -15 16 -15 14 0 14 3 4 15 -7 8 -14 15 -16 15
-2 0 -4 -7 -4 -15z"/>
<path d="M22370 35540 c0 -5 7 -10 16 -10 8 0 12 5 9 10 -3 6 -10 10 -16 10
-5 0 -9 -4 -9 -10z"/>
<path d="M18890 35500 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5
0 -10 -4 -10 -10z"/>
<path d="M20419 35435 c-281 -40 -510 -144 -721 -329 -141 -123 -216 -225
-342 -465 -42 -80 -88 -158 -103 -174 -16 -17 -91 -60 -173 -100 -80 -38 -271
-130 -425 -204 -154 -74 -370 -179 -480 -233 -110 -54 -324 -159 -475 -232
-264 -129 -651 -336 -711 -380 -16 -12 -26 -24 -23 -27 3 -3 407 -6 897 -6
722 0 902 -3 947 -14 236 -59 461 -269 536 -501 17 -52 18 -189 25 -2350 4
-1290 4 -2342 -1 -2401 -16 -188 -54 -306 -141 -429 -41 -58 -137 -144 -209
-188 -57 -33 -208 -80 -300 -92 -60 -7 -578 -10 -1730 -8 l-1645 3 -49 23
c-107 49 -173 128 -201 241 -39 150 40 310 183 373 50 23 172 28 427 19 l120
-5 8 85 c13 142 17 166 32 185 12 18 32 19 248 22 l235 3 8 -23 c4 -13 7 -78
7 -145 l1 -123 1157 0 c994 0 1160 2 1172 14 10 10 16 50 21 133 3 65 4 1059
2 2208 -5 2307 -1 2154 -67 2229 -59 68 34 64 -1609 67 l-1485 3 -115 -36
c-155 -49 -226 -61 -317 -56 -102 7 -163 30 -319 120 -223 130 -296 162 -443
197 -232 55 -488 28 -696 -73 -275 -135 -459 -379 -571 -758 -20 -68 -40 -131
-45 -140 -15 -29 -400 -205 -1224 -560 -154 -66 -431 -195 -615 -285 -722
-353 -1023 -574 -1224 -896 -111 -178 -151 -324 -151 -547 1 -214 21 -292 158
-610 125 -292 141 -362 94 -414 -12 -13 -104 -79 -204 -145 -270 -179 -383
-295 -483 -496 -68 -136 -90 -229 -91 -380 0 -243 87 -448 268 -628 100 -100
198 -169 377 -263 148 -79 235 -143 260 -193 11 -21 14 -196 17 -906 l4 -880
-23 -50 c-60 -130 -141 -207 -246 -234 -25 -6 -48 -17 -53 -23 -4 -7 -8 -323
-9 -703 0 -523 -3 -701 -13 -734 -49 -169 -185 -309 -343 -352 -30 -9 -262
-14 -788 -19 -820 -6 -778 -3 -874 -69 -95 -66 -181 -182 -211 -286 -46 -155
-45 -119 -45 -2450 0 -1253 4 -2248 10 -2311 10 -126 29 -202 73 -289 109
-219 295 -368 521 -417 83 -18 145 -21 696 -28 482 -6 616 -10 657 -22 144
-41 268 -165 327 -327 20 -54 21 -79 24 -904 2 -502 -1 -876 -7 -916 -12 -89
-25 -106 -183 -242 -153 -132 -228 -217 -303 -343 -67 -115 -81 -146 -112
-256 -33 -120 -40 -262 -19 -370 38 -187 96 -316 203 -449 85 -107 184 -191
363 -309 172 -113 240 -174 240 -214 0 -41 -35 -136 -107 -293 -131 -284 -178
-463 -177 -670 1 -174 24 -267 115 -450 57 -116 125 -204 274 -350 223 -221
422 -347 995 -633 384 -192 701 -339 1290 -597 403 -176 497 -223 522 -255 10
-14 44 -99 77 -190 32 -91 74 -199 93 -242 105 -225 278 -404 492 -508 119
-58 211 -85 344 -101 114 -13 214 1 360 53 128 45 206 87 381 205 240 163 309
186 450 153 44 -11 108 -31 143 -45 108 -44 646 -307 1293 -631 2402 -1206
2525 -1268 2574 -1311 32 -27 59 -70 116 -182 159 -317 306 -485 559 -641 254
-155 637 -230 891 -176 196 43 431 139 587 241 96 64 249 219 320 325 31 47
89 152 130 234 40 83 87 164 103 180 28 29 407 233 900 486 110 57 268 140
350 185 83 45 227 122 320 170 94 48 253 133 354 188 205 111 391 209 871 459
179 93 352 185 385 203 158 86 571 287 641 311 60 21 100 27 164 28 128 1 153
-10 442 -206 152 -103 272 -160 418 -200 72 -19 108 -23 235 -22 134 0 160 3
240 28 194 59 380 168 486 285 136 150 210 301 314 642 17 57 35 95 53 112 28
27 165 94 297 147 356 141 625 265 1283 591 725 358 821 412 1082 607 411 308
615 686 565 1052 -18 139 -51 246 -139 464 -41 100 -86 220 -101 267 l-26 86
21 35 c12 21 63 67 122 109 251 183 299 222 388 315 179 186 272 403 271 633
-1 175 -42 320 -137 481 -59 101 -196 243 -299 311 -38 26 -122 80 -185 122
-153 99 -160 108 -170 199 -13 114 -21 1608 -10 1713 22 194 158 362 334 414
42 12 186 15 821 21 854 7 840 6 992 75 267 123 429 335 461 605 13 112 6
4538 -8 4623 -32 202 -157 386 -321 472 -134 70 -91 67 -1044 75 -856 6 -860
6 -920 28 -174 65 -318 238 -345 416 -7 41 -12 315 -13 683 -3 598 -3 616 -22
629 -76 52 -104 77 -150 134 -140 175 -191 362 -151 560 35 173 97 280 256
446 84 87 109 130 101 174 -7 41 33 40 -1645 40 -1015 0 -1636 4 -1680 10
-124 18 -224 84 -299 198 -89 133 -82 40 -84 1147 -1 539 -2 985 -3 991 0 5
-24 40 -54 76 -94 113 -126 200 -126 340 0 230 160 455 378 530 86 29 229 31
312 4 231 -76 390 -291 390 -526 0 -147 -55 -277 -165 -390 l-63 -65 -6 -344
c-4 -189 -4 -562 0 -827 l7 -484 1522 0 c1206 0 1525 3 1532 13 6 6 16 35 23
62 28 110 75 157 246 243 91 46 260 162 336 232 115 105 218 280 266 452 26
96 23 289 -6 392 -71 248 -228 449 -478 614 -60 39 -165 109 -234 154 l-125
83 -3 48 c-4 65 16 138 98 347 123 317 161 467 162 635 0 111 -14 191 -54 303
-104 296 -298 526 -619 735 -63 41 -159 100 -214 132 -175 101 -721 369 -995
488 -320 139 -958 411 -1165 497 -82 34 -164 71 -182 81 -34 21 -45 45 -88
194 -66 230 -149 385 -280 524 -158 167 -344 263 -599 307 -182 32 -417 1
-587 -79 -41 -19 -137 -76 -214 -127 -77 -51 -174 -109 -215 -129 -70 -33 -81
-36 -170 -35 -120 0 -171 17 -472 158 -641 300 -3259 1607 -3519 1757 -79 45
-95 69 -176 250 -104 235 -176 340 -317 461 -244 212 -530 323 -856 333 -85 3
-171 -1 -231 -10z m326 -741 c231 -55 444 -280 491 -520 27 -139 -2 -321 -71
-434 -51 -84 -155 -200 -219 -245 l-57 -40 5 -775 c4 -801 7 -847 47 -941 25
-58 102 -133 166 -161 42 -19 69 -21 302 -22 285 -3 319 -8 446 -72 206 -105
394 -293 484 -485 62 -133 81 -213 91 -394 14 -250 15 -1739 1 -1805 -36 -175
-81 -281 -178 -417 -99 -139 -287 -266 -468 -314 -68 -18 -116 -22 -310 -26
l-230 -4 -62 -30 c-118 -57 -202 -183 -222 -332 -13 -94 -14 -3894 -2 -4058
12 -151 38 -223 109 -298 90 -95 130 -111 291 -121 75 -4 600 -5 1167 -3 774
4 1049 2 1100 -6 131 -23 269 -122 320 -229 23 -47 29 -74 32 -153 2 -53 -1
-129 -8 -168 -10 -62 -16 -74 -37 -82 -15 -5 -584 -9 -1441 -9 -1143 1 -1432
3 -1492 14 -318 57 -596 332 -680 674 -10 42 -23 131 -29 197 -13 159 -13
4122 0 4351 6 114 16 195 30 245 26 96 96 239 153 316 112 149 289 275 466
331 91 29 120 32 356 41 187 6 213 10 251 29 62 32 105 74 136 131 55 100 57
124 57 886 0 431 -4 725 -10 765 -21 132 -100 240 -215 295 -59 28 -63 29
-305 35 -273 8 -311 15 -460 90 -236 119 -378 294 -458 564 l-27 91 -2 933 -2
933 -61 45 c-66 50 -155 149 -196 219 -66 113 -100 271 -84 387 35 258 226
491 465 569 88 28 249 30 360 3z m963 -2008 c2 -116 -1 -173 -9 -182 -9 -11
-48 -14 -174 -14 -139 0 -164 2 -169 16 -8 22 -8 339 1 348 4 3 84 5 177 4
l171 -3 3 -169z m647 -310 c29 -13 36 -23 51 -72 19 -65 15 -234 -5 -273 -15
-27 -49 -36 -146 -36 -89 0 -131 17 -169 68 -44 60 -30 233 24 282 45 41 180
58 245 31z m2945 -151 c4 3 24 -6 44 -20 24 -16 38 -20 42 -13 13 20 34 -24
34 -68 0 -56 -17 -92 -51 -110 -50 -25 -97 -16 -146 29 -27 24 -29 54 -8 94 8
15 17 40 19 54 5 25 48 55 54 38 2 -5 7 -7 12 -4z m-10076 -154 c67 -30 132
-95 168 -169 30 -60 33 -75 32 -147 -2 -141 -66 -260 -166 -309 -105 -51 -262
-60 -343 -18 -52 26 -126 106 -159 170 -29 58 -49 164 -40 213 23 120 139 236
274 274 68 18 176 12 234 -14z m1130 -21 c15 -15 21 -449 6 -464 -12 -12 -261
-17 -447 -9 -103 5 -112 7 -117 27 -11 35 -24 368 -17 411 l6 40 100 6 c149
10 456 2 469 -11z m1884 -450 c2 -91 0 -193 -3 -228 l-7 -62 -230 2 -231 3
-15 40 c-18 50 -20 282 -3 342 9 32 18 44 44 53 43 17 208 26 337 20 l105 -5
3 -165z m-4581 60 c60 -26 127 -92 154 -153 l24 -52 3 -1229 c2 -774 -1 -1263
-7 -1319 -8 -70 -16 -99 -37 -130 -60 -92 -124 -127 -239 -135 -70 -4 -87 -2
-125 18 -67 34 -144 119 -170 187 l-22 58 1 1265 c1 832 5 1278 12 1304 45
167 241 257 406 186z m3811 -246 c2 -166 1 -182 -15 -189 -29 -12 -483 -19
-495 -7 -12 12 -24 317 -14 356 l6 26 258 -2 257 -3 3 -181z m10157 -25 c79
-16 127 -44 162 -96 86 -128 85 -276 -5 -403 -30 -44 -52 -62 -106 -90 l-69
-35 -1836 -5 -1836 -5 -41 -22 c-44 -23 -85 -66 -110 -114 -13 -26 -14 -370
-12 -2897 3 -2290 6 -2875 16 -2905 10 -29 144 -168 596 -620 675 -674 1091
-1112 1324 -1395 69 -83 142 -199 142 -224 0 -21 -322 -42 -360 -23 -41 22
-388 387 -650 685 -41 47 -114 128 -161 180 -112 124 -475 548 -659 770 -174
211 -283 338 -454 530 -155 174 -268 308 -302 360 -20 30 -27 59 -35 136 -15
151 -14 5520 0 5604 37 205 157 383 326 485 110 66 197 87 390 94 278 10 3623
1 3680 -10z m-11439 -170 c314 -55 632 -304 789 -618 84 -167 134 -391 121
-541 -19 -205 -83 -397 -184 -549 -207 -312 -563 -501 -946 -501 -150 0 -289
36 -461 121 -281 138 -521 455 -590 782 -19 89 -19 294 0 394 85 442 409 795
830 904 82 21 343 26 441 8z m-1568 -223 c2 -110 -1 -193 -6 -198 -14 -14
-433 -11 -446 2 -12 12 -16 354 -4 365 7 7 307 23 398 21 l55 -1 3 -189z
m-1940 -59 l5 -174 -99 -73 c-91 -68 -535 -364 -629 -420 -46 -27 -145 -91
-465 -300 -399 -260 -432 -281 -438 -275 -20 19 -30 361 -12 395 13 25 151
117 615 410 220 139 440 280 490 313 167 113 510 315 519 307 5 -5 11 -87 14
-183z m5569 -215 c30 -19 24 -503 -7 -522 -25 -16 -162 -22 -455 -21 -306 1
-357 4 -374 25 -19 22 -31 133 -31 275 0 146 10 214 33 228 7 4 46 10 87 14
110 9 733 10 747 1z m9373 -649 c61 -27 126 -93 156 -156 18 -40 24 -69 24
-123 0 -107 -23 -168 -91 -236 -48 -48 -67 -60 -128 -79 -163 -49 -311 12
-383 158 -83 169 -29 355 124 433 60 30 67 31 158 28 68 -3 108 -10 140 -25z
m-2792 -53 c123 -65 177 -159 176 -305 0 -66 -5 -89 -26 -131 -91 -176 -298
-241 -470 -147 -61 33 -103 80 -137 153 -37 78 -37 200 0 280 39 83 117 151
209 181 14 5 61 7 105 6 69 -3 89 -8 143 -37z m5845 -289 c-1 -90 -6 -168 -11
-173 -5 -5 -87 -10 -181 -11 -202 -2 -201 -3 -201 97 0 68 18 234 26 248 3 4
87 7 187 6 l182 -3 -2 -164z m-12571 -155 c58 -22 114 -75 142 -135 18 -40 21
-65 21 -186 0 -156 -17 -254 -47 -282 -18 -16 -41 -18 -202 -18 -255 1 -257 3
-321 191 l-27 82 -45 6 c-25 3 -130 6 -233 6 l-187 0 -7 71 c-6 66 -3 140 10
247 l5 44 422 -4 c370 -4 428 -7 469 -22z m-3477 -118 c3 -29 5 -118 3 -198
l-3 -145 -110 -3 c-133 -4 -326 6 -346 18 -17 11 -25 245 -12 320 11 57 11 57
265 59 l197 1 6 -52z m14907 10 c72 -33 142 -103 176 -176 24 -51 27 -68 27
-167 0 -96 -3 -116 -24 -155 -55 -104 -120 -158 -223 -186 -103 -27 -222 -9
-310 47 -53 34 -82 70 -124 149 -27 51 -29 64 -29 160 0 123 18 172 94 253 76
81 146 108 271 104 66 -2 98 -9 142 -29z m-14284 -556 c74 -38 131 -94 163
-160 21 -40 24 -62 24 -152 0 -89 -3 -112 -23 -152 -37 -74 -96 -134 -169
-170 -60 -29 -74 -32 -162 -33 -87 0 -100 3 -143 27 -59 35 -121 106 -161 183
-27 53 -31 70 -32 145 0 71 4 94 26 140 35 74 108 153 172 185 48 24 60 26
147 23 83 -4 103 -8 158 -36z m-3610 -405 c293 -85 512 -391 488 -682 -19
-223 -145 -414 -342 -517 -219 -115 -408 -115 -639 0 -88 43 -225 178 -272
267 -50 96 -77 198 -77 295 0 109 15 173 71 289 82 172 241 302 425 351 106
28 244 26 346 -3z m13360 -25 c155 -60 275 -218 305 -402 23 -148 -55 -321
-184 -411 l-64 -45 3 -1174 c1 -646 6 -1243 10 -1326 l8 -151 44 -48 c25 -27
83 -90 130 -140 47 -49 185 -200 306 -335 304 -336 537 -591 804 -880 517
-559 830 -937 830 -1001 0 -14 -22 -17 -177 -23 -98 -4 -197 -9 -221 -13 -41
-5 -44 -4 -95 48 -371 382 -366 377 -842 894 -121 131 -308 333 -415 448 -495
530 -777 845 -810 907 -12 21 -13 259 -12 1398 l2 1374 -32 26 c-161 133 -237
267 -238 417 -1 201 149 394 350 452 66 19 231 11 298 -15z m1385 -202 c74
-23 162 -83 225 -155 123 -140 158 -358 82 -512 -39 -78 -132 -175 -206 -215
-189 -102 -426 -66 -580 89 -215 214 -157 606 111 757 107 60 246 74 368 36z
m3001 -531 c68 -25 140 -93 176 -164 32 -64 41 -210 17 -280 -33 -96 -111
-175 -209 -212 -24 -9 -78 -16 -123 -17 -69 -1 -88 3 -137 27 -73 36 -139 100
-174 168 -39 76 -46 208 -15 290 37 97 116 170 224 205 56 18 169 11 241 -17z
m-15871 -715 c163 -42 339 -177 442 -339 162 -253 130 -569 -78 -792 -203
-217 -477 -288 -734 -191 -126 48 -193 90 -283 178 -197 194 -255 487 -148
746 78 188 258 348 448 398 76 20 275 20 353 0z m1607 -494 c13 -24 16 -318 4
-330 -16 -15 -297 -24 -323 -11 -22 12 -22 15 -19 170 2 115 7 162 17 174 11
14 36 17 162 17 137 0 149 -1 159 -20z m7162 -49 c161 -62 272 -209 298 -392
33 -233 -143 -486 -369 -529 -250 -47 -473 80 -557 318 -42 121 -28 307 31
408 53 90 150 167 260 207 72 25 257 19 337 -12z m-10424 -279 c19 -13 32 -69
39 -172 7 -119 -5 -168 -52 -209 -33 -28 -42 -31 -106 -31 -81 0 -126 17 -157
60 -38 51 -47 108 -34 206 12 92 29 129 65 144 28 11 228 12 245 2z m6142 -13
c25 -11 72 -44 105 -72 l59 -52 317 3 c373 4 338 19 342 -144 3 -150 14 -144
-257 -143 -116 0 -251 4 -301 8 -77 7 -92 6 -105 -8 -27 -29 -132 -112 -164
-129 -42 -22 -187 -22 -237 0 -139 61 -212 245 -152 380 28 61 98 136 148 159
58 27 185 25 245 -2z m-6913 -166 c24 -31 28 -332 4 -371 -12 -20 -62 -32
-137 -32 -85 0 -136 17 -155 52 -18 33 -22 230 -7 303 12 57 15 60 48 67 60
11 233 -2 247 -19z m15347 -292 c128 -63 218 -171 252 -302 21 -81 15 -202
-15 -279 -19 -50 -19 -56 -5 -80 22 -36 1798 -1803 1862 -1852 31 -24 70 -44
95 -49 23 -4 227 -8 452 -9 441 0 492 -5 562 -53 100 -68 136 -309 66 -446
-23 -46 -37 -60 -78 -81 l-50 -25 -501 0 -501 0 -79 59 c-131 97 -1920 1903
-2156 2175 l-46 53 -98 15 c-132 19 -180 42 -252 117 -250 260 -159 673 173
783 26 8 77 12 147 10 96 -3 113 -6 172 -36z m3264 -685 c256 -135 353 -427
226 -679 -37 -72 -142 -172 -218 -208 -282 -132 -638 61 -686 373 -35 226 107
463 324 540 41 15 74 18 166 15 111 -3 117 -4 188 -41z m-7353 -186 c142 -20
264 -112 326 -245 113 -240 -42 -533 -309 -585 -189 -37 -371 60 -464 246 -37
75 -42 95 -46 170 -4 76 -1 93 23 157 23 58 42 85 94 138 113 112 209 142 376
119z m-3840 -119 c333 -81 653 -388 736 -708 29 -111 41 -431 37 -987 -2 -358
-6 -458 -16 -468 -17 -17 -629 -15 -646 2 -8 8 -13 186 -17 588 -5 372 -11
592 -18 620 -40 153 -166 272 -331 313 -46 12 -528 14 -2935 14 -3031 -1
-2980 0 -3081 -45 -101 -44 -200 -176 -225 -300 -7 -36 -12 -247 -13 -605 -1
-302 -6 -558 -10 -567 -16 -35 -72 -41 -352 -35 -148 3 -280 7 -293 9 -19 2
-27 12 -33 37 -5 18 -7 329 -5 690 4 706 2 684 59 846 73 212 230 395 438 512
105 60 216 93 340 102 47 3 1478 6 3180 5 l3095 -1 90 -22z m-1780 -1551 c170
-43 328 -169 372 -295 23 -63 26 -316 5 -337 -11 -11 -395 -13 -2065 -13
l-2052 0 -6 65 c-14 154 20 285 97 370 94 104 284 205 419 223 17 2 732 5
1591 6 1532 1 1562 1 1639 -19z m421 -1691 c202 -28 304 -107 413 -319 42 -81
376 -900 579 -1420 33 -85 122 -310 197 -500 76 -190 193 -489 260 -665 68
-176 144 -373 169 -437 57 -146 96 -279 96 -327 0 -20 -11 -60 -25 -87 -82
-164 -212 -222 -481 -211 -168 6 -231 27 -315 105 -72 66 -98 110 -160 262
l-48 115 -758 3 c-417 1 -768 0 -780 -3 -17 -4 -39 -39 -93 -148 -81 -165
-121 -223 -185 -267 -76 -52 -147 -73 -267 -78 -235 -9 -405 59 -486 196 -24
42 -27 56 -26 132 2 109 18 161 189 590 159 400 238 602 299 768 25 68 150
383 277 700 127 317 289 725 360 905 155 396 193 471 274 553 126 127 275 166
511 133z m-6683 -40 c88 -45 232 -177 767 -704 202 -198 392 -380 423 -404 55
-42 59 -43 85 -30 15 8 216 201 447 429 551 544 645 629 779 700 l58 30 512 0
511 0 50 -24 c57 -26 98 -70 129 -136 l21 -45 3 -1740 c2 -1247 0 -1755 -8
-1792 -14 -66 -59 -133 -112 -168 -65 -43 -190 -50 -693 -39 -403 9 -422 10
-461 31 -65 35 -131 114 -144 176 -9 38 -11 280 -8 875 1 452 1 822 -2 822
-17 0 -466 -411 -745 -680 -145 -140 -268 -242 -330 -272 -38 -18 -44 -19 -75
-5 -76 33 -230 172 -889 803 -98 94 -177 162 -182 157 -5 -5 -10 -393 -11
-863 -3 -963 3 -886 -82 -974 -69 -71 -74 -71 -613 -69 -295 1 -487 6 -512 13
-55 15 -134 89 -168 158 l-28 57 -3 1734 c-3 1906 -6 1791 58 1879 16 23 53
55 82 72 l53 30 523 0 c514 0 524 0 565 -21z m13053 -3 c130 -40 195 -126 380
-501 79 -159 179 -355 222 -435 178 -328 186 -340 203 -340 20 0 94 135 302
555 121 242 237 471 260 510 57 98 115 157 195 196 60 29 78 33 173 37 181 8
279 -28 382 -138 87 -92 112 -146 111 -235 -2 -83 -25 -153 -120 -353 -36 -75
-100 -213 -141 -307 -41 -93 -139 -305 -218 -470 -318 -667 -428 -907 -457
-994 -21 -63 -22 -87 -29 -621 -4 -397 -10 -566 -19 -595 -32 -103 -128 -194
-232 -222 -90 -23 -214 -27 -298 -9 -196 42 -297 145 -320 327 -5 47 -10 285
-10 552 l0 468 -26 77 c-26 79 -119 277 -379 807 -141 287 -271 552 -478 975
-114 235 -137 298 -137 385 0 85 37 160 112 231 101 96 192 126 363 120 61 -3
133 -11 161 -20z m3115 10 c117 -21 197 -71 258 -160 59 -87 55 -18 61 -1221
l5 -1110 23 -70 c33 -97 62 -144 129 -205 105 -96 243 -137 360 -107 90 24
148 54 211 111 74 68 118 140 144 234 22 76 22 91 27 1177 6 1091 6 1100 27
1146 44 95 133 166 244 195 112 29 334 9 425 -39 44 -22 111 -90 134 -135 43
-84 43 -108 33 -1347 -9 -1131 -10 -1184 -30 -1272 -26 -117 -66 -242 -99
-307 -79 -158 -254 -361 -407 -474 -129 -94 -309 -169 -519 -214 -327 -70
-756 24 -1045 229 -145 103 -305 279 -386 425 -45 82 -100 241 -128 375 l-23
108 0 1075 c0 1281 0 1295 40 1376 87 177 273 253 516 210z m3345 3 c43 -6
101 -20 131 -30 66 -25 153 -103 184 -166 l24 -48 5 -610 c3 -339 9 -616 14
-624 8 -12 88 -13 534 -8 289 4 528 9 531 13 3 3 8 281 11 617 l5 612 24 48
c31 63 129 151 200 179 82 32 286 33 386 1 111 -36 197 -118 228 -217 18 -61
18 -3367 -1 -3446 -15 -65 -67 -147 -115 -185 -57 -43 -141 -67 -252 -73 -122
-5 -192 8 -285 54 -81 41 -130 93 -162 173 -22 56 -23 60 -26 699 l-3 642
-542 -2 -542 -3 -2 -535 c-3 -657 -10 -775 -47 -847 -64 -128 -190 -193 -371
-193 -147 0 -257 40 -340 124 -110 111 -100 -79 -103 1836 -2 1222 0 1680 8
1720 29 139 154 246 313 269 88 12 106 12 193 0z m-7921 -49 c62 -13 146 -62
206 -121 93 -91 145 -261 119 -392 -28 -143 -134 -279 -257 -328 l-58 -24
-807 4 -808 3 -10 -26 c-6 -17 -10 -150 -10 -335 l0 -309 23 -6 c12 -3 278 -6
590 -6 548 0 570 -1 629 -21 86 -29 137 -61 196 -123 161 -170 158 -414 -8
-576 -31 -31 -83 -68 -115 -84 -112 -53 -157 -56 -756 -56 -431 0 -551 -3
-554 -12 -2 -7 -8 -283 -13 -613 -9 -651 -8 -641 -67 -726 -33 -46 -119 -103
-190 -125 -72 -22 -200 -29 -279 -15 -105 18 -170 47 -229 101 -78 71 -104
136 -117 286 -11 133 -12 2188 -2 2854 l7 415 27 56 c42 85 104 141 192 172
21 8 338 13 996 18 1030 6 1216 5 1295 -11z m7301 -4957 c167 -3 304 -9 304
-12 -2 -25 -196 -225 -490 -505 -157 -149 -386 -370 -510 -491 -124 -121 -358
-348 -520 -505 -162 -157 -405 -393 -540 -525 -135 -132 -339 -330 -454 -440
-185 -178 -496 -510 -539 -576 -15 -22 -16 -202 -15 -1999 1 -2073 2 -2014
-42 -2100 -78 -153 -276 -219 -425 -143 -85 44 -139 95 -172 161 l-28 57 -3
2074 -2 2074 26 45 c31 53 263 286 639 642 148 140 398 379 555 531 157 151
375 360 485 464 313 296 708 669 840 795 363 346 529 480 573 465 7 -3 150 -8
318 -12z m-3073 -3 c172 0 197 -2 197 -16 0 -18 -239 -264 -445 -457 -82 -77
-202 -190 -265 -251 -63 -61 -180 -174 -260 -251 -80 -77 -221 -212 -315 -300
-93 -88 -224 -212 -290 -275 -66 -64 -167 -160 -225 -215 -58 -55 -190 -183
-295 -285 -104 -102 -307 -297 -450 -432 -261 -248 -505 -496 -537 -546 -16
-25 -18 -101 -24 -943 l-7 -915 60 -22 c128 -47 263 -164 321 -278 79 -157 82
-279 10 -452 -27 -65 -45 -90 -117 -163 -97 -97 -171 -140 -285 -164 -76 -15
-177 -8 -251 18 -138 49 -269 167 -335 299 -100 202 -72 420 77 601 26 32 59
73 71 90 l24 32 -6 240 c-3 132 -9 616 -12 1075 l-7 836 23 44 c43 85 129 177
491 525 200 193 487 469 639 615 311 301 676 650 825 790 536 504 644 603 795
726 111 90 97 86 255 80 77 -3 229 -6 338 -6z m-1465 -12 c-10 -29 -229 -212
-483 -404 -148 -113 -339 -259 -424 -327 -200 -158 -243 -187 -316 -209 -73
-23 -116 -17 -179 22 -156 99 -180 335 -44 428 24 16 133 77 243 137 231 124
375 212 494 302 l85 63 314 0 c246 0 313 -3 310 -12z m-11134 -304 c3 -9 6
-59 7 -112 1 -137 14 -320 23 -329 4 -4 727 -10 1606 -13 879 -3 1602 -8 1606
-13 15 -15 -18 -144 -59 -227 -76 -154 -230 -282 -441 -366 -170 -67 -111 -65
-1451 -62 l-1210 3 -72 23 c-264 81 -480 231 -604 420 -53 81 -84 164 -99 267
-11 80 -13 263 -4 353 l7 62 161 3 c480 8 524 8 530 -9z m7983 1 c77 -23 136
-74 174 -150 30 -61 31 -69 27 -152 -5 -101 -24 -146 -85 -205 -44 -43 -108
-73 -175 -83 -103 -15 -222 54 -283 166 -25 47 -29 64 -29 129 1 129 58 226
166 279 70 35 125 40 205 16z m-2853 -1 c15 -6 16 -58 15 -528 -1 -583 -1
-588 61 -647 78 -74 67 -73 785 -74 l640 0 70 -24 c186 -62 348 -216 444 -423
80 -171 74 22 78 -2335 5 -2324 8 -2190 -60 -2356 -62 -152 -189 -308 -321
-392 -70 -44 -176 -89 -266 -111 -72 -18 -141 -19 -1545 -19 l-1470 0 -86 31
c-222 79 -364 211 -446 414 -53 132 -53 132 -53 1010 l1 815 -93 7 c-168 13
-255 53 -374 172 -64 64 -90 100 -124 168 -39 79 -43 95 -48 180 -11 212 91
403 280 526 188 122 455 133 658 26 168 -88 297 -242 347 -411 15 -52 17 -165
22 -1128 6 -1137 5 -1099 54 -1127 31 -18 2651 -25 2712 -8 58 17 103 64 122
130 15 50 17 232 17 2025 1 1923 1 1971 -18 2009 -11 21 -35 53 -54 72 -67 65
-59 64 -746 64 -711 0 -700 -1 -865 81 -89 44 -118 65 -191 138 -73 72 -95
101 -134 181 -79 162 -79 155 -71 875 4 347 9 638 11 648 5 16 29 17 319 17
172 0 321 -3 329 -6z m11164 -538 c56 -77 102 -145 102 -152 0 -21 -96 -131
-230 -264 -354 -351 -752 -741 -1080 -1056 -416 -401 -854 -842 -920 -929
l-45 -58 -3 -556 c-2 -305 -1 -565 3 -578 3 -14 16 -25 33 -29 105 -26 206
-114 264 -232 l43 -86 0 -116 c0 -113 -1 -118 -35 -185 -40 -79 -88 -132 -143
-159 -21 -9 -41 -24 -44 -32 -5 -14 64 -263 91 -329 10 -24 23 -36 43 -41 156
-35 248 -84 349 -184 238 -236 242 -582 9 -816 -130 -131 -265 -193 -435 -201
-128 -6 -197 9 -320 69 -152 74 -267 212 -320 383 -73 239 32 522 248 662 29
19 57 45 62 58 7 17 0 59 -26 157 -46 173 -49 180 -104 198 -161 54 -266 155
-310 298 -58 187 -19 335 131 499 l39 42 -7 734 -6 733 25 55 c33 68 86 123
483 495 176 165 419 397 540 515 122 118 326 313 455 434 129 121 331 314 450
429 118 115 272 260 342 323 71 63 133 123 139 135 10 19 13 17 43 -29 18 -26
78 -111 134 -187z m-7796 -1007 c115 -25 193 -91 255 -217 35 -70 38 -82 38
-161 -1 -101 -24 -168 -83 -246 -67 -89 -109 -112 -249 -141 -19 -3 -22 -12
-28 -86 -3 -46 -5 -711 -3 -1478 l3 -1395 23 -55 c13 -30 64 -121 113 -202 49
-81 102 -173 117 -205 l27 -58 3 -1508 c2 -1022 -1 -1520 -8 -1545 -13 -47
-51 -76 -247 -186 -84 -47 -170 -97 -193 -112 -22 -15 -44 -24 -48 -20 -4 4
-9 746 -12 1649 l-5 1642 -32 70 c-17 39 -63 126 -102 195 -117 206 -105 -23
-102 1957 2 1889 -1 1792 58 1893 59 100 157 181 252 206 59 16 155 17 223 3z
m-11015 -169 c83 -29 149 -78 223 -166 108 -129 76 -117 300 -109 1326 43
1525 46 3165 57 2418 17 2190 18 2250 -12 59 -30 105 -86 135 -167 26 -70 23
-129 -13 -200 -34 -65 -68 -100 -125 -126 l-47 -22 -1805 3 c-993 1 -2244 5
-2781 9 l-976 6 -47 -71 c-114 -172 -270 -262 -453 -262 -250 0 -476 189 -529
443 -40 188 48 408 214 536 65 50 140 86 209 100 70 15 213 5 280 -19z m14193
-325 c56 -29 90 -95 90 -174 0 -89 -40 -153 -117 -188 -49 -23 -59 -24 -100
-14 -53 14 -103 46 -135 86 -47 60 -32 209 26 264 53 50 166 62 236 26z
m-7147 -757 c4 -62 7 -139 7 -171 0 -53 -2 -58 -26 -67 -33 -13 -304 -13 -324
0 -12 7 -16 40 -18 165 -2 86 -1 162 2 170 4 12 36 15 179 15 l174 0 6 -112z
m12151 -127 c118 -58 203 -180 213 -305 12 -150 -80 -305 -229 -383 -48 -25
-63 -28 -153 -28 -95 0 -103 2 -163 34 -79 43 -125 94 -170 189 -32 68 -36 84
-36 161 -1 73 3 95 26 143 47 100 137 180 241 214 27 9 71 13 125 10 68 -3 95
-10 146 -35z m-5709 -256 c98 -26 199 -90 300 -190 166 -165 236 -362 200
-567 -29 -167 -89 -282 -203 -390 -80 -75 -138 -111 -232 -143 -256 -87 -487
-42 -681 134 -143 129 -215 280 -226 471 -7 126 15 229 74 348 59 120 212 259
348 317 110 47 287 55 420 20z m4403 -362 l-3 -188 -179 -3 c-137 -2 -181 1
-188 10 -4 7 -8 93 -8 191 l0 177 190 0 190 0 -2 -187z m-15976 98 c67 -26
148 -95 184 -158 35 -58 64 -154 64 -208 0 -176 -145 -331 -340 -365 -45 -8
-281 -10 -770 -8 l-705 3 -58 27 c-80 38 -160 117 -200 197 -30 61 -32 73 -32
166 1 89 4 106 28 156 36 72 106 142 176 176 l56 28 565 6 c867 9 963 7 1032
-20z m1545 -87 c74 -36 147 -109 181 -182 23 -50 27 -69 27 -157 -1 -89 -4
-106 -28 -157 -55 -113 -157 -188 -284 -210 -320 -54 -560 330 -365 587 49 64
122 119 186 139 81 25 211 16 283 -20z m4291 -309 c100 -30 195 -129 233 -244
30 -90 24 -205 -16 -287 -37 -75 -110 -148 -183 -182 -50 -24 -69 -27 -157
-27 -90 0 -105 3 -154 28 -92 49 -181 162 -205 259 -13 57 -8 172 11 221 41
106 137 202 234 232 59 18 174 18 237 0z m11756 -584 c3 -5 7 -91 8 -192 3
-213 1 -221 -78 -283 -124 -99 -549 -427 -799 -616 -93 -71 -185 -141 -203
-156 -18 -15 -35 -24 -38 -21 -9 9 -33 107 -54 225 -17 92 -18 116 -8 132 16
26 150 141 288 247 58 45 175 137 260 204 85 68 253 196 372 286 119 90 220
167 223 173 8 12 22 13 29 1z m-18951 -424 c68 -32 141 -107 179 -184 28 -58
30 -68 26 -150 -5 -109 -34 -169 -120 -248 -75 -69 -131 -89 -242 -83 -96 5
-154 30 -215 92 -139 144 -143 347 -8 493 41 44 114 89 172 104 50 14 153 1
208 -24z m4380 -64 c12 -123 8 -339 -6 -351 -7 -6 -82 -12 -177 -14 l-165 -3
-3 205 c-1 112 0 210 2 217 4 10 46 13 174 13 l169 0 6 -67z m-1304 -138 c256
-87 476 -340 522 -600 25 -144 -13 -343 -89 -470 -42 -69 -158 -194 -220 -237
-226 -156 -498 -181 -738 -69 -168 78 -300 211 -374 374 -52 116 -64 173 -63
297 0 102 4 126 32 210 90 268 267 442 521 510 113 30 294 24 409 -15z m9919
-214 c17 -10 31 -334 15 -344 -12 -7 -332 -12 -339 -5 -23 24 -13 318 13 343
11 12 44 15 156 15 78 0 148 -4 155 -9z m-1302 -603 c72 -5 69 34 72 -773 l3
-722 -27 -33 c-26 -30 -82 -61 -148 -81 -71 -21 -143 32 -166 122 -17 66 -10
1405 7 1435 7 12 25 30 40 40 31 21 126 34 160 22 13 -4 39 -8 59 -10z
m-10201 -40 c9 -24 20 -310 13 -321 -5 -8 -60 -13 -171 -15 -213 -5 -200 -16
-195 177 2 80 7 152 11 159 6 9 52 12 173 12 123 0 166 -3 169 -12z m11524
-135 c141 -45 248 -227 222 -374 -22 -128 -112 -233 -228 -269 -94 -29 -185
-27 -251 6 -67 33 -135 103 -170 173 -39 80 -38 181 3 266 37 78 134 176 195
198 60 21 165 21 229 0z m155 -1315 c4 -84 3 -166 -2 -183 -7 -25 -33 -44
-173 -123 -398 -227 -489 -277 -859 -472 -102 -53 -279 -149 -395 -212 -261
-143 -557 -290 -567 -280 -3 4 -10 75 -14 158 -8 179 -1 213 54 248 21 12 210
112 422 221 212 108 410 212 440 230 311 185 1063 581 1081 569 4 -2 10 -73
13 -156z m-5904 -418 l0 -180 -26 -10 c-14 -6 -115 -10 -224 -10 -171 0 -199
2 -204 16 -8 21 -8 349 1 357 3 4 107 7 230 7 l223 0 0 -180z m1801 -996 c173
-62 344 -230 406 -402 61 -166 33 -365 -73 -523 -91 -135 -213 -218 -384 -260
-241 -60 -509 53 -659 276 -74 111 -96 185 -96 325 0 122 11 173 62 276 71
146 225 275 380 319 74 21 292 15 364 -11z"/>
<path d="M22035 26231 c-53 -24 -91 -70 -110 -133 -20 -67 -19 -94 5 -145 29
-65 95 -103 177 -103 101 0 167 43 198 129 29 84 15 148 -47 211 -58 59 -148
75 -223 41z"/>
<path d="M29420 24804 c-53 -23 -101 -92 -114 -166 -21 -114 81 -228 202 -228
134 0 235 167 173 287 -50 100 -167 147 -261 107z"/>
<path d="M17025 19983 c-4 -10 -26 -74 -50 -143 -24 -69 -78 -219 -120 -335
-79 -214 -170 -514 -159 -524 8 -9 546 -14 640 -6 l82 7 -9 36 c-19 86 -62
210 -142 417 -46 121 -104 274 -127 340 -47 135 -87 225 -100 225 -4 0 -11 -8
-15 -17z"/>
<path d="M25850 35106 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 -5
3 -10 -1 -10 -9z"/>
<path d="M25186 34929 c-25 -30 -26 -34 -26 -174 l0 -143 31 -26 c19 -16 43
-26 62 -26 18 0 46 -8 62 -17 25 -14 64 -16 235 -17 l205 -1 41 27 c82 53 86
65 82 220 -3 128 -4 138 -27 162 l-24 26 -308 0 -307 0 -26 -31z m642 -172 l2
-177 -25 -10 c-51 -19 -581 -8 -601 13 -11 10 -18 245 -10 301 6 35 12 46 29
49 12 2 153 4 312 3 l290 -1 3 -178z"/>
<path d="M17290 34500 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5
0 -10 -4 -10 -10z"/>
<path d="M23965 34299 c-4 -6 -5 -13 -2 -16 7 -7 27 6 27 18 0 12 -17 12 -25
-2z"/>
<path d="M16647 34105 c-8 -18 11 -31 25 -17 11 11 3 32 -12 32 -4 0 -10 -7
-13 -15z"/>
<path d="M16090 33860 c0 -13 5 -20 13 -17 6 2 12 10 12 17 0 7 -6 15 -12 18
-8 2 -13 -5 -13 -18z"/>
<path d="M13957 33663 c-13 -14 -41 -19 -121 -23 -63 -3 -109 -10 -119 -18 -9
-7 -42 -16 -74 -19 -32 -3 -67 -11 -78 -18 -11 -7 -36 -16 -55 -19 -19 -4
-131 -55 -247 -113 -192 -96 -220 -114 -290 -179 -43 -40 -86 -76 -96 -79 -9
-4 -23 -17 -30 -29 -6 -13 -50 -65 -97 -115 -47 -50 -92 -104 -100 -120 -9
-15 -29 -45 -46 -67 -33 -42 -151 -279 -179 -359 -10 -27 -20 -77 -24 -109 -4
-37 -12 -62 -21 -67 -54 -28 -110 -49 -131 -49 -13 0 -37 -9 -54 -20 -16 -11
-45 -20 -64 -20 -19 0 -42 -7 -52 -16 -10 -9 -37 -18 -61 -21 -24 -3 -50 -12
-59 -20 -9 -8 -34 -17 -55 -20 -22 -3 -55 -14 -74 -25 -19 -10 -46 -18 -60
-18 -14 0 -38 -9 -55 -20 -16 -11 -37 -20 -46 -20 -9 0 -22 -6 -28 -14 -7 -8
-31 -17 -54 -21 -23 -4 -51 -12 -62 -19 -11 -7 -54 -24 -95 -40 -41 -15 -88
-33 -105 -41 -16 -8 -43 -17 -60 -21 -36 -7 -917 -446 -960 -478 -16 -12 -61
-40 -100 -61 -84 -46 -219 -137 -260 -175 -16 -15 -50 -40 -75 -55 -56 -34
-486 -465 -503 -503 -7 -15 -27 -47 -45 -72 -98 -134 -162 -244 -162 -277 0
-9 -9 -37 -21 -62 -71 -154 -90 -211 -96 -281 -3 -32 -13 -64 -24 -79 -17 -22
-19 -43 -19 -273 0 -192 3 -255 14 -276 7 -15 17 -47 21 -72 3 -25 24 -97 46
-161 33 -96 39 -129 39 -195 l0 -80 -150 -153 c-83 -85 -158 -167 -167 -185
-9 -17 -28 -47 -43 -66 -39 -50 -160 -290 -160 -318 -1 -9 -9 -35 -20 -57 -13
-28 -19 -60 -19 -105 l1 -65 23 88 c30 117 59 193 112 301 83 168 144 250 314
419 l159 159 -20 80 c-12 44 -32 115 -45 157 -41 130 -75 294 -84 413 -51 630
342 1305 1029 1768 211 142 421 260 780 440 244 122 338 164 530 237 80 30
217 83 305 118 144 57 270 100 565 194 147 46 169 57 176 89 30 133 67 239
124 354 122 246 338 495 552 637 520 346 1179 409 1703 162 44 -21 154 -79
245 -130 155 -86 190 -101 190 -83 -1 13 -30 46 -36 39 -3 -3 -135 59 -293
139 -258 129 -293 144 -339 144 -35 0 -56 5 -68 18 -14 13 -41 18 -124 23 -76
4 -113 10 -130 22 -36 25 -248 25 -273 0z"/>
<path d="M15324 33549 c-10 -17 13 -36 27 -22 12 12 4 33 -11 33 -5 0 -12 -5
-16 -11z"/>
<path d="M28084 33509 c-10 -17 13 -36 27 -22 12 12 4 33 -11 33 -5 0 -12 -5
-16 -11z"/>
<path d="M15124 33429 c-3 -6 -2 -15 2 -19 12 -12 38 5 30 19 -9 14 -23 14
-32 0z"/>
<path d="M15210 33334 c0 -8 5 -12 10 -9 6 3 10 10 10 16 0 5 -4 9 -10 9 -5 0
-10 -7 -10 -16z"/>
<path d="M33515 28820 c-16 -11 -44 -20 -61 -20 -31 0 -84 -32 -84 -52 0 -5
10 -22 21 -36 l21 -27 -7 42 c-6 40 -5 44 20 53 43 16 214 23 295 12 61 -9 79
-16 98 -37 l22 -26 0 23 c0 31 -18 48 -50 48 -14 0 -42 9 -63 20 -52 28 -170
28 -212 0z"/>
<path d="M7670 28779 c-19 -10 -44 -19 -56 -19 -11 0 -39 -13 -61 -29 -76 -55
-73 -37 -73 -412 0 -321 1 -337 20 -362 11 -14 20 -31 20 -39 0 -18 20 -38 39
-38 8 0 23 -8 34 -17 15 -14 40 -19 116 -20 118 -3 131 0 131 36 0 15 9 36 20
46 20 18 21 27 18 423 l-3 404 -28 24 c-36 31 -124 33 -177 3z m180 -28 c6
-13 10 -157 10 -401 0 -423 -1 -432 -64 -472 -64 -40 -212 -10 -258 53 -30 41
-40 168 -36 456 2 148 8 276 12 286 18 38 182 95 278 96 37 1 50 -3 58 -18z"/>
<path d="M33840 28178 c0 -470 0 -471 20 -453 19 18 20 31 20 460 0 436 -2
465 -32 465 -4 0 -8 -212 -8 -472z"/>
<path d="M33376 28358 c-14 -19 -16 -65 -16 -301 l0 -278 60 -56 60 -55 0
-223 c0 -207 1 -224 20 -248 13 -16 20 -40 20 -66 0 -36 3 -41 28 -47 15 -4
35 -14 45 -22 11 -10 43 -18 80 -20 l62 -4 53 55 52 56 0 273 0 273 -158 1
c-179 2 -164 -11 23 -20 66 -3 121 -5 123 -5 1 -1 2 -113 2 -250 l0 -248 -31
-39 c-40 -51 -64 -63 -122 -64 -37 0 -58 7 -91 29 -65 45 -71 72 -72 361 l-1
245 -41 10 c-80 20 -77 7 -76 355 0 171 -1 310 -2 310 -2 0 -10 -10 -18 -22z"/>
<path d="M8536 27838 c-14 -19 -16 -63 -16 -311 0 -225 3 -294 14 -315 7 -15
17 -47 21 -72 19 -124 172 -469 251 -567 19 -23 34 -47 34 -54 0 -17 209 -227
234 -235 12 -4 39 -21 61 -39 22 -18 110 -67 195 -109 85 -42 162 -84 172 -93
17 -15 18 -48 18 -480 l0 -465 -29 -29 -29 -29 -242 0 -241 0 -91 90 c-141
140 -231 182 -402 188 -87 3 -111 0 -125 -12 -10 -9 -33 -18 -52 -22 -107 -18
-267 -151 -323 -269 -16 -33 -37 -76 -47 -96 -16 -31 -19 -60 -19 -178 l0
-141 46 -93 c34 -67 64 -110 112 -159 37 -38 73 -68 82 -68 8 0 35 -18 60 -40
36 -33 52 -40 85 -40 30 0 43 -5 53 -21 12 -19 20 -20 118 -16 77 4 110 9 123
21 10 9 30 16 45 16 15 0 53 12 84 26 72 33 192 148 192 183 0 21 -4 19 -35
-21 -102 -134 -313 -218 -476 -188 -133 23 -298 127 -374 235 -68 96 -112 252
-100 355 43 360 378 586 713 481 84 -26 136 -63 236 -165 l89 -91 236 0 c276
0 306 4 316 43 13 46 18 958 5 981 -6 11 -72 52 -148 91 -75 38 -173 93 -217
122 -314 207 -572 639 -625 1048 -14 112 -12 382 5 475 8 43 12 81 11 83 -2 2
-11 -7 -20 -20z"/>
<path d="M34632 26735 l-32 -27 0 -367 c0 -338 1 -369 18 -383 24 -21 139 -78
158 -78 23 0 136 56 162 80 l23 21 -3 345 -3 345 -25 20 c-56 44 -104 61 -185
66 -77 5 -82 4 -113 -22z m272 -38 c16 -11 28 -31 32 -54 4 -21 8 -172 8 -335
l1 -297 -39 -40 c-22 -23 -59 -47 -85 -56 -44 -15 -47 -15 -101 12 -70 36 -96
75 -105 158 -9 77 8 606 20 625 12 19 235 9 269 -13z"/>
<path d="M6364 26706 c-3 -8 -4 -23 -2 -33 3 -11 6 -6 9 15 6 34 2 42 -7 18z"/>
<path d="M6758 26695 c3 -21 7 -23 23 -14 27 14 24 39 -5 39 -19 0 -22 -4 -18
-25z"/>
<path d="M6760 26490 c0 -112 0 -114 18 -90 12 18 17 44 17 90 0 46 -5 72 -17
90 -18 24 -18 22 -18 -90z"/>
<path d="M6343 26525 c-17 -19 -16 -42 2 -49 12 -4 15 3 15 29 0 39 0 40 -17
20z"/>
<path d="M6330 26395 c-11 -13 -8 -21 15 -45 l29 -30 177 0 c98 0 184 3 193 6
9 3 16 14 16 24 0 15 -5 16 -42 9 -24 -4 -114 -8 -200 -9 l-158 0 0 30 c0 33
-11 38 -30 15z"/>
<path d="M8310 26367 c-25 -19 -56 -40 -70 -47 -14 -7 -43 -26 -65 -42 -94
-67 -182 -122 -253 -158 -45 -22 -202 -168 -202 -187 0 -36 56 -127 117 -189
l65 -66 57 4 c48 3 64 10 110 46 29 23 58 42 65 42 7 0 23 11 35 24 12 13 39
32 59 42 20 11 52 31 70 47 18 15 66 43 106 62 121 59 118 54 114 214 -2 110
-7 143 -22 171 -10 19 -22 42 -26 50 -5 10 -25 16 -62 18 -48 3 -59 -1 -98
-31z m144 1 c27 -41 56 -170 56 -246 0 -69 -2 -75 -32 -102 -17 -16 -59 -44
-92 -61 -34 -18 -104 -60 -156 -94 -168 -109 -208 -134 -251 -155 l-41 -22
-33 24 c-80 57 -173 194 -154 229 19 37 121 113 334 253 224 145 270 173 315
187 37 11 38 11 54 -13z"/>
<path d="M32891 26354 c-69 -61 -131 -140 -131 -167 -1 -12 -9 -40 -20 -62
-27 -56 -26 -129 2 -163 11 -15 18 -19 15 -10 -47 133 27 311 166 400 49 31
56 33 147 33 134 0 213 -37 285 -135 160 -217 40 -499 -233 -550 -125 -23
-274 58 -337 183 l-25 51 0 -35 c0 -30 10 -45 71 -107 38 -40 77 -72 86 -72 8
0 26 -9 40 -20 22 -17 41 -20 139 -20 l114 0 39 35 c21 19 55 42 75 50 24 10
36 22 36 35 0 10 18 40 41 66 l40 47 -3 137 -3 137 -33 32 c-18 18 -39 48 -47
67 -9 22 -33 46 -72 71 l-58 38 -140 3 -140 3 -54 -47z"/>
<path d="M33255 25140 c-22 -10 -48 -19 -58 -19 -10 -1 -56 -38 -101 -83 -69
-70 -90 -98 -130 -182 l-47 -99 4 -106 c4 -117 18 -167 88 -311 31 -63 61
-105 115 -161 71 -74 74 -79 74 -125 l1 -49 18 35 c10 19 21 47 25 62 5 24 2
28 -29 38 -54 18 -137 118 -195 234 -65 132 -83 204 -78 320 3 81 7 100 40
170 50 102 144 199 243 247 69 34 72 34 205 34 117 0 143 -3 195 -23 192 -75
310 -236 322 -442 6 -101 -7 -173 -47 -258 -43 -92 -99 -168 -184 -252 -42
-41 -76 -82 -76 -90 0 -8 12 -24 27 -36 26 -21 27 -22 13 -63 -14 -44 -202
-326 -216 -325 -12 1 -222 262 -244 304 -17 31 -19 32 -20 12 0 -13 17 -44 38
-70 21 -26 43 -57 48 -69 5 -11 33 -47 62 -78 28 -31 52 -64 52 -74 0 -27 21
-41 60 -41 39 0 60 14 60 41 0 9 16 34 35 55 19 22 38 48 41 59 4 11 21 38 38
60 33 42 86 140 86 160 0 6 -11 21 -25 33 -14 12 -25 28 -25 34 0 7 38 51 85
98 47 46 85 92 85 101 0 9 14 32 30 50 17 19 44 62 61 96 l31 62 -4 163 -4
163 -46 90 c-57 113 -95 150 -212 209 l-92 46 -155 -1 c-128 0 -161 -4 -194
-19z"/>
<path d="M6573 24690 c-74 -37 -115 -85 -171 -202 -45 -94 -56 -174 -28 -197
8 -7 17 -28 21 -49 16 -88 85 -202 122 -202 8 0 26 -9 42 -21 20 -14 39 -19
67 -17 l39 3 -42 13 c-58 17 -132 70 -165 117 -44 64 -71 165 -66 244 9 126
71 223 180 282 59 32 69 34 153 34 78 -1 97 -4 145 -29 74 -38 125 -89 163
-161 29 -55 32 -68 32 -160 0 -116 -17 -161 -85 -232 -69 -72 -120 -95 -224
-103 -50 -4 -81 -8 -68 -8 12 -1 25 -9 28 -17 4 -8 14 -15 24 -15 10 0 20 7
24 15 4 11 22 15 69 15 l63 0 82 82 c54 53 86 94 93 117 6 21 9 92 7 167 l-3
131 -36 44 c-20 24 -39 53 -43 65 -4 13 -39 37 -99 67 -89 45 -97 47 -178 47
-75 0 -93 -4 -146 -30z"/>
<path d="M9031 24471 c-62 -4 -96 -10 -99 -18 -3 -10 28 -13 132 -13 l136 0
-2 -577 -3 -578 -769 -3 c-638 -2 -772 -4 -785 -16 -9 -8 -32 -17 -51 -21 -19
-3 -96 -37 -170 -73 -128 -63 -140 -72 -237 -170 -57 -56 -103 -108 -103 -115
0 -8 -17 -36 -38 -64 -55 -74 -107 -202 -122 -303 -13 -79 -54 -182 -76 -191
-11 -4 -75 -8 -143 -8 -102 -1 -128 -4 -143 -18 -13 -12 -44 -19 -102 -22 -46
-3 -89 -11 -97 -18 -8 -6 -32 -15 -53 -19 -54 -10 -264 -119 -367 -190 -46
-32 -111 -76 -144 -98 -66 -44 -235 -210 -235 -231 0 -7 -26 -45 -57 -84 -32
-39 -72 -92 -90 -118 -46 -69 -163 -300 -178 -353 -8 -25 -27 -85 -45 -135
-63 -184 -70 -211 -69 -270 l0 -60 19 86 c110 523 420 1003 810 1254 243 157
474 232 790 256 75 6 140 16 147 22 6 7 21 62 33 122 38 196 82 305 172 428
123 166 338 306 568 369 l85 23 733 -4 732 -3 0 611 0 611 -42 -2 c-24 -1 -85
-4 -137 -7z"/>
<path d="M35386 23569 c-24 -28 -26 -38 -26 -129 0 -74 4 -100 15 -110 13 -11
15 2 15 106 0 66 4 125 9 132 6 10 48 12 184 10 115 -2 176 1 174 7 -2 6 -72
11 -174 13 l-171 2 -26 -31z"/>
<path d="M35752 23350 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z"/>
<path d="M35371 23276 c-11 -13 -8 -21 17 -46 l30 -30 141 0 c137 0 141 1 168
26 21 19 23 24 9 20 -11 -4 -91 -9 -178 -13 -151 -6 -158 -5 -158 13 0 10 -4
25 -9 32 -6 10 -10 10 -20 -2z"/>
<path d="M5227 23012 l-27 -28 0 -163 0 -163 29 -29 29 -29 140 0 140 0 31 32
c17 17 31 39 31 47 0 9 9 30 20 46 25 38 27 121 3 173 -10 20 -20 60 -23 87
l-5 50 -170 3 -171 2 -27 -28z m315 12 c36 -6 36 -7 49 -73 19 -95 17 -209 -4
-248 -36 -67 -120 -100 -235 -91 -107 8 -137 53 -137 213 0 129 14 179 53 194
30 11 217 14 274 5z"/>
<path d="M6804 21611 c-232 -42 -383 -117 -551 -275 -243 -229 -386 -542 -400
-876 -11 -282 47 -504 190 -717 72 -108 253 -288 350 -347 132 -82 297 -135
474 -152 72 -6 73 -6 83 20 16 42 14 761 -2 773 -7 5 -40 15 -73 23 -122 26
-181 77 -215 186 -39 129 -17 290 55 394 36 52 103 97 170 115 32 8 61 17 64
21 3 3 6 195 6 427 l0 422 -25 2 c-14 1 -70 -6 -126 -16z"/>
<path d="M34386 21622 c-8 -8 -7 -779 0 -836 l7 -46 46 0 c72 0 119 -18 168
-63 87 -80 133 -186 133 -306 0 -93 -27 -164 -82 -218 -63 -60 -83 -68 -244
-99 -12 -2 -24 -14 -28 -26 -8 -31 -8 -727 1 -768 l6 -33 96 7 c168 13 297 49
451 126 271 136 482 367 587 645 118 310 89 668 -79 961 -138 243 -310 408
-543 520 -143 69 -267 109 -385 123 -52 7 -103 14 -112 16 -9 1 -19 0 -22 -3z"/>
<path d="M5096 20638 c-13 -19 -16 -57 -16 -239 0 -205 1 -218 21 -240 l21
-24 -7 25 c-12 51 -17 346 -7 420 6 41 9 76 8 78 -2 2 -11 -7 -20 -20z"/>
<path d="M5121 20051 c-1 -29 6 -74 14 -100 8 -25 28 -92 45 -149 46 -149 216
-488 286 -568 30 -34 54 -67 54 -74 0 -18 169 -188 194 -196 12 -4 50 -31 85
-60 34 -30 91 -68 125 -84 33 -16 79 -45 101 -65 22 -19 46 -35 53 -35 8 0 26
-6 40 -14 62 -33 271 -87 412 -106 47 -6 99 -16 117 -21 17 -6 85 -13 150 -17
l118 -7 5 -695 c3 -382 6 -696 8 -696 25 -16 28 -9 19 65 -5 42 -7 365 -5 719
l4 642 -85 0 c-99 0 -309 23 -426 46 -364 73 -693 281 -942 595 -149 189 -289
499 -348 768 -22 101 -23 103 -24 52z"/>
<path d="M34388 18588 c-2 -7 -3 -355 -3 -773 0 -748 0 -761 -22 -835 -46
-160 -119 -310 -208 -427 -47 -63 -52 -73 -35 -73 15 0 26 11 36 36 9 21 31
53 50 73 18 20 34 42 34 50 0 7 18 36 40 63 24 31 40 61 40 77 0 15 9 44 20
66 11 22 20 51 20 65 0 14 8 37 18 50 16 23 17 81 20 805 2 625 5 782 16 795
28 32 28 40 2 40 -14 0 -27 -6 -28 -12z"/>
<path d="M5302 18108 c-7 -7 -12 -14 -12 -17 0 -4 83 -5 185 -3 l185 3 0 -181
0 -180 -26 -10 c-39 -15 -341 -13 -348 3 -3 6 -4 1 -3 -13 l2 -25 173 0 174 0
24 28 c24 28 24 30 22 215 l-3 187 -180 3 c-132 2 -184 -1 -193 -10z"/>
<path d="M5260 17954 c-11 -12 -10 -18 3 -32 16 -15 17 -14 17 16 0 36 -2 38
-20 16z"/>
<path d="M6961 17017 c-1 -69 3 -88 38 -170 21 -51 41 -103 44 -117 8 -34 68
-131 115 -188 22 -26 42 -57 46 -68 8 -27 100 -114 119 -114 7 0 49 -33 93
-73 129 -120 357 -225 547 -252 21 -3 48 -11 60 -18 17 -9 167 -13 620 -15
l597 -4 0 -506 c0 -489 -1 -508 -20 -537 -11 -16 -20 -43 -20 -60 0 -25 -30
-61 -200 -234 -110 -113 -200 -210 -200 -216 0 -7 -15 -32 -33 -56 -41 -54
-122 -213 -130 -255 -3 -17 -22 -66 -41 -107 -28 -58 -36 -88 -35 -129 l0 -53
27 95 c50 174 117 318 215 465 59 88 188 224 350 370 l78 70 9 75 c5 41 10
301 10 578 0 393 -3 504 -12 507 -7 2 -267 9 -578 14 -709 13 -745 18 -1005
146 -375 185 -612 481 -678 850 l-15 80 -1 -78z"/>
<path d="M34799 16579 l-24 -20 40 5 c22 3 76 6 120 6 73 1 78 2 61 15 -14 10
-45 15 -97 15 -63 0 -81 -4 -100 -21z"/>
<path d="M35044 16583 c-10 -17 -8 -18 28 -15 43 5 48 25 7 30 -15 2 -28 -4
-35 -15z"/>
<path d="M35120 16500 c0 -28 2 -30 20 -20 11 6 20 15 20 20 0 5 -9 14 -20 20
-18 10 -20 8 -20 -20z"/>
<path d="M34003 16391 c-72 -69 -215 -172 -288 -209 -58 -29 -210 -88 -275
-106 -155 -44 -209 -47 -929 -55 -624 -8 -696 -10 -706 -25 -25 -33 -31 -803
-9 -1053 l6 -62 61 -38 c121 -73 204 -135 299 -224 260 -240 412 -514 484
-868 37 -183 36 -474 -3 -631 -6 -24 -6 -25 13 -6 16 17 20 39 24 157 3 91 9
142 18 151 16 16 15 43 -2 57 -11 9 -15 48 -18 161 -2 123 -6 151 -19 162 -11
9 -18 35 -22 76 -3 34 -12 73 -20 85 -7 12 -17 39 -21 59 -8 45 -86 199 -127
250 -16 20 -29 41 -29 47 0 5 -17 31 -39 58 -21 27 -42 59 -45 71 -9 28 -269
288 -309 309 -18 9 -47 27 -65 41 -18 14 -56 39 -84 56 -56 33 -56 32 -88 196
-5 25 -9 229 -9 453 -1 386 0 410 19 452 l20 43 714 4 c648 3 716 5 728 19 9
12 37 19 90 23 56 5 97 16 150 40 40 18 86 36 101 40 63 15 209 96 262 145 31
28 63 51 71 51 16 0 110 84 125 111 21 39 -10 23 -78 -40z"/>
<path d="M34615 16390 c-24 -47 -20 -117 11 -157 l25 -33 224 0 224 0 30 33
c27 28 31 39 31 89 0 41 -5 62 -17 74 -17 17 -18 13 -21 -73 -2 -75 -6 -93
-20 -99 -9 -4 -107 -9 -217 -11 -259 -5 -250 -9 -249 115 0 51 -1 92 -2 92 -2
0 -10 -13 -19 -30z"/>
<path d="M6675 16390 c-11 -5 -36 -11 -56 -15 -21 -3 -42 -12 -48 -19 -8 -9
-11 -68 -9 -182 l3 -169 168 0 167 -1 -165 3 -165 3 0 170 c0 168 0 170 23
175 12 3 98 5 190 3 161 -3 167 -2 146 15 -25 20 -46 22 -52 5 -3 -10 -9 -10
-28 0 -13 6 -37 12 -54 12 -16 -1 -46 1 -65 4 -19 3 -44 1 -55 -4z"/>
<path d="M6950 16171 c0 -134 -2 -150 -17 -154 -14 -4 -12 -5 5 -6 22 -1 22 0
22 154 0 85 -2 155 -5 155 -3 0 -5 -67 -5 -149z"/>
<path d="M7655 15523 l-50 -39 -3 -428 -2 -427 35 -44 c42 -51 82 -69 135 -62
57 7 150 54 150 75 0 9 9 31 20 47 19 29 20 48 20 401 0 365 0 371 -23 413
-29 57 -92 92 -172 98 -57 4 -62 3 -110 -34z m230 -23 c12 -5 25 -17 29 -27 4
-10 7 -195 7 -412 -1 -433 -2 -440 -63 -484 -35 -26 -121 -34 -156 -16 -38 20
-70 58 -83 99 -16 53 -8 805 9 822 27 28 76 38 156 32 43 -3 89 -9 101 -14z"/>
<path d="M32990 15299 c-19 -10 -47 -19 -63 -19 -20 0 -43 -16 -90 -63 -78
-78 -117 -169 -117 -274 0 -65 3 -75 89 -243 5 -8 19 -16 33 -18 15 -2 38 -19
57 -43 l32 -39 97 1 97 2 -70 7 c-84 9 -94 12 -167 63 -100 69 -153 177 -146
300 12 245 256 388 483 283 72 -34 127 -85 166 -158 32 -59 34 -69 34 -158 0
-81 -4 -102 -24 -142 -43 -84 -124 -152 -211 -179 -24 -7 -24 -7 6 -8 17 -1
37 6 44 14 7 8 27 15 44 15 35 0 76 24 76 45 0 8 18 35 40 60 l40 46 0 148 c0
141 -1 149 -25 180 -13 19 -34 43 -47 54 -13 11 -44 40 -70 64 -26 24 -57 43
-70 43 -13 1 -41 9 -63 20 -52 25 -129 25 -175 -1z"/>
<path d="M8536 13798 c-12 -17 -16 -46 -15 -113 l1 -90 13 80 c7 45 16 95 20
113 8 38 2 41 -19 10z"/>
<path d="M8521 13264 c-1 -82 3 -110 19 -145 11 -24 20 -57 20 -73 0 -91 174
-465 265 -571 28 -33 55 -70 61 -82 17 -40 203 -221 240 -233 26 -9 34 -17 34
-35 0 -13 -5 -27 -10 -30 -24 -15 -70 -128 -70 -171 0 -25 -9 -62 -20 -84 -15
-30 -20 -57 -19 -117 l1 -78 9 55 c18 109 63 272 103 369 14 36 26 66 26 67 0
2 -32 28 -70 59 -239 191 -468 572 -546 910 -9 39 -22 113 -29 165 l-13 95 -1
-101z"/>
<path d="M32632 13073 c-4 -44 -92 -277 -138 -361 -105 -195 -211 -334 -362
-478 l-96 -91 42 -159 c73 -282 93 -465 73 -689 -26 -305 -167 -636 -404 -950
-73 -96 -294 -318 -430 -433 -285 -239 -795 -523 -1556 -869 -369 -167 -501
-220 -769 -309 -124 -41 -232 -80 -238 -85 -7 -5 -20 -40 -30 -77 -23 -90
-109 -289 -170 -396 -103 -182 -286 -381 -494 -537 -96 -73 -327 -192 -450
-233 -344 -113 -561 -127 -925 -60 -173 32 -369 116 -672 288 -142 81 -153 81
-294 11 -63 -32 -190 -99 -284 -150 -169 -91 -271 -145 -500 -265 -66 -35
-149 -80 -185 -100 -36 -20 -153 -83 -260 -140 -107 -57 -301 -160 -430 -230
-284 -154 -765 -403 -1145 -593 -328 -164 -432 -227 -441 -266 -13 -58 -80
-201 -131 -278 -260 -396 -779 -722 -1318 -827 -241 -48 -402 -55 -641 -31
-283 29 -465 82 -740 215 -261 127 -474 282 -637 465 -151 169 -233 299 -297
472 -10 27 -29 41 -109 82 -53 27 -373 188 -711 359 -338 171 -761 385 -940
476 -179 92 -509 259 -735 372 -225 113 -468 237 -540 274 -166 87 -406 199
-442 206 -22 4 -50 -8 -138 -61 -216 -132 -404 -217 -570 -259 -434 -109 -816
-68 -1207 129 -361 182 -615 435 -784 780 -80 165 -114 256 -114 308 0 19 -6
39 -13 45 -10 9 -11 -2 -6 -56 6 -60 17 -95 51 -156 5 -10 17 -42 25 -70 19
-64 90 -201 148 -284 23 -34 79 -101 124 -147 44 -46 87 -100 95 -119 10 -23
22 -36 33 -36 11 0 58 -36 106 -80 48 -44 92 -80 98 -80 6 0 29 -15 52 -34 44
-35 267 -148 327 -165 19 -5 73 -23 120 -39 85 -30 136 -42 197 -47 18 -2 50
-9 70 -17 27 -9 98 -13 249 -13 180 0 213 3 227 16 10 11 44 19 99 24 46 4 89
12 96 18 8 6 40 14 71 18 45 5 100 27 242 98 101 51 188 97 194 102 5 5 16 9
24 9 8 0 26 11 40 24 15 13 51 37 81 54 55 29 56 29 79 11 13 -11 37 -19 55
-19 20 0 43 -11 66 -31 41 -36 149 -89 182 -89 13 0 34 -9 48 -20 14 -11 31
-20 39 -20 7 0 29 -13 47 -30 36 -31 228 -130 254 -130 8 0 38 -15 65 -33 28
-19 443 -230 924 -470 480 -240 889 -450 907 -467 23 -19 46 -30 65 -30 17 0
42 -9 56 -20 14 -11 31 -20 38 -20 14 0 133 -70 174 -101 13 -11 31 -19 40
-19 21 0 120 -41 154 -63 15 -9 33 -17 42 -17 8 0 35 -18 59 -40 32 -30 52
-40 77 -40 42 0 115 -48 142 -93 51 -83 77 -140 77 -168 0 -23 14 -46 56 -92
31 -34 62 -75 69 -92 15 -34 375 -395 394 -395 7 0 31 -15 54 -34 23 -18 77
-50 119 -71 42 -21 87 -48 99 -61 12 -13 38 -27 58 -30 20 -3 86 -30 146 -59
126 -61 206 -89 288 -104 31 -6 65 -15 75 -20 18 -9 193 -27 225 -22 10 1 30
-6 45 -16 24 -16 49 -18 222 -17 156 0 201 4 225 16 17 9 73 19 130 23 54 4
108 13 120 21 11 7 47 16 80 20 33 4 69 13 80 19 11 7 34 16 50 19 47 11 251
94 339 138 43 21 99 55 124 74 25 18 49 34 54 34 5 0 29 16 52 35 24 19 48 35
54 35 6 0 41 27 79 60 37 33 73 60 81 60 20 0 122 101 122 121 0 10 36 55 80
101 44 46 80 91 80 101 0 9 18 37 40 61 30 33 40 51 40 77 0 19 8 46 17 59 10
14 20 45 23 69 4 39 9 46 35 54 17 6 45 23 63 38 18 16 191 108 385 205 193
97 369 189 389 205 20 16 46 29 58 29 24 0 214 93 245 120 22 19 150 87 365
195 74 37 142 74 150 81 31 26 160 94 180 94 11 0 41 15 67 33 27 19 91 56
143 82 135 68 203 105 220 120 19 16 171 95 440 230 118 60 229 118 245 131
35 26 373 204 388 204 16 0 142 -67 227 -120 105 -65 289 -153 390 -185 47
-15 99 -33 116 -40 30 -13 84 -21 187 -29 26 -2 55 -10 64 -18 12 -10 63 -13
217 -13 168 1 205 3 226 17 14 9 60 19 104 23 44 4 89 13 100 20 12 7 39 16
60 20 21 3 48 12 60 20 12 7 35 15 52 18 17 3 108 44 202 90 163 80 177 90
273 181 56 53 108 96 115 96 21 0 154 130 154 150 0 9 25 44 55 76 30 33 58
68 61 79 4 11 21 38 39 60 36 45 125 223 125 251 1 11 9 37 20 59 11 22 20 51
20 65 0 14 9 39 20 55 11 17 20 38 20 48 0 10 12 22 28 28 15 6 38 17 52 24
14 7 41 16 60 19 19 4 49 13 65 21 29 13 76 29 175 60 99 31 148 48 225 80 44
19 91 37 105 41 13 4 127 58 253 120 125 62 242 116 260 120 38 8 679 327 722
359 26 20 133 79 220 123 17 9 51 35 78 58 26 23 81 59 121 79 40 20 86 50
102 66 16 17 58 50 94 74 78 52 422 399 465 469 64 105 88 142 111 169 13 16
24 32 24 36 0 5 18 41 39 80 22 39 43 82 47 94 3 12 19 36 35 52 18 19 32 48
38 78 4 26 14 53 20 61 7 8 15 41 18 73 3 32 14 72 24 89 15 25 19 52 19 137
0 89 3 113 21 147 18 34 21 53 17 112 -4 48 -11 75 -21 83 -11 8 -16 39 -18
138 -3 97 -7 130 -18 136 -9 6 -18 37 -22 77 -5 37 -15 77 -23 89 -8 12 -15
35 -16 51 -6 81 -5 82 132 220 72 72 139 147 148 165 39 78 72 135 89 154 24
26 151 286 151 309 0 9 9 37 21 62 13 30 19 59 16 87 -2 23 -4 32 -5 20z"/>
<path d="M9016 11596 c-13 -21 -16 -54 -16 -180 0 -141 2 -156 21 -177 l20
-24 -5 40 c-14 109 -17 198 -8 275 6 47 9 86 8 88 -2 1 -11 -9 -20 -22z"/>
<path d="M9039 11180 c-8 -48 9 -116 74 -300 78 -224 91 -255 127 -300 15 -19
42 -64 60 -100 18 -36 48 -84 67 -107 18 -23 33 -47 33 -54 0 -18 461 -479
480 -479 8 0 46 -27 83 -60 38 -33 74 -60 81 -60 8 0 40 -25 72 -55 33 -30 68
-57 79 -61 11 -4 39 -22 63 -41 29 -24 57 -37 85 -40 40 -5 38 -2 -63 59 -330
202 -660 489 -848 740 -181 243 -304 503 -366 781 -15 63 -25 92 -27 77z"/>
<path d="M10400 9501 c0 -5 12 -18 28 -29 47 -33 855 -432 875 -432 10 0 87
-34 171 -75 83 -41 167 -78 186 -81 19 -4 44 -13 55 -19 11 -7 34 -16 50 -20
17 -3 44 -13 60 -20 53 -24 109 -46 150 -60 22 -7 105 -36 185 -63 130 -45
234 -73 220 -60 -3 3 -93 36 -200 73 -365 126 -624 230 -930 372 -41 19 -113
52 -160 73 -102 45 -469 229 -597 300 -51 28 -93 46 -93 41z"/>
<path d="M14477 6260 c-28 -22 -77 -136 -77 -178 1 -21 5 -15 19 25 22 66 57
116 96 140 24 14 50 18 125 17 102 0 145 -14 175 -56 46 -66 64 -247 31 -323
-37 -86 -101 -124 -209 -125 -37 0 -82 6 -100 14 -48 20 -97 78 -118 138 l-18
53 -1 -49 c0 -66 43 -118 135 -165 58 -29 73 -33 116 -27 68 9 138 47 188 102
l43 46 -4 131 c-3 125 -5 135 -36 194 -17 34 -41 67 -51 73 -11 5 -80 10 -154
10 -119 0 -137 -2 -160 -20z"/>
<path d="M22721 5424 c-12 -9 -36 -45 -52 -79 -24 -53 -29 -76 -29 -142 0 -70
3 -84 29 -125 46 -73 59 -78 191 -78 115 0 117 0 144 29 45 47 76 125 76 190
0 44 -8 73 -34 128 -19 39 -44 76 -55 82 -11 6 -71 11 -133 11 -88 0 -119 -4
-137 -16z m245 -23 c33 -20 67 -83 78 -144 20 -110 -52 -228 -146 -242 -148
-22 -242 58 -243 205 0 54 5 73 28 113 41 70 75 87 172 87 61 0 87 -5 111 -19z"/>
<path d="M23467 5412 l-27 -28 0 -161 c0 -160 0 -162 27 -193 l27 -32 262 3
c232 4 264 6 281 22 11 9 28 17 39 17 44 1 46 10 42 157 -2 106 -7 145 -19
163 -9 14 -19 37 -23 53 l-6 27 -288 0 -288 0 -27 -28z m589 -5 c16 -15 28
-269 15 -314 -15 -56 -29 -58 -286 -56 -222 3 -294 8 -310 24 -5 5 -11 80 -13
167 -3 127 -2 160 10 169 7 7 41 14 73 16 104 7 503 2 511 -6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

BIN
assets/img/4k-radarr-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
assets/img/4k-radarr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
assets/img/automation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

BIN
assets/img/bazarr-prov.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
assets/img/email.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 KiB

777
assets/img/favicon.svg Normal file
View file

@ -0,0 +1,777 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="4096.000000pt" height="4096.000000pt" viewBox="0 0 4096.000000 4096.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,4096.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M20267 36185 c-15 -8 -71 -19 -123 -24 -53 -5 -101 -14 -107 -20 -7
-5 -30 -12 -52 -16 -22 -4 -49 -13 -61 -20 -12 -8 -39 -17 -60 -20 -21 -4 -48
-13 -59 -20 -11 -7 -36 -16 -55 -20 -95 -20 -399 -194 -490 -280 -19 -18 -50
-40 -68 -50 -45 -22 -312 -291 -312 -313 0 -10 -27 -48 -60 -85 -46 -52 -60
-75 -60 -99 0 -21 -12 -45 -40 -78 -32 -38 -40 -56 -40 -87 0 -39 -1 -40 -62
-68 -35 -16 -182 -88 -328 -159 -146 -72 -308 -148 -361 -169 -54 -21 -107
-49 -120 -63 -12 -13 -38 -26 -58 -30 -46 -8 -1004 -485 -1053 -525 -21 -16
-52 -32 -70 -35 -48 -9 -134 -52 -180 -91 -22 -18 -51 -33 -64 -33 -30 0 -140
-53 -174 -84 -29 -27 -209 -116 -234 -116 -22 0 -55 -17 -82 -42 -23 -21 -610
-318 -628 -318 -6 0 -17 -9 -24 -20 -7 -11 -10 -20 -7 -20 7 0 886 440 900
450 6 4 249 128 540 275 292 148 589 298 660 334 72 37 200 100 285 140 85 41
243 117 350 169 379 184 484 233 569 268 129 52 129 52 152 113 56 151 207
375 356 526 159 163 323 279 564 400 523 263 1199 304 1747 106 349 -127 611
-301 853 -568 115 -127 256 -360 299 -496 16 -48 29 -71 44 -77 11 -5 53 -21
91 -36 79 -30 318 -148 895 -443 217 -111 710 -359 1095 -551 385 -192 815
-408 955 -479 140 -71 271 -135 291 -141 36 -12 40 -11 139 49 144 88 311 172
415 210 368 134 786 142 1137 22 574 -196 961 -582 1147 -1145 36 -109 36
-110 76 -122 22 -7 111 -34 198 -59 381 -112 1054 -383 1461 -587 380 -190
642 -347 881 -527 120 -90 368 -335 452 -446 247 -328 366 -653 380 -1045 7
-201 -8 -321 -74 -595 l-45 -190 43 -35 c98 -79 283 -270 344 -355 279 -390
366 -921 230 -1395 -57 -199 -132 -353 -245 -505 -150 -201 -329 -331 -605
-440 -38 -15 -78 -34 -87 -42 -26 -23 -36 -87 -54 -337 l-16 -228 60 -57 c179
-167 275 -313 307 -466 26 -124 12 -270 -36 -382 -44 -102 -175 -252 -253
-290 -20 -9 -38 -24 -40 -32 -3 -9 -8 -237 -12 -507 -6 -411 -5 -493 7 -500
29 -18 832 -2 1359 26 314 18 503 -1 683 -65 172 -63 286 -133 407 -255 97
-96 166 -195 210 -298 31 -73 74 -232 85 -314 6 -44 8 -48 34 -48 60 0 290
-22 374 -35 251 -41 462 -131 679 -292 254 -188 472 -447 620 -739 131 -256
198 -549 198 -860 0 -422 -141 -823 -406 -1157 -137 -175 -349 -354 -524 -446
-235 -123 -496 -181 -818 -181 l-135 0 19 -21 c18 -20 25 -21 144 -14 78 4
131 12 140 20 9 8 61 15 139 19 75 5 132 13 145 21 12 7 46 16 76 20 30 4 86
23 126 41 39 19 77 34 85 34 21 0 141 59 165 81 11 10 36 27 56 36 20 10 70
51 112 90 41 40 84 73 94 73 21 0 162 139 162 160 0 8 23 40 51 70 27 30 58
71 68 90 44 86 73 136 90 155 23 25 100 183 111 228 10 38 36 113 62 179 11
28 18 72 18 110 0 44 5 71 18 88 15 23 17 55 17 327 0 267 -2 304 -16 315 -11
8 -19 36 -23 76 -3 35 -12 76 -20 90 -8 15 -18 54 -24 87 -6 33 -19 85 -30
115 -24 69 -97 215 -126 255 -12 17 -40 62 -61 100 -21 39 -68 104 -105 145
-37 41 -70 84 -74 96 -9 28 -198 215 -261 258 -27 19 -72 55 -100 79 -71 64
-356 206 -436 217 -33 5 -67 14 -74 20 -8 6 -55 15 -104 20 -60 6 -96 14 -107
24 -13 13 -41 16 -154 16 -132 0 -140 1 -167 24 -25 22 -28 32 -34 115 -4 59
-12 98 -21 109 -9 9 -18 33 -22 52 -9 48 -43 118 -81 165 -18 22 -35 49 -39
61 -3 11 -60 75 -126 141 -116 117 -122 121 -254 186 -74 37 -143 67 -153 67
-10 0 -35 9 -56 20 -20 11 -49 20 -64 20 -16 0 -41 9 -58 20 -29 19 -48 20
-392 20 -334 0 -363 -1 -372 -17 -9 -17 -47 -18 -545 -21 l-536 -3 0 495 0
496 43 21 c48 24 157 126 157 148 0 8 15 33 34 55 19 23 41 58 49 78 8 19 20
39 26 42 6 4 11 35 11 71 0 54 3 66 21 79 19 13 21 22 17 80 -2 42 -10 71 -21
84 -11 12 -17 35 -17 65 0 73 -81 223 -170 314 -38 40 -70 79 -70 87 0 25 -49
74 -85 86 l-35 12 0 112 c0 90 3 116 17 136 14 20 19 50 21 145 1 66 5 129 7
140 5 24 46 50 95 60 49 10 281 126 328 164 22 17 46 31 52 31 18 0 240 221
240 238 0 7 15 32 34 55 44 55 166 302 166 337 0 15 9 39 20 53 11 14 20 40
20 59 0 18 9 47 20 63 15 23 20 47 20 107 0 59 4 80 17 94 15 15 18 43 22 195
3 164 2 181 -17 211 -15 26 -21 56 -24 140 -3 72 -10 114 -20 130 -8 13 -18
40 -22 60 -8 42 -162 352 -199 401 -13 18 -31 46 -40 62 -25 48 -282 303 -322
319 -31 13 -35 19 -35 53 0 21 7 49 16 61 8 12 18 48 21 80 3 31 14 71 24 88
15 25 19 51 19 130 0 79 4 105 18 124 15 22 17 52 17 257 0 203 -2 234 -16
245 -11 8 -19 36 -23 77 -3 36 -12 74 -19 85 -8 12 -17 45 -20 75 -9 74 -189
438 -257 520 -26 31 -55 71 -63 88 -22 43 -391 409 -435 433 -20 10 -57 38
-82 60 -25 22 -58 48 -75 57 -16 9 -46 28 -65 43 -19 15 -66 44 -105 64 -38
19 -88 49 -110 64 -77 56 -172 112 -187 112 -22 0 -195 87 -238 119 -48 37
-214 121 -238 121 -11 0 -74 27 -140 60 -67 33 -130 60 -141 60 -10 0 -55 18
-100 40 -44 22 -89 40 -100 40 -10 0 -50 15 -88 34 -37 19 -86 39 -108 45 -23
6 -68 24 -101 40 -34 16 -79 34 -102 40 -22 6 -53 18 -69 26 -15 8 -37 15 -48
15 -11 0 -38 9 -60 20 -22 11 -49 20 -60 20 -11 0 -32 6 -47 14 -15 8 -53 20
-84 26 -31 7 -70 18 -87 25 -18 7 -53 16 -79 19 -48 7 -88 40 -88 74 0 32 -56
183 -106 288 -61 125 -135 242 -205 324 -25 30 -49 64 -53 76 -14 46 -177 187
-309 268 -18 11 -51 34 -75 52 -50 38 -363 194 -389 194 -10 0 -34 9 -54 19
-20 11 -60 21 -90 22 -32 2 -64 10 -79 21 -20 14 -48 18 -144 20 -101 2 -122
5 -135 20 -21 25 -116 25 -154 0 -22 -15 -51 -19 -150 -21 -96 -2 -126 -6
-140 -19 -11 -10 -42 -17 -80 -20 -35 -2 -69 -11 -79 -19 -9 -8 -36 -17 -60
-20 -24 -3 -50 -12 -59 -19 -8 -8 -37 -18 -63 -23 -29 -5 -58 -19 -75 -35 -16
-15 -77 -52 -137 -83 -60 -30 -128 -70 -151 -89 -48 -39 -58 -41 -98 -14 -16
11 -40 20 -51 20 -30 0 -217 95 -258 130 -24 21 -44 30 -69 30 -20 0 -38 4
-42 9 -16 26 -303 177 -375 197 -14 4 -41 19 -60 34 -30 23 -214 119 -470 245
-36 18 -81 34 -101 38 -20 3 -49 17 -65 32 -37 35 -136 85 -167 85 -13 0 -42
13 -63 28 -68 49 -115 73 -821 426 -381 190 -703 346 -715 346 -13 0 -29 4
-35 8 -17 11 -63 103 -63 126 0 31 -48 125 -108 211 -30 44 -73 106 -94 138
-50 73 -318 342 -361 361 -17 8 -52 33 -77 56 -25 23 -58 49 -75 57 -16 9 -46
28 -65 43 -42 33 -133 80 -155 80 -9 0 -54 18 -101 40 -47 22 -93 40 -102 40
-9 1 -35 9 -57 20 -22 11 -47 19 -56 20 -9 0 -36 7 -60 16 -24 9 -78 20 -119
24 -41 5 -88 15 -105 24 -43 23 -675 24 -718 1z"/>
<path d="M22004 35785 c-4 -9 -4 -18 -2 -21 9 -8 39 8 35 19 -6 18 -27 20 -33
2z"/>
<path d="M19040 35700 c-6 -12 -9 -24 -7 -27 9 -8 48 18 44 30 -6 20 -25 19
-37 -3z"/>
<path d="M22250 35700 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2
0 -4 -4 -4 -10z"/>
<path d="M22330 35625 c0 -8 7 -15 16 -15 14 0 14 3 4 15 -7 8 -14 15 -16 15
-2 0 -4 -7 -4 -15z"/>
<path d="M22370 35540 c0 -5 7 -10 16 -10 8 0 12 5 9 10 -3 6 -10 10 -16 10
-5 0 -9 -4 -9 -10z"/>
<path d="M18890 35500 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5
0 -10 -4 -10 -10z"/>
<path d="M20419 35435 c-281 -40 -510 -144 -721 -329 -141 -123 -216 -225
-342 -465 -42 -80 -88 -158 -103 -174 -16 -17 -91 -60 -173 -100 -80 -38 -271
-130 -425 -204 -154 -74 -370 -179 -480 -233 -110 -54 -324 -159 -475 -232
-264 -129 -651 -336 -711 -380 -16 -12 -26 -24 -23 -27 3 -3 407 -6 897 -6
722 0 902 -3 947 -14 236 -59 461 -269 536 -501 17 -52 18 -189 25 -2350 4
-1290 4 -2342 -1 -2401 -16 -188 -54 -306 -141 -429 -41 -58 -137 -144 -209
-188 -57 -33 -208 -80 -300 -92 -60 -7 -578 -10 -1730 -8 l-1645 3 -49 23
c-107 49 -173 128 -201 241 -39 150 40 310 183 373 50 23 172 28 427 19 l120
-5 8 85 c13 142 17 166 32 185 12 18 32 19 248 22 l235 3 8 -23 c4 -13 7 -78
7 -145 l1 -123 1157 0 c994 0 1160 2 1172 14 10 10 16 50 21 133 3 65 4 1059
2 2208 -5 2307 -1 2154 -67 2229 -59 68 34 64 -1609 67 l-1485 3 -115 -36
c-155 -49 -226 -61 -317 -56 -102 7 -163 30 -319 120 -223 130 -296 162 -443
197 -232 55 -488 28 -696 -73 -275 -135 -459 -379 -571 -758 -20 -68 -40 -131
-45 -140 -15 -29 -400 -205 -1224 -560 -154 -66 -431 -195 -615 -285 -722
-353 -1023 -574 -1224 -896 -111 -178 -151 -324 -151 -547 1 -214 21 -292 158
-610 125 -292 141 -362 94 -414 -12 -13 -104 -79 -204 -145 -270 -179 -383
-295 -483 -496 -68 -136 -90 -229 -91 -380 0 -243 87 -448 268 -628 100 -100
198 -169 377 -263 148 -79 235 -143 260 -193 11 -21 14 -196 17 -906 l4 -880
-23 -50 c-60 -130 -141 -207 -246 -234 -25 -6 -48 -17 -53 -23 -4 -7 -8 -323
-9 -703 0 -523 -3 -701 -13 -734 -49 -169 -185 -309 -343 -352 -30 -9 -262
-14 -788 -19 -820 -6 -778 -3 -874 -69 -95 -66 -181 -182 -211 -286 -46 -155
-45 -119 -45 -2450 0 -1253 4 -2248 10 -2311 10 -126 29 -202 73 -289 109
-219 295 -368 521 -417 83 -18 145 -21 696 -28 482 -6 616 -10 657 -22 144
-41 268 -165 327 -327 20 -54 21 -79 24 -904 2 -502 -1 -876 -7 -916 -12 -89
-25 -106 -183 -242 -153 -132 -228 -217 -303 -343 -67 -115 -81 -146 -112
-256 -33 -120 -40 -262 -19 -370 38 -187 96 -316 203 -449 85 -107 184 -191
363 -309 172 -113 240 -174 240 -214 0 -41 -35 -136 -107 -293 -131 -284 -178
-463 -177 -670 1 -174 24 -267 115 -450 57 -116 125 -204 274 -350 223 -221
422 -347 995 -633 384 -192 701 -339 1290 -597 403 -176 497 -223 522 -255 10
-14 44 -99 77 -190 32 -91 74 -199 93 -242 105 -225 278 -404 492 -508 119
-58 211 -85 344 -101 114 -13 214 1 360 53 128 45 206 87 381 205 240 163 309
186 450 153 44 -11 108 -31 143 -45 108 -44 646 -307 1293 -631 2402 -1206
2525 -1268 2574 -1311 32 -27 59 -70 116 -182 159 -317 306 -485 559 -641 254
-155 637 -230 891 -176 196 43 431 139 587 241 96 64 249 219 320 325 31 47
89 152 130 234 40 83 87 164 103 180 28 29 407 233 900 486 110 57 268 140
350 185 83 45 227 122 320 170 94 48 253 133 354 188 205 111 391 209 871 459
179 93 352 185 385 203 158 86 571 287 641 311 60 21 100 27 164 28 128 1 153
-10 442 -206 152 -103 272 -160 418 -200 72 -19 108 -23 235 -22 134 0 160 3
240 28 194 59 380 168 486 285 136 150 210 301 314 642 17 57 35 95 53 112 28
27 165 94 297 147 356 141 625 265 1283 591 725 358 821 412 1082 607 411 308
615 686 565 1052 -18 139 -51 246 -139 464 -41 100 -86 220 -101 267 l-26 86
21 35 c12 21 63 67 122 109 251 183 299 222 388 315 179 186 272 403 271 633
-1 175 -42 320 -137 481 -59 101 -196 243 -299 311 -38 26 -122 80 -185 122
-153 99 -160 108 -170 199 -13 114 -21 1608 -10 1713 22 194 158 362 334 414
42 12 186 15 821 21 854 7 840 6 992 75 267 123 429 335 461 605 13 112 6
4538 -8 4623 -32 202 -157 386 -321 472 -134 70 -91 67 -1044 75 -856 6 -860
6 -920 28 -174 65 -318 238 -345 416 -7 41 -12 315 -13 683 -3 598 -3 616 -22
629 -76 52 -104 77 -150 134 -140 175 -191 362 -151 560 35 173 97 280 256
446 84 87 109 130 101 174 -7 41 33 40 -1645 40 -1015 0 -1636 4 -1680 10
-124 18 -224 84 -299 198 -89 133 -82 40 -84 1147 -1 539 -2 985 -3 991 0 5
-24 40 -54 76 -94 113 -126 200 -126 340 0 230 160 455 378 530 86 29 229 31
312 4 231 -76 390 -291 390 -526 0 -147 -55 -277 -165 -390 l-63 -65 -6 -344
c-4 -189 -4 -562 0 -827 l7 -484 1522 0 c1206 0 1525 3 1532 13 6 6 16 35 23
62 28 110 75 157 246 243 91 46 260 162 336 232 115 105 218 280 266 452 26
96 23 289 -6 392 -71 248 -228 449 -478 614 -60 39 -165 109 -234 154 l-125
83 -3 48 c-4 65 16 138 98 347 123 317 161 467 162 635 0 111 -14 191 -54 303
-104 296 -298 526 -619 735 -63 41 -159 100 -214 132 -175 101 -721 369 -995
488 -320 139 -958 411 -1165 497 -82 34 -164 71 -182 81 -34 21 -45 45 -88
194 -66 230 -149 385 -280 524 -158 167 -344 263 -599 307 -182 32 -417 1
-587 -79 -41 -19 -137 -76 -214 -127 -77 -51 -174 -109 -215 -129 -70 -33 -81
-36 -170 -35 -120 0 -171 17 -472 158 -641 300 -3259 1607 -3519 1757 -79 45
-95 69 -176 250 -104 235 -176 340 -317 461 -244 212 -530 323 -856 333 -85 3
-171 -1 -231 -10z m326 -741 c231 -55 444 -280 491 -520 27 -139 -2 -321 -71
-434 -51 -84 -155 -200 -219 -245 l-57 -40 5 -775 c4 -801 7 -847 47 -941 25
-58 102 -133 166 -161 42 -19 69 -21 302 -22 285 -3 319 -8 446 -72 206 -105
394 -293 484 -485 62 -133 81 -213 91 -394 14 -250 15 -1739 1 -1805 -36 -175
-81 -281 -178 -417 -99 -139 -287 -266 -468 -314 -68 -18 -116 -22 -310 -26
l-230 -4 -62 -30 c-118 -57 -202 -183 -222 -332 -13 -94 -14 -3894 -2 -4058
12 -151 38 -223 109 -298 90 -95 130 -111 291 -121 75 -4 600 -5 1167 -3 774
4 1049 2 1100 -6 131 -23 269 -122 320 -229 23 -47 29 -74 32 -153 2 -53 -1
-129 -8 -168 -10 -62 -16 -74 -37 -82 -15 -5 -584 -9 -1441 -9 -1143 1 -1432
3 -1492 14 -318 57 -596 332 -680 674 -10 42 -23 131 -29 197 -13 159 -13
4122 0 4351 6 114 16 195 30 245 26 96 96 239 153 316 112 149 289 275 466
331 91 29 120 32 356 41 187 6 213 10 251 29 62 32 105 74 136 131 55 100 57
124 57 886 0 431 -4 725 -10 765 -21 132 -100 240 -215 295 -59 28 -63 29
-305 35 -273 8 -311 15 -460 90 -236 119 -378 294 -458 564 l-27 91 -2 933 -2
933 -61 45 c-66 50 -155 149 -196 219 -66 113 -100 271 -84 387 35 258 226
491 465 569 88 28 249 30 360 3z m963 -2008 c2 -116 -1 -173 -9 -182 -9 -11
-48 -14 -174 -14 -139 0 -164 2 -169 16 -8 22 -8 339 1 348 4 3 84 5 177 4
l171 -3 3 -169z m647 -310 c29 -13 36 -23 51 -72 19 -65 15 -234 -5 -273 -15
-27 -49 -36 -146 -36 -89 0 -131 17 -169 68 -44 60 -30 233 24 282 45 41 180
58 245 31z m2945 -151 c4 3 24 -6 44 -20 24 -16 38 -20 42 -13 13 20 34 -24
34 -68 0 -56 -17 -92 -51 -110 -50 -25 -97 -16 -146 29 -27 24 -29 54 -8 94 8
15 17 40 19 54 5 25 48 55 54 38 2 -5 7 -7 12 -4z m-10076 -154 c67 -30 132
-95 168 -169 30 -60 33 -75 32 -147 -2 -141 -66 -260 -166 -309 -105 -51 -262
-60 -343 -18 -52 26 -126 106 -159 170 -29 58 -49 164 -40 213 23 120 139 236
274 274 68 18 176 12 234 -14z m1130 -21 c15 -15 21 -449 6 -464 -12 -12 -261
-17 -447 -9 -103 5 -112 7 -117 27 -11 35 -24 368 -17 411 l6 40 100 6 c149
10 456 2 469 -11z m1884 -450 c2 -91 0 -193 -3 -228 l-7 -62 -230 2 -231 3
-15 40 c-18 50 -20 282 -3 342 9 32 18 44 44 53 43 17 208 26 337 20 l105 -5
3 -165z m-4581 60 c60 -26 127 -92 154 -153 l24 -52 3 -1229 c2 -774 -1 -1263
-7 -1319 -8 -70 -16 -99 -37 -130 -60 -92 -124 -127 -239 -135 -70 -4 -87 -2
-125 18 -67 34 -144 119 -170 187 l-22 58 1 1265 c1 832 5 1278 12 1304 45
167 241 257 406 186z m3811 -246 c2 -166 1 -182 -15 -189 -29 -12 -483 -19
-495 -7 -12 12 -24 317 -14 356 l6 26 258 -2 257 -3 3 -181z m10157 -25 c79
-16 127 -44 162 -96 86 -128 85 -276 -5 -403 -30 -44 -52 -62 -106 -90 l-69
-35 -1836 -5 -1836 -5 -41 -22 c-44 -23 -85 -66 -110 -114 -13 -26 -14 -370
-12 -2897 3 -2290 6 -2875 16 -2905 10 -29 144 -168 596 -620 675 -674 1091
-1112 1324 -1395 69 -83 142 -199 142 -224 0 -21 -322 -42 -360 -23 -41 22
-388 387 -650 685 -41 47 -114 128 -161 180 -112 124 -475 548 -659 770 -174
211 -283 338 -454 530 -155 174 -268 308 -302 360 -20 30 -27 59 -35 136 -15
151 -14 5520 0 5604 37 205 157 383 326 485 110 66 197 87 390 94 278 10 3623
1 3680 -10z m-11439 -170 c314 -55 632 -304 789 -618 84 -167 134 -391 121
-541 -19 -205 -83 -397 -184 -549 -207 -312 -563 -501 -946 -501 -150 0 -289
36 -461 121 -281 138 -521 455 -590 782 -19 89 -19 294 0 394 85 442 409 795
830 904 82 21 343 26 441 8z m-1568 -223 c2 -110 -1 -193 -6 -198 -14 -14
-433 -11 -446 2 -12 12 -16 354 -4 365 7 7 307 23 398 21 l55 -1 3 -189z
m-1940 -59 l5 -174 -99 -73 c-91 -68 -535 -364 -629 -420 -46 -27 -145 -91
-465 -300 -399 -260 -432 -281 -438 -275 -20 19 -30 361 -12 395 13 25 151
117 615 410 220 139 440 280 490 313 167 113 510 315 519 307 5 -5 11 -87 14
-183z m5569 -215 c30 -19 24 -503 -7 -522 -25 -16 -162 -22 -455 -21 -306 1
-357 4 -374 25 -19 22 -31 133 -31 275 0 146 10 214 33 228 7 4 46 10 87 14
110 9 733 10 747 1z m9373 -649 c61 -27 126 -93 156 -156 18 -40 24 -69 24
-123 0 -107 -23 -168 -91 -236 -48 -48 -67 -60 -128 -79 -163 -49 -311 12
-383 158 -83 169 -29 355 124 433 60 30 67 31 158 28 68 -3 108 -10 140 -25z
m-2792 -53 c123 -65 177 -159 176 -305 0 -66 -5 -89 -26 -131 -91 -176 -298
-241 -470 -147 -61 33 -103 80 -137 153 -37 78 -37 200 0 280 39 83 117 151
209 181 14 5 61 7 105 6 69 -3 89 -8 143 -37z m5845 -289 c-1 -90 -6 -168 -11
-173 -5 -5 -87 -10 -181 -11 -202 -2 -201 -3 -201 97 0 68 18 234 26 248 3 4
87 7 187 6 l182 -3 -2 -164z m-12571 -155 c58 -22 114 -75 142 -135 18 -40 21
-65 21 -186 0 -156 -17 -254 -47 -282 -18 -16 -41 -18 -202 -18 -255 1 -257 3
-321 191 l-27 82 -45 6 c-25 3 -130 6 -233 6 l-187 0 -7 71 c-6 66 -3 140 10
247 l5 44 422 -4 c370 -4 428 -7 469 -22z m-3477 -118 c3 -29 5 -118 3 -198
l-3 -145 -110 -3 c-133 -4 -326 6 -346 18 -17 11 -25 245 -12 320 11 57 11 57
265 59 l197 1 6 -52z m14907 10 c72 -33 142 -103 176 -176 24 -51 27 -68 27
-167 0 -96 -3 -116 -24 -155 -55 -104 -120 -158 -223 -186 -103 -27 -222 -9
-310 47 -53 34 -82 70 -124 149 -27 51 -29 64 -29 160 0 123 18 172 94 253 76
81 146 108 271 104 66 -2 98 -9 142 -29z m-14284 -556 c74 -38 131 -94 163
-160 21 -40 24 -62 24 -152 0 -89 -3 -112 -23 -152 -37 -74 -96 -134 -169
-170 -60 -29 -74 -32 -162 -33 -87 0 -100 3 -143 27 -59 35 -121 106 -161 183
-27 53 -31 70 -32 145 0 71 4 94 26 140 35 74 108 153 172 185 48 24 60 26
147 23 83 -4 103 -8 158 -36z m-3610 -405 c293 -85 512 -391 488 -682 -19
-223 -145 -414 -342 -517 -219 -115 -408 -115 -639 0 -88 43 -225 178 -272
267 -50 96 -77 198 -77 295 0 109 15 173 71 289 82 172 241 302 425 351 106
28 244 26 346 -3z m13360 -25 c155 -60 275 -218 305 -402 23 -148 -55 -321
-184 -411 l-64 -45 3 -1174 c1 -646 6 -1243 10 -1326 l8 -151 44 -48 c25 -27
83 -90 130 -140 47 -49 185 -200 306 -335 304 -336 537 -591 804 -880 517
-559 830 -937 830 -1001 0 -14 -22 -17 -177 -23 -98 -4 -197 -9 -221 -13 -41
-5 -44 -4 -95 48 -371 382 -366 377 -842 894 -121 131 -308 333 -415 448 -495
530 -777 845 -810 907 -12 21 -13 259 -12 1398 l2 1374 -32 26 c-161 133 -237
267 -238 417 -1 201 149 394 350 452 66 19 231 11 298 -15z m1385 -202 c74
-23 162 -83 225 -155 123 -140 158 -358 82 -512 -39 -78 -132 -175 -206 -215
-189 -102 -426 -66 -580 89 -215 214 -157 606 111 757 107 60 246 74 368 36z
m3001 -531 c68 -25 140 -93 176 -164 32 -64 41 -210 17 -280 -33 -96 -111
-175 -209 -212 -24 -9 -78 -16 -123 -17 -69 -1 -88 3 -137 27 -73 36 -139 100
-174 168 -39 76 -46 208 -15 290 37 97 116 170 224 205 56 18 169 11 241 -17z
m-15871 -715 c163 -42 339 -177 442 -339 162 -253 130 -569 -78 -792 -203
-217 -477 -288 -734 -191 -126 48 -193 90 -283 178 -197 194 -255 487 -148
746 78 188 258 348 448 398 76 20 275 20 353 0z m1607 -494 c13 -24 16 -318 4
-330 -16 -15 -297 -24 -323 -11 -22 12 -22 15 -19 170 2 115 7 162 17 174 11
14 36 17 162 17 137 0 149 -1 159 -20z m7162 -49 c161 -62 272 -209 298 -392
33 -233 -143 -486 -369 -529 -250 -47 -473 80 -557 318 -42 121 -28 307 31
408 53 90 150 167 260 207 72 25 257 19 337 -12z m-10424 -279 c19 -13 32 -69
39 -172 7 -119 -5 -168 -52 -209 -33 -28 -42 -31 -106 -31 -81 0 -126 17 -157
60 -38 51 -47 108 -34 206 12 92 29 129 65 144 28 11 228 12 245 2z m6142 -13
c25 -11 72 -44 105 -72 l59 -52 317 3 c373 4 338 19 342 -144 3 -150 14 -144
-257 -143 -116 0 -251 4 -301 8 -77 7 -92 6 -105 -8 -27 -29 -132 -112 -164
-129 -42 -22 -187 -22 -237 0 -139 61 -212 245 -152 380 28 61 98 136 148 159
58 27 185 25 245 -2z m-6913 -166 c24 -31 28 -332 4 -371 -12 -20 -62 -32
-137 -32 -85 0 -136 17 -155 52 -18 33 -22 230 -7 303 12 57 15 60 48 67 60
11 233 -2 247 -19z m15347 -292 c128 -63 218 -171 252 -302 21 -81 15 -202
-15 -279 -19 -50 -19 -56 -5 -80 22 -36 1798 -1803 1862 -1852 31 -24 70 -44
95 -49 23 -4 227 -8 452 -9 441 0 492 -5 562 -53 100 -68 136 -309 66 -446
-23 -46 -37 -60 -78 -81 l-50 -25 -501 0 -501 0 -79 59 c-131 97 -1920 1903
-2156 2175 l-46 53 -98 15 c-132 19 -180 42 -252 117 -250 260 -159 673 173
783 26 8 77 12 147 10 96 -3 113 -6 172 -36z m3264 -685 c256 -135 353 -427
226 -679 -37 -72 -142 -172 -218 -208 -282 -132 -638 61 -686 373 -35 226 107
463 324 540 41 15 74 18 166 15 111 -3 117 -4 188 -41z m-7353 -186 c142 -20
264 -112 326 -245 113 -240 -42 -533 -309 -585 -189 -37 -371 60 -464 246 -37
75 -42 95 -46 170 -4 76 -1 93 23 157 23 58 42 85 94 138 113 112 209 142 376
119z m-3840 -119 c333 -81 653 -388 736 -708 29 -111 41 -431 37 -987 -2 -358
-6 -458 -16 -468 -17 -17 -629 -15 -646 2 -8 8 -13 186 -17 588 -5 372 -11
592 -18 620 -40 153 -166 272 -331 313 -46 12 -528 14 -2935 14 -3031 -1
-2980 0 -3081 -45 -101 -44 -200 -176 -225 -300 -7 -36 -12 -247 -13 -605 -1
-302 -6 -558 -10 -567 -16 -35 -72 -41 -352 -35 -148 3 -280 7 -293 9 -19 2
-27 12 -33 37 -5 18 -7 329 -5 690 4 706 2 684 59 846 73 212 230 395 438 512
105 60 216 93 340 102 47 3 1478 6 3180 5 l3095 -1 90 -22z m-1780 -1551 c170
-43 328 -169 372 -295 23 -63 26 -316 5 -337 -11 -11 -395 -13 -2065 -13
l-2052 0 -6 65 c-14 154 20 285 97 370 94 104 284 205 419 223 17 2 732 5
1591 6 1532 1 1562 1 1639 -19z m421 -1691 c202 -28 304 -107 413 -319 42 -81
376 -900 579 -1420 33 -85 122 -310 197 -500 76 -190 193 -489 260 -665 68
-176 144 -373 169 -437 57 -146 96 -279 96 -327 0 -20 -11 -60 -25 -87 -82
-164 -212 -222 -481 -211 -168 6 -231 27 -315 105 -72 66 -98 110 -160 262
l-48 115 -758 3 c-417 1 -768 0 -780 -3 -17 -4 -39 -39 -93 -148 -81 -165
-121 -223 -185 -267 -76 -52 -147 -73 -267 -78 -235 -9 -405 59 -486 196 -24
42 -27 56 -26 132 2 109 18 161 189 590 159 400 238 602 299 768 25 68 150
383 277 700 127 317 289 725 360 905 155 396 193 471 274 553 126 127 275 166
511 133z m-6683 -40 c88 -45 232 -177 767 -704 202 -198 392 -380 423 -404 55
-42 59 -43 85 -30 15 8 216 201 447 429 551 544 645 629 779 700 l58 30 512 0
511 0 50 -24 c57 -26 98 -70 129 -136 l21 -45 3 -1740 c2 -1247 0 -1755 -8
-1792 -14 -66 -59 -133 -112 -168 -65 -43 -190 -50 -693 -39 -403 9 -422 10
-461 31 -65 35 -131 114 -144 176 -9 38 -11 280 -8 875 1 452 1 822 -2 822
-17 0 -466 -411 -745 -680 -145 -140 -268 -242 -330 -272 -38 -18 -44 -19 -75
-5 -76 33 -230 172 -889 803 -98 94 -177 162 -182 157 -5 -5 -10 -393 -11
-863 -3 -963 3 -886 -82 -974 -69 -71 -74 -71 -613 -69 -295 1 -487 6 -512 13
-55 15 -134 89 -168 158 l-28 57 -3 1734 c-3 1906 -6 1791 58 1879 16 23 53
55 82 72 l53 30 523 0 c514 0 524 0 565 -21z m13053 -3 c130 -40 195 -126 380
-501 79 -159 179 -355 222 -435 178 -328 186 -340 203 -340 20 0 94 135 302
555 121 242 237 471 260 510 57 98 115 157 195 196 60 29 78 33 173 37 181 8
279 -28 382 -138 87 -92 112 -146 111 -235 -2 -83 -25 -153 -120 -353 -36 -75
-100 -213 -141 -307 -41 -93 -139 -305 -218 -470 -318 -667 -428 -907 -457
-994 -21 -63 -22 -87 -29 -621 -4 -397 -10 -566 -19 -595 -32 -103 -128 -194
-232 -222 -90 -23 -214 -27 -298 -9 -196 42 -297 145 -320 327 -5 47 -10 285
-10 552 l0 468 -26 77 c-26 79 -119 277 -379 807 -141 287 -271 552 -478 975
-114 235 -137 298 -137 385 0 85 37 160 112 231 101 96 192 126 363 120 61 -3
133 -11 161 -20z m3115 10 c117 -21 197 -71 258 -160 59 -87 55 -18 61 -1221
l5 -1110 23 -70 c33 -97 62 -144 129 -205 105 -96 243 -137 360 -107 90 24
148 54 211 111 74 68 118 140 144 234 22 76 22 91 27 1177 6 1091 6 1100 27
1146 44 95 133 166 244 195 112 29 334 9 425 -39 44 -22 111 -90 134 -135 43
-84 43 -108 33 -1347 -9 -1131 -10 -1184 -30 -1272 -26 -117 -66 -242 -99
-307 -79 -158 -254 -361 -407 -474 -129 -94 -309 -169 -519 -214 -327 -70
-756 24 -1045 229 -145 103 -305 279 -386 425 -45 82 -100 241 -128 375 l-23
108 0 1075 c0 1281 0 1295 40 1376 87 177 273 253 516 210z m3345 3 c43 -6
101 -20 131 -30 66 -25 153 -103 184 -166 l24 -48 5 -610 c3 -339 9 -616 14
-624 8 -12 88 -13 534 -8 289 4 528 9 531 13 3 3 8 281 11 617 l5 612 24 48
c31 63 129 151 200 179 82 32 286 33 386 1 111 -36 197 -118 228 -217 18 -61
18 -3367 -1 -3446 -15 -65 -67 -147 -115 -185 -57 -43 -141 -67 -252 -73 -122
-5 -192 8 -285 54 -81 41 -130 93 -162 173 -22 56 -23 60 -26 699 l-3 642
-542 -2 -542 -3 -2 -535 c-3 -657 -10 -775 -47 -847 -64 -128 -190 -193 -371
-193 -147 0 -257 40 -340 124 -110 111 -100 -79 -103 1836 -2 1222 0 1680 8
1720 29 139 154 246 313 269 88 12 106 12 193 0z m-7921 -49 c62 -13 146 -62
206 -121 93 -91 145 -261 119 -392 -28 -143 -134 -279 -257 -328 l-58 -24
-807 4 -808 3 -10 -26 c-6 -17 -10 -150 -10 -335 l0 -309 23 -6 c12 -3 278 -6
590 -6 548 0 570 -1 629 -21 86 -29 137 -61 196 -123 161 -170 158 -414 -8
-576 -31 -31 -83 -68 -115 -84 -112 -53 -157 -56 -756 -56 -431 0 -551 -3
-554 -12 -2 -7 -8 -283 -13 -613 -9 -651 -8 -641 -67 -726 -33 -46 -119 -103
-190 -125 -72 -22 -200 -29 -279 -15 -105 18 -170 47 -229 101 -78 71 -104
136 -117 286 -11 133 -12 2188 -2 2854 l7 415 27 56 c42 85 104 141 192 172
21 8 338 13 996 18 1030 6 1216 5 1295 -11z m7301 -4957 c167 -3 304 -9 304
-12 -2 -25 -196 -225 -490 -505 -157 -149 -386 -370 -510 -491 -124 -121 -358
-348 -520 -505 -162 -157 -405 -393 -540 -525 -135 -132 -339 -330 -454 -440
-185 -178 -496 -510 -539 -576 -15 -22 -16 -202 -15 -1999 1 -2073 2 -2014
-42 -2100 -78 -153 -276 -219 -425 -143 -85 44 -139 95 -172 161 l-28 57 -3
2074 -2 2074 26 45 c31 53 263 286 639 642 148 140 398 379 555 531 157 151
375 360 485 464 313 296 708 669 840 795 363 346 529 480 573 465 7 -3 150 -8
318 -12z m-3073 -3 c172 0 197 -2 197 -16 0 -18 -239 -264 -445 -457 -82 -77
-202 -190 -265 -251 -63 -61 -180 -174 -260 -251 -80 -77 -221 -212 -315 -300
-93 -88 -224 -212 -290 -275 -66 -64 -167 -160 -225 -215 -58 -55 -190 -183
-295 -285 -104 -102 -307 -297 -450 -432 -261 -248 -505 -496 -537 -546 -16
-25 -18 -101 -24 -943 l-7 -915 60 -22 c128 -47 263 -164 321 -278 79 -157 82
-279 10 -452 -27 -65 -45 -90 -117 -163 -97 -97 -171 -140 -285 -164 -76 -15
-177 -8 -251 18 -138 49 -269 167 -335 299 -100 202 -72 420 77 601 26 32 59
73 71 90 l24 32 -6 240 c-3 132 -9 616 -12 1075 l-7 836 23 44 c43 85 129 177
491 525 200 193 487 469 639 615 311 301 676 650 825 790 536 504 644 603 795
726 111 90 97 86 255 80 77 -3 229 -6 338 -6z m-1465 -12 c-10 -29 -229 -212
-483 -404 -148 -113 -339 -259 -424 -327 -200 -158 -243 -187 -316 -209 -73
-23 -116 -17 -179 22 -156 99 -180 335 -44 428 24 16 133 77 243 137 231 124
375 212 494 302 l85 63 314 0 c246 0 313 -3 310 -12z m-11134 -304 c3 -9 6
-59 7 -112 1 -137 14 -320 23 -329 4 -4 727 -10 1606 -13 879 -3 1602 -8 1606
-13 15 -15 -18 -144 -59 -227 -76 -154 -230 -282 -441 -366 -170 -67 -111 -65
-1451 -62 l-1210 3 -72 23 c-264 81 -480 231 -604 420 -53 81 -84 164 -99 267
-11 80 -13 263 -4 353 l7 62 161 3 c480 8 524 8 530 -9z m7983 1 c77 -23 136
-74 174 -150 30 -61 31 -69 27 -152 -5 -101 -24 -146 -85 -205 -44 -43 -108
-73 -175 -83 -103 -15 -222 54 -283 166 -25 47 -29 64 -29 129 1 129 58 226
166 279 70 35 125 40 205 16z m-2853 -1 c15 -6 16 -58 15 -528 -1 -583 -1
-588 61 -647 78 -74 67 -73 785 -74 l640 0 70 -24 c186 -62 348 -216 444 -423
80 -171 74 22 78 -2335 5 -2324 8 -2190 -60 -2356 -62 -152 -189 -308 -321
-392 -70 -44 -176 -89 -266 -111 -72 -18 -141 -19 -1545 -19 l-1470 0 -86 31
c-222 79 -364 211 -446 414 -53 132 -53 132 -53 1010 l1 815 -93 7 c-168 13
-255 53 -374 172 -64 64 -90 100 -124 168 -39 79 -43 95 -48 180 -11 212 91
403 280 526 188 122 455 133 658 26 168 -88 297 -242 347 -411 15 -52 17 -165
22 -1128 6 -1137 5 -1099 54 -1127 31 -18 2651 -25 2712 -8 58 17 103 64 122
130 15 50 17 232 17 2025 1 1923 1 1971 -18 2009 -11 21 -35 53 -54 72 -67 65
-59 64 -746 64 -711 0 -700 -1 -865 81 -89 44 -118 65 -191 138 -73 72 -95
101 -134 181 -79 162 -79 155 -71 875 4 347 9 638 11 648 5 16 29 17 319 17
172 0 321 -3 329 -6z m11164 -538 c56 -77 102 -145 102 -152 0 -21 -96 -131
-230 -264 -354 -351 -752 -741 -1080 -1056 -416 -401 -854 -842 -920 -929
l-45 -58 -3 -556 c-2 -305 -1 -565 3 -578 3 -14 16 -25 33 -29 105 -26 206
-114 264 -232 l43 -86 0 -116 c0 -113 -1 -118 -35 -185 -40 -79 -88 -132 -143
-159 -21 -9 -41 -24 -44 -32 -5 -14 64 -263 91 -329 10 -24 23 -36 43 -41 156
-35 248 -84 349 -184 238 -236 242 -582 9 -816 -130 -131 -265 -193 -435 -201
-128 -6 -197 9 -320 69 -152 74 -267 212 -320 383 -73 239 32 522 248 662 29
19 57 45 62 58 7 17 0 59 -26 157 -46 173 -49 180 -104 198 -161 54 -266 155
-310 298 -58 187 -19 335 131 499 l39 42 -7 734 -6 733 25 55 c33 68 86 123
483 495 176 165 419 397 540 515 122 118 326 313 455 434 129 121 331 314 450
429 118 115 272 260 342 323 71 63 133 123 139 135 10 19 13 17 43 -29 18 -26
78 -111 134 -187z m-7796 -1007 c115 -25 193 -91 255 -217 35 -70 38 -82 38
-161 -1 -101 -24 -168 -83 -246 -67 -89 -109 -112 -249 -141 -19 -3 -22 -12
-28 -86 -3 -46 -5 -711 -3 -1478 l3 -1395 23 -55 c13 -30 64 -121 113 -202 49
-81 102 -173 117 -205 l27 -58 3 -1508 c2 -1022 -1 -1520 -8 -1545 -13 -47
-51 -76 -247 -186 -84 -47 -170 -97 -193 -112 -22 -15 -44 -24 -48 -20 -4 4
-9 746 -12 1649 l-5 1642 -32 70 c-17 39 -63 126 -102 195 -117 206 -105 -23
-102 1957 2 1889 -1 1792 58 1893 59 100 157 181 252 206 59 16 155 17 223 3z
m-11015 -169 c83 -29 149 -78 223 -166 108 -129 76 -117 300 -109 1326 43
1525 46 3165 57 2418 17 2190 18 2250 -12 59 -30 105 -86 135 -167 26 -70 23
-129 -13 -200 -34 -65 -68 -100 -125 -126 l-47 -22 -1805 3 c-993 1 -2244 5
-2781 9 l-976 6 -47 -71 c-114 -172 -270 -262 -453 -262 -250 0 -476 189 -529
443 -40 188 48 408 214 536 65 50 140 86 209 100 70 15 213 5 280 -19z m14193
-325 c56 -29 90 -95 90 -174 0 -89 -40 -153 -117 -188 -49 -23 -59 -24 -100
-14 -53 14 -103 46 -135 86 -47 60 -32 209 26 264 53 50 166 62 236 26z
m-7147 -757 c4 -62 7 -139 7 -171 0 -53 -2 -58 -26 -67 -33 -13 -304 -13 -324
0 -12 7 -16 40 -18 165 -2 86 -1 162 2 170 4 12 36 15 179 15 l174 0 6 -112z
m12151 -127 c118 -58 203 -180 213 -305 12 -150 -80 -305 -229 -383 -48 -25
-63 -28 -153 -28 -95 0 -103 2 -163 34 -79 43 -125 94 -170 189 -32 68 -36 84
-36 161 -1 73 3 95 26 143 47 100 137 180 241 214 27 9 71 13 125 10 68 -3 95
-10 146 -35z m-5709 -256 c98 -26 199 -90 300 -190 166 -165 236 -362 200
-567 -29 -167 -89 -282 -203 -390 -80 -75 -138 -111 -232 -143 -256 -87 -487
-42 -681 134 -143 129 -215 280 -226 471 -7 126 15 229 74 348 59 120 212 259
348 317 110 47 287 55 420 20z m4403 -362 l-3 -188 -179 -3 c-137 -2 -181 1
-188 10 -4 7 -8 93 -8 191 l0 177 190 0 190 0 -2 -187z m-15976 98 c67 -26
148 -95 184 -158 35 -58 64 -154 64 -208 0 -176 -145 -331 -340 -365 -45 -8
-281 -10 -770 -8 l-705 3 -58 27 c-80 38 -160 117 -200 197 -30 61 -32 73 -32
166 1 89 4 106 28 156 36 72 106 142 176 176 l56 28 565 6 c867 9 963 7 1032
-20z m1545 -87 c74 -36 147 -109 181 -182 23 -50 27 -69 27 -157 -1 -89 -4
-106 -28 -157 -55 -113 -157 -188 -284 -210 -320 -54 -560 330 -365 587 49 64
122 119 186 139 81 25 211 16 283 -20z m4291 -309 c100 -30 195 -129 233 -244
30 -90 24 -205 -16 -287 -37 -75 -110 -148 -183 -182 -50 -24 -69 -27 -157
-27 -90 0 -105 3 -154 28 -92 49 -181 162 -205 259 -13 57 -8 172 11 221 41
106 137 202 234 232 59 18 174 18 237 0z m11756 -584 c3 -5 7 -91 8 -192 3
-213 1 -221 -78 -283 -124 -99 -549 -427 -799 -616 -93 -71 -185 -141 -203
-156 -18 -15 -35 -24 -38 -21 -9 9 -33 107 -54 225 -17 92 -18 116 -8 132 16
26 150 141 288 247 58 45 175 137 260 204 85 68 253 196 372 286 119 90 220
167 223 173 8 12 22 13 29 1z m-18951 -424 c68 -32 141 -107 179 -184 28 -58
30 -68 26 -150 -5 -109 -34 -169 -120 -248 -75 -69 -131 -89 -242 -83 -96 5
-154 30 -215 92 -139 144 -143 347 -8 493 41 44 114 89 172 104 50 14 153 1
208 -24z m4380 -64 c12 -123 8 -339 -6 -351 -7 -6 -82 -12 -177 -14 l-165 -3
-3 205 c-1 112 0 210 2 217 4 10 46 13 174 13 l169 0 6 -67z m-1304 -138 c256
-87 476 -340 522 -600 25 -144 -13 -343 -89 -470 -42 -69 -158 -194 -220 -237
-226 -156 -498 -181 -738 -69 -168 78 -300 211 -374 374 -52 116 -64 173 -63
297 0 102 4 126 32 210 90 268 267 442 521 510 113 30 294 24 409 -15z m9919
-214 c17 -10 31 -334 15 -344 -12 -7 -332 -12 -339 -5 -23 24 -13 318 13 343
11 12 44 15 156 15 78 0 148 -4 155 -9z m-1302 -603 c72 -5 69 34 72 -773 l3
-722 -27 -33 c-26 -30 -82 -61 -148 -81 -71 -21 -143 32 -166 122 -17 66 -10
1405 7 1435 7 12 25 30 40 40 31 21 126 34 160 22 13 -4 39 -8 59 -10z
m-10201 -40 c9 -24 20 -310 13 -321 -5 -8 -60 -13 -171 -15 -213 -5 -200 -16
-195 177 2 80 7 152 11 159 6 9 52 12 173 12 123 0 166 -3 169 -12z m11524
-135 c141 -45 248 -227 222 -374 -22 -128 -112 -233 -228 -269 -94 -29 -185
-27 -251 6 -67 33 -135 103 -170 173 -39 80 -38 181 3 266 37 78 134 176 195
198 60 21 165 21 229 0z m155 -1315 c4 -84 3 -166 -2 -183 -7 -25 -33 -44
-173 -123 -398 -227 -489 -277 -859 -472 -102 -53 -279 -149 -395 -212 -261
-143 -557 -290 -567 -280 -3 4 -10 75 -14 158 -8 179 -1 213 54 248 21 12 210
112 422 221 212 108 410 212 440 230 311 185 1063 581 1081 569 4 -2 10 -73
13 -156z m-5904 -418 l0 -180 -26 -10 c-14 -6 -115 -10 -224 -10 -171 0 -199
2 -204 16 -8 21 -8 349 1 357 3 4 107 7 230 7 l223 0 0 -180z m1801 -996 c173
-62 344 -230 406 -402 61 -166 33 -365 -73 -523 -91 -135 -213 -218 -384 -260
-241 -60 -509 53 -659 276 -74 111 -96 185 -96 325 0 122 11 173 62 276 71
146 225 275 380 319 74 21 292 15 364 -11z"/>
<path d="M22035 26231 c-53 -24 -91 -70 -110 -133 -20 -67 -19 -94 5 -145 29
-65 95 -103 177 -103 101 0 167 43 198 129 29 84 15 148 -47 211 -58 59 -148
75 -223 41z"/>
<path d="M29420 24804 c-53 -23 -101 -92 -114 -166 -21 -114 81 -228 202 -228
134 0 235 167 173 287 -50 100 -167 147 -261 107z"/>
<path d="M17025 19983 c-4 -10 -26 -74 -50 -143 -24 -69 -78 -219 -120 -335
-79 -214 -170 -514 -159 -524 8 -9 546 -14 640 -6 l82 7 -9 36 c-19 86 -62
210 -142 417 -46 121 -104 274 -127 340 -47 135 -87 225 -100 225 -4 0 -11 -8
-15 -17z"/>
<path d="M25850 35106 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 -5
3 -10 -1 -10 -9z"/>
<path d="M25186 34929 c-25 -30 -26 -34 -26 -174 l0 -143 31 -26 c19 -16 43
-26 62 -26 18 0 46 -8 62 -17 25 -14 64 -16 235 -17 l205 -1 41 27 c82 53 86
65 82 220 -3 128 -4 138 -27 162 l-24 26 -308 0 -307 0 -26 -31z m642 -172 l2
-177 -25 -10 c-51 -19 -581 -8 -601 13 -11 10 -18 245 -10 301 6 35 12 46 29
49 12 2 153 4 312 3 l290 -1 3 -178z"/>
<path d="M17290 34500 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5
0 -10 -4 -10 -10z"/>
<path d="M23965 34299 c-4 -6 -5 -13 -2 -16 7 -7 27 6 27 18 0 12 -17 12 -25
-2z"/>
<path d="M16647 34105 c-8 -18 11 -31 25 -17 11 11 3 32 -12 32 -4 0 -10 -7
-13 -15z"/>
<path d="M16090 33860 c0 -13 5 -20 13 -17 6 2 12 10 12 17 0 7 -6 15 -12 18
-8 2 -13 -5 -13 -18z"/>
<path d="M13957 33663 c-13 -14 -41 -19 -121 -23 -63 -3 -109 -10 -119 -18 -9
-7 -42 -16 -74 -19 -32 -3 -67 -11 -78 -18 -11 -7 -36 -16 -55 -19 -19 -4
-131 -55 -247 -113 -192 -96 -220 -114 -290 -179 -43 -40 -86 -76 -96 -79 -9
-4 -23 -17 -30 -29 -6 -13 -50 -65 -97 -115 -47 -50 -92 -104 -100 -120 -9
-15 -29 -45 -46 -67 -33 -42 -151 -279 -179 -359 -10 -27 -20 -77 -24 -109 -4
-37 -12 -62 -21 -67 -54 -28 -110 -49 -131 -49 -13 0 -37 -9 -54 -20 -16 -11
-45 -20 -64 -20 -19 0 -42 -7 -52 -16 -10 -9 -37 -18 -61 -21 -24 -3 -50 -12
-59 -20 -9 -8 -34 -17 -55 -20 -22 -3 -55 -14 -74 -25 -19 -10 -46 -18 -60
-18 -14 0 -38 -9 -55 -20 -16 -11 -37 -20 -46 -20 -9 0 -22 -6 -28 -14 -7 -8
-31 -17 -54 -21 -23 -4 -51 -12 -62 -19 -11 -7 -54 -24 -95 -40 -41 -15 -88
-33 -105 -41 -16 -8 -43 -17 -60 -21 -36 -7 -917 -446 -960 -478 -16 -12 -61
-40 -100 -61 -84 -46 -219 -137 -260 -175 -16 -15 -50 -40 -75 -55 -56 -34
-486 -465 -503 -503 -7 -15 -27 -47 -45 -72 -98 -134 -162 -244 -162 -277 0
-9 -9 -37 -21 -62 -71 -154 -90 -211 -96 -281 -3 -32 -13 -64 -24 -79 -17 -22
-19 -43 -19 -273 0 -192 3 -255 14 -276 7 -15 17 -47 21 -72 3 -25 24 -97 46
-161 33 -96 39 -129 39 -195 l0 -80 -150 -153 c-83 -85 -158 -167 -167 -185
-9 -17 -28 -47 -43 -66 -39 -50 -160 -290 -160 -318 -1 -9 -9 -35 -20 -57 -13
-28 -19 -60 -19 -105 l1 -65 23 88 c30 117 59 193 112 301 83 168 144 250 314
419 l159 159 -20 80 c-12 44 -32 115 -45 157 -41 130 -75 294 -84 413 -51 630
342 1305 1029 1768 211 142 421 260 780 440 244 122 338 164 530 237 80 30
217 83 305 118 144 57 270 100 565 194 147 46 169 57 176 89 30 133 67 239
124 354 122 246 338 495 552 637 520 346 1179 409 1703 162 44 -21 154 -79
245 -130 155 -86 190 -101 190 -83 -1 13 -30 46 -36 39 -3 -3 -135 59 -293
139 -258 129 -293 144 -339 144 -35 0 -56 5 -68 18 -14 13 -41 18 -124 23 -76
4 -113 10 -130 22 -36 25 -248 25 -273 0z"/>
<path d="M15324 33549 c-10 -17 13 -36 27 -22 12 12 4 33 -11 33 -5 0 -12 -5
-16 -11z"/>
<path d="M28084 33509 c-10 -17 13 -36 27 -22 12 12 4 33 -11 33 -5 0 -12 -5
-16 -11z"/>
<path d="M15124 33429 c-3 -6 -2 -15 2 -19 12 -12 38 5 30 19 -9 14 -23 14
-32 0z"/>
<path d="M15210 33334 c0 -8 5 -12 10 -9 6 3 10 10 10 16 0 5 -4 9 -10 9 -5 0
-10 -7 -10 -16z"/>
<path d="M33515 28820 c-16 -11 -44 -20 -61 -20 -31 0 -84 -32 -84 -52 0 -5
10 -22 21 -36 l21 -27 -7 42 c-6 40 -5 44 20 53 43 16 214 23 295 12 61 -9 79
-16 98 -37 l22 -26 0 23 c0 31 -18 48 -50 48 -14 0 -42 9 -63 20 -52 28 -170
28 -212 0z"/>
<path d="M7670 28779 c-19 -10 -44 -19 -56 -19 -11 0 -39 -13 -61 -29 -76 -55
-73 -37 -73 -412 0 -321 1 -337 20 -362 11 -14 20 -31 20 -39 0 -18 20 -38 39
-38 8 0 23 -8 34 -17 15 -14 40 -19 116 -20 118 -3 131 0 131 36 0 15 9 36 20
46 20 18 21 27 18 423 l-3 404 -28 24 c-36 31 -124 33 -177 3z m180 -28 c6
-13 10 -157 10 -401 0 -423 -1 -432 -64 -472 -64 -40 -212 -10 -258 53 -30 41
-40 168 -36 456 2 148 8 276 12 286 18 38 182 95 278 96 37 1 50 -3 58 -18z"/>
<path d="M33840 28178 c0 -470 0 -471 20 -453 19 18 20 31 20 460 0 436 -2
465 -32 465 -4 0 -8 -212 -8 -472z"/>
<path d="M33376 28358 c-14 -19 -16 -65 -16 -301 l0 -278 60 -56 60 -55 0
-223 c0 -207 1 -224 20 -248 13 -16 20 -40 20 -66 0 -36 3 -41 28 -47 15 -4
35 -14 45 -22 11 -10 43 -18 80 -20 l62 -4 53 55 52 56 0 273 0 273 -158 1
c-179 2 -164 -11 23 -20 66 -3 121 -5 123 -5 1 -1 2 -113 2 -250 l0 -248 -31
-39 c-40 -51 -64 -63 -122 -64 -37 0 -58 7 -91 29 -65 45 -71 72 -72 361 l-1
245 -41 10 c-80 20 -77 7 -76 355 0 171 -1 310 -2 310 -2 0 -10 -10 -18 -22z"/>
<path d="M8536 27838 c-14 -19 -16 -63 -16 -311 0 -225 3 -294 14 -315 7 -15
17 -47 21 -72 19 -124 172 -469 251 -567 19 -23 34 -47 34 -54 0 -17 209 -227
234 -235 12 -4 39 -21 61 -39 22 -18 110 -67 195 -109 85 -42 162 -84 172 -93
17 -15 18 -48 18 -480 l0 -465 -29 -29 -29 -29 -242 0 -241 0 -91 90 c-141
140 -231 182 -402 188 -87 3 -111 0 -125 -12 -10 -9 -33 -18 -52 -22 -107 -18
-267 -151 -323 -269 -16 -33 -37 -76 -47 -96 -16 -31 -19 -60 -19 -178 l0
-141 46 -93 c34 -67 64 -110 112 -159 37 -38 73 -68 82 -68 8 0 35 -18 60 -40
36 -33 52 -40 85 -40 30 0 43 -5 53 -21 12 -19 20 -20 118 -16 77 4 110 9 123
21 10 9 30 16 45 16 15 0 53 12 84 26 72 33 192 148 192 183 0 21 -4 19 -35
-21 -102 -134 -313 -218 -476 -188 -133 23 -298 127 -374 235 -68 96 -112 252
-100 355 43 360 378 586 713 481 84 -26 136 -63 236 -165 l89 -91 236 0 c276
0 306 4 316 43 13 46 18 958 5 981 -6 11 -72 52 -148 91 -75 38 -173 93 -217
122 -314 207 -572 639 -625 1048 -14 112 -12 382 5 475 8 43 12 81 11 83 -2 2
-11 -7 -20 -20z"/>
<path d="M34632 26735 l-32 -27 0 -367 c0 -338 1 -369 18 -383 24 -21 139 -78
158 -78 23 0 136 56 162 80 l23 21 -3 345 -3 345 -25 20 c-56 44 -104 61 -185
66 -77 5 -82 4 -113 -22z m272 -38 c16 -11 28 -31 32 -54 4 -21 8 -172 8 -335
l1 -297 -39 -40 c-22 -23 -59 -47 -85 -56 -44 -15 -47 -15 -101 12 -70 36 -96
75 -105 158 -9 77 8 606 20 625 12 19 235 9 269 -13z"/>
<path d="M6364 26706 c-3 -8 -4 -23 -2 -33 3 -11 6 -6 9 15 6 34 2 42 -7 18z"/>
<path d="M6758 26695 c3 -21 7 -23 23 -14 27 14 24 39 -5 39 -19 0 -22 -4 -18
-25z"/>
<path d="M6760 26490 c0 -112 0 -114 18 -90 12 18 17 44 17 90 0 46 -5 72 -17
90 -18 24 -18 22 -18 -90z"/>
<path d="M6343 26525 c-17 -19 -16 -42 2 -49 12 -4 15 3 15 29 0 39 0 40 -17
20z"/>
<path d="M6330 26395 c-11 -13 -8 -21 15 -45 l29 -30 177 0 c98 0 184 3 193 6
9 3 16 14 16 24 0 15 -5 16 -42 9 -24 -4 -114 -8 -200 -9 l-158 0 0 30 c0 33
-11 38 -30 15z"/>
<path d="M8310 26367 c-25 -19 -56 -40 -70 -47 -14 -7 -43 -26 -65 -42 -94
-67 -182 -122 -253 -158 -45 -22 -202 -168 -202 -187 0 -36 56 -127 117 -189
l65 -66 57 4 c48 3 64 10 110 46 29 23 58 42 65 42 7 0 23 11 35 24 12 13 39
32 59 42 20 11 52 31 70 47 18 15 66 43 106 62 121 59 118 54 114 214 -2 110
-7 143 -22 171 -10 19 -22 42 -26 50 -5 10 -25 16 -62 18 -48 3 -59 -1 -98
-31z m144 1 c27 -41 56 -170 56 -246 0 -69 -2 -75 -32 -102 -17 -16 -59 -44
-92 -61 -34 -18 -104 -60 -156 -94 -168 -109 -208 -134 -251 -155 l-41 -22
-33 24 c-80 57 -173 194 -154 229 19 37 121 113 334 253 224 145 270 173 315
187 37 11 38 11 54 -13z"/>
<path d="M32891 26354 c-69 -61 -131 -140 -131 -167 -1 -12 -9 -40 -20 -62
-27 -56 -26 -129 2 -163 11 -15 18 -19 15 -10 -47 133 27 311 166 400 49 31
56 33 147 33 134 0 213 -37 285 -135 160 -217 40 -499 -233 -550 -125 -23
-274 58 -337 183 l-25 51 0 -35 c0 -30 10 -45 71 -107 38 -40 77 -72 86 -72 8
0 26 -9 40 -20 22 -17 41 -20 139 -20 l114 0 39 35 c21 19 55 42 75 50 24 10
36 22 36 35 0 10 18 40 41 66 l40 47 -3 137 -3 137 -33 32 c-18 18 -39 48 -47
67 -9 22 -33 46 -72 71 l-58 38 -140 3 -140 3 -54 -47z"/>
<path d="M33255 25140 c-22 -10 -48 -19 -58 -19 -10 -1 -56 -38 -101 -83 -69
-70 -90 -98 -130 -182 l-47 -99 4 -106 c4 -117 18 -167 88 -311 31 -63 61
-105 115 -161 71 -74 74 -79 74 -125 l1 -49 18 35 c10 19 21 47 25 62 5 24 2
28 -29 38 -54 18 -137 118 -195 234 -65 132 -83 204 -78 320 3 81 7 100 40
170 50 102 144 199 243 247 69 34 72 34 205 34 117 0 143 -3 195 -23 192 -75
310 -236 322 -442 6 -101 -7 -173 -47 -258 -43 -92 -99 -168 -184 -252 -42
-41 -76 -82 -76 -90 0 -8 12 -24 27 -36 26 -21 27 -22 13 -63 -14 -44 -202
-326 -216 -325 -12 1 -222 262 -244 304 -17 31 -19 32 -20 12 0 -13 17 -44 38
-70 21 -26 43 -57 48 -69 5 -11 33 -47 62 -78 28 -31 52 -64 52 -74 0 -27 21
-41 60 -41 39 0 60 14 60 41 0 9 16 34 35 55 19 22 38 48 41 59 4 11 21 38 38
60 33 42 86 140 86 160 0 6 -11 21 -25 33 -14 12 -25 28 -25 34 0 7 38 51 85
98 47 46 85 92 85 101 0 9 14 32 30 50 17 19 44 62 61 96 l31 62 -4 163 -4
163 -46 90 c-57 113 -95 150 -212 209 l-92 46 -155 -1 c-128 0 -161 -4 -194
-19z"/>
<path d="M6573 24690 c-74 -37 -115 -85 -171 -202 -45 -94 -56 -174 -28 -197
8 -7 17 -28 21 -49 16 -88 85 -202 122 -202 8 0 26 -9 42 -21 20 -14 39 -19
67 -17 l39 3 -42 13 c-58 17 -132 70 -165 117 -44 64 -71 165 -66 244 9 126
71 223 180 282 59 32 69 34 153 34 78 -1 97 -4 145 -29 74 -38 125 -89 163
-161 29 -55 32 -68 32 -160 0 -116 -17 -161 -85 -232 -69 -72 -120 -95 -224
-103 -50 -4 -81 -8 -68 -8 12 -1 25 -9 28 -17 4 -8 14 -15 24 -15 10 0 20 7
24 15 4 11 22 15 69 15 l63 0 82 82 c54 53 86 94 93 117 6 21 9 92 7 167 l-3
131 -36 44 c-20 24 -39 53 -43 65 -4 13 -39 37 -99 67 -89 45 -97 47 -178 47
-75 0 -93 -4 -146 -30z"/>
<path d="M9031 24471 c-62 -4 -96 -10 -99 -18 -3 -10 28 -13 132 -13 l136 0
-2 -577 -3 -578 -769 -3 c-638 -2 -772 -4 -785 -16 -9 -8 -32 -17 -51 -21 -19
-3 -96 -37 -170 -73 -128 -63 -140 -72 -237 -170 -57 -56 -103 -108 -103 -115
0 -8 -17 -36 -38 -64 -55 -74 -107 -202 -122 -303 -13 -79 -54 -182 -76 -191
-11 -4 -75 -8 -143 -8 -102 -1 -128 -4 -143 -18 -13 -12 -44 -19 -102 -22 -46
-3 -89 -11 -97 -18 -8 -6 -32 -15 -53 -19 -54 -10 -264 -119 -367 -190 -46
-32 -111 -76 -144 -98 -66 -44 -235 -210 -235 -231 0 -7 -26 -45 -57 -84 -32
-39 -72 -92 -90 -118 -46 -69 -163 -300 -178 -353 -8 -25 -27 -85 -45 -135
-63 -184 -70 -211 -69 -270 l0 -60 19 86 c110 523 420 1003 810 1254 243 157
474 232 790 256 75 6 140 16 147 22 6 7 21 62 33 122 38 196 82 305 172 428
123 166 338 306 568 369 l85 23 733 -4 732 -3 0 611 0 611 -42 -2 c-24 -1 -85
-4 -137 -7z"/>
<path d="M35386 23569 c-24 -28 -26 -38 -26 -129 0 -74 4 -100 15 -110 13 -11
15 2 15 106 0 66 4 125 9 132 6 10 48 12 184 10 115 -2 176 1 174 7 -2 6 -72
11 -174 13 l-171 2 -26 -31z"/>
<path d="M35752 23350 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z"/>
<path d="M35371 23276 c-11 -13 -8 -21 17 -46 l30 -30 141 0 c137 0 141 1 168
26 21 19 23 24 9 20 -11 -4 -91 -9 -178 -13 -151 -6 -158 -5 -158 13 0 10 -4
25 -9 32 -6 10 -10 10 -20 -2z"/>
<path d="M5227 23012 l-27 -28 0 -163 0 -163 29 -29 29 -29 140 0 140 0 31 32
c17 17 31 39 31 47 0 9 9 30 20 46 25 38 27 121 3 173 -10 20 -20 60 -23 87
l-5 50 -170 3 -171 2 -27 -28z m315 12 c36 -6 36 -7 49 -73 19 -95 17 -209 -4
-248 -36 -67 -120 -100 -235 -91 -107 8 -137 53 -137 213 0 129 14 179 53 194
30 11 217 14 274 5z"/>
<path d="M6804 21611 c-232 -42 -383 -117 -551 -275 -243 -229 -386 -542 -400
-876 -11 -282 47 -504 190 -717 72 -108 253 -288 350 -347 132 -82 297 -135
474 -152 72 -6 73 -6 83 20 16 42 14 761 -2 773 -7 5 -40 15 -73 23 -122 26
-181 77 -215 186 -39 129 -17 290 55 394 36 52 103 97 170 115 32 8 61 17 64
21 3 3 6 195 6 427 l0 422 -25 2 c-14 1 -70 -6 -126 -16z"/>
<path d="M34386 21622 c-8 -8 -7 -779 0 -836 l7 -46 46 0 c72 0 119 -18 168
-63 87 -80 133 -186 133 -306 0 -93 -27 -164 -82 -218 -63 -60 -83 -68 -244
-99 -12 -2 -24 -14 -28 -26 -8 -31 -8 -727 1 -768 l6 -33 96 7 c168 13 297 49
451 126 271 136 482 367 587 645 118 310 89 668 -79 961 -138 243 -310 408
-543 520 -143 69 -267 109 -385 123 -52 7 -103 14 -112 16 -9 1 -19 0 -22 -3z"/>
<path d="M5096 20638 c-13 -19 -16 -57 -16 -239 0 -205 1 -218 21 -240 l21
-24 -7 25 c-12 51 -17 346 -7 420 6 41 9 76 8 78 -2 2 -11 -7 -20 -20z"/>
<path d="M5121 20051 c-1 -29 6 -74 14 -100 8 -25 28 -92 45 -149 46 -149 216
-488 286 -568 30 -34 54 -67 54 -74 0 -18 169 -188 194 -196 12 -4 50 -31 85
-60 34 -30 91 -68 125 -84 33 -16 79 -45 101 -65 22 -19 46 -35 53 -35 8 0 26
-6 40 -14 62 -33 271 -87 412 -106 47 -6 99 -16 117 -21 17 -6 85 -13 150 -17
l118 -7 5 -695 c3 -382 6 -696 8 -696 25 -16 28 -9 19 65 -5 42 -7 365 -5 719
l4 642 -85 0 c-99 0 -309 23 -426 46 -364 73 -693 281 -942 595 -149 189 -289
499 -348 768 -22 101 -23 103 -24 52z"/>
<path d="M34388 18588 c-2 -7 -3 -355 -3 -773 0 -748 0 -761 -22 -835 -46
-160 -119 -310 -208 -427 -47 -63 -52 -73 -35 -73 15 0 26 11 36 36 9 21 31
53 50 73 18 20 34 42 34 50 0 7 18 36 40 63 24 31 40 61 40 77 0 15 9 44 20
66 11 22 20 51 20 65 0 14 8 37 18 50 16 23 17 81 20 805 2 625 5 782 16 795
28 32 28 40 2 40 -14 0 -27 -6 -28 -12z"/>
<path d="M5302 18108 c-7 -7 -12 -14 -12 -17 0 -4 83 -5 185 -3 l185 3 0 -181
0 -180 -26 -10 c-39 -15 -341 -13 -348 3 -3 6 -4 1 -3 -13 l2 -25 173 0 174 0
24 28 c24 28 24 30 22 215 l-3 187 -180 3 c-132 2 -184 -1 -193 -10z"/>
<path d="M5260 17954 c-11 -12 -10 -18 3 -32 16 -15 17 -14 17 16 0 36 -2 38
-20 16z"/>
<path d="M6961 17017 c-1 -69 3 -88 38 -170 21 -51 41 -103 44 -117 8 -34 68
-131 115 -188 22 -26 42 -57 46 -68 8 -27 100 -114 119 -114 7 0 49 -33 93
-73 129 -120 357 -225 547 -252 21 -3 48 -11 60 -18 17 -9 167 -13 620 -15
l597 -4 0 -506 c0 -489 -1 -508 -20 -537 -11 -16 -20 -43 -20 -60 0 -25 -30
-61 -200 -234 -110 -113 -200 -210 -200 -216 0 -7 -15 -32 -33 -56 -41 -54
-122 -213 -130 -255 -3 -17 -22 -66 -41 -107 -28 -58 -36 -88 -35 -129 l0 -53
27 95 c50 174 117 318 215 465 59 88 188 224 350 370 l78 70 9 75 c5 41 10
301 10 578 0 393 -3 504 -12 507 -7 2 -267 9 -578 14 -709 13 -745 18 -1005
146 -375 185 -612 481 -678 850 l-15 80 -1 -78z"/>
<path d="M34799 16579 l-24 -20 40 5 c22 3 76 6 120 6 73 1 78 2 61 15 -14 10
-45 15 -97 15 -63 0 -81 -4 -100 -21z"/>
<path d="M35044 16583 c-10 -17 -8 -18 28 -15 43 5 48 25 7 30 -15 2 -28 -4
-35 -15z"/>
<path d="M35120 16500 c0 -28 2 -30 20 -20 11 6 20 15 20 20 0 5 -9 14 -20 20
-18 10 -20 8 -20 -20z"/>
<path d="M34003 16391 c-72 -69 -215 -172 -288 -209 -58 -29 -210 -88 -275
-106 -155 -44 -209 -47 -929 -55 -624 -8 -696 -10 -706 -25 -25 -33 -31 -803
-9 -1053 l6 -62 61 -38 c121 -73 204 -135 299 -224 260 -240 412 -514 484
-868 37 -183 36 -474 -3 -631 -6 -24 -6 -25 13 -6 16 17 20 39 24 157 3 91 9
142 18 151 16 16 15 43 -2 57 -11 9 -15 48 -18 161 -2 123 -6 151 -19 162 -11
9 -18 35 -22 76 -3 34 -12 73 -20 85 -7 12 -17 39 -21 59 -8 45 -86 199 -127
250 -16 20 -29 41 -29 47 0 5 -17 31 -39 58 -21 27 -42 59 -45 71 -9 28 -269
288 -309 309 -18 9 -47 27 -65 41 -18 14 -56 39 -84 56 -56 33 -56 32 -88 196
-5 25 -9 229 -9 453 -1 386 0 410 19 452 l20 43 714 4 c648 3 716 5 728 19 9
12 37 19 90 23 56 5 97 16 150 40 40 18 86 36 101 40 63 15 209 96 262 145 31
28 63 51 71 51 16 0 110 84 125 111 21 39 -10 23 -78 -40z"/>
<path d="M34615 16390 c-24 -47 -20 -117 11 -157 l25 -33 224 0 224 0 30 33
c27 28 31 39 31 89 0 41 -5 62 -17 74 -17 17 -18 13 -21 -73 -2 -75 -6 -93
-20 -99 -9 -4 -107 -9 -217 -11 -259 -5 -250 -9 -249 115 0 51 -1 92 -2 92 -2
0 -10 -13 -19 -30z"/>
<path d="M6675 16390 c-11 -5 -36 -11 -56 -15 -21 -3 -42 -12 -48 -19 -8 -9
-11 -68 -9 -182 l3 -169 168 0 167 -1 -165 3 -165 3 0 170 c0 168 0 170 23
175 12 3 98 5 190 3 161 -3 167 -2 146 15 -25 20 -46 22 -52 5 -3 -10 -9 -10
-28 0 -13 6 -37 12 -54 12 -16 -1 -46 1 -65 4 -19 3 -44 1 -55 -4z"/>
<path d="M6950 16171 c0 -134 -2 -150 -17 -154 -14 -4 -12 -5 5 -6 22 -1 22 0
22 154 0 85 -2 155 -5 155 -3 0 -5 -67 -5 -149z"/>
<path d="M7655 15523 l-50 -39 -3 -428 -2 -427 35 -44 c42 -51 82 -69 135 -62
57 7 150 54 150 75 0 9 9 31 20 47 19 29 20 48 20 401 0 365 0 371 -23 413
-29 57 -92 92 -172 98 -57 4 -62 3 -110 -34z m230 -23 c12 -5 25 -17 29 -27 4
-10 7 -195 7 -412 -1 -433 -2 -440 -63 -484 -35 -26 -121 -34 -156 -16 -38 20
-70 58 -83 99 -16 53 -8 805 9 822 27 28 76 38 156 32 43 -3 89 -9 101 -14z"/>
<path d="M32990 15299 c-19 -10 -47 -19 -63 -19 -20 0 -43 -16 -90 -63 -78
-78 -117 -169 -117 -274 0 -65 3 -75 89 -243 5 -8 19 -16 33 -18 15 -2 38 -19
57 -43 l32 -39 97 1 97 2 -70 7 c-84 9 -94 12 -167 63 -100 69 -153 177 -146
300 12 245 256 388 483 283 72 -34 127 -85 166 -158 32 -59 34 -69 34 -158 0
-81 -4 -102 -24 -142 -43 -84 -124 -152 -211 -179 -24 -7 -24 -7 6 -8 17 -1
37 6 44 14 7 8 27 15 44 15 35 0 76 24 76 45 0 8 18 35 40 60 l40 46 0 148 c0
141 -1 149 -25 180 -13 19 -34 43 -47 54 -13 11 -44 40 -70 64 -26 24 -57 43
-70 43 -13 1 -41 9 -63 20 -52 25 -129 25 -175 -1z"/>
<path d="M8536 13798 c-12 -17 -16 -46 -15 -113 l1 -90 13 80 c7 45 16 95 20
113 8 38 2 41 -19 10z"/>
<path d="M8521 13264 c-1 -82 3 -110 19 -145 11 -24 20 -57 20 -73 0 -91 174
-465 265 -571 28 -33 55 -70 61 -82 17 -40 203 -221 240 -233 26 -9 34 -17 34
-35 0 -13 -5 -27 -10 -30 -24 -15 -70 -128 -70 -171 0 -25 -9 -62 -20 -84 -15
-30 -20 -57 -19 -117 l1 -78 9 55 c18 109 63 272 103 369 14 36 26 66 26 67 0
2 -32 28 -70 59 -239 191 -468 572 -546 910 -9 39 -22 113 -29 165 l-13 95 -1
-101z"/>
<path d="M32632 13073 c-4 -44 -92 -277 -138 -361 -105 -195 -211 -334 -362
-478 l-96 -91 42 -159 c73 -282 93 -465 73 -689 -26 -305 -167 -636 -404 -950
-73 -96 -294 -318 -430 -433 -285 -239 -795 -523 -1556 -869 -369 -167 -501
-220 -769 -309 -124 -41 -232 -80 -238 -85 -7 -5 -20 -40 -30 -77 -23 -90
-109 -289 -170 -396 -103 -182 -286 -381 -494 -537 -96 -73 -327 -192 -450
-233 -344 -113 -561 -127 -925 -60 -173 32 -369 116 -672 288 -142 81 -153 81
-294 11 -63 -32 -190 -99 -284 -150 -169 -91 -271 -145 -500 -265 -66 -35
-149 -80 -185 -100 -36 -20 -153 -83 -260 -140 -107 -57 -301 -160 -430 -230
-284 -154 -765 -403 -1145 -593 -328 -164 -432 -227 -441 -266 -13 -58 -80
-201 -131 -278 -260 -396 -779 -722 -1318 -827 -241 -48 -402 -55 -641 -31
-283 29 -465 82 -740 215 -261 127 -474 282 -637 465 -151 169 -233 299 -297
472 -10 27 -29 41 -109 82 -53 27 -373 188 -711 359 -338 171 -761 385 -940
476 -179 92 -509 259 -735 372 -225 113 -468 237 -540 274 -166 87 -406 199
-442 206 -22 4 -50 -8 -138 -61 -216 -132 -404 -217 -570 -259 -434 -109 -816
-68 -1207 129 -361 182 -615 435 -784 780 -80 165 -114 256 -114 308 0 19 -6
39 -13 45 -10 9 -11 -2 -6 -56 6 -60 17 -95 51 -156 5 -10 17 -42 25 -70 19
-64 90 -201 148 -284 23 -34 79 -101 124 -147 44 -46 87 -100 95 -119 10 -23
22 -36 33 -36 11 0 58 -36 106 -80 48 -44 92 -80 98 -80 6 0 29 -15 52 -34 44
-35 267 -148 327 -165 19 -5 73 -23 120 -39 85 -30 136 -42 197 -47 18 -2 50
-9 70 -17 27 -9 98 -13 249 -13 180 0 213 3 227 16 10 11 44 19 99 24 46 4 89
12 96 18 8 6 40 14 71 18 45 5 100 27 242 98 101 51 188 97 194 102 5 5 16 9
24 9 8 0 26 11 40 24 15 13 51 37 81 54 55 29 56 29 79 11 13 -11 37 -19 55
-19 20 0 43 -11 66 -31 41 -36 149 -89 182 -89 13 0 34 -9 48 -20 14 -11 31
-20 39 -20 7 0 29 -13 47 -30 36 -31 228 -130 254 -130 8 0 38 -15 65 -33 28
-19 443 -230 924 -470 480 -240 889 -450 907 -467 23 -19 46 -30 65 -30 17 0
42 -9 56 -20 14 -11 31 -20 38 -20 14 0 133 -70 174 -101 13 -11 31 -19 40
-19 21 0 120 -41 154 -63 15 -9 33 -17 42 -17 8 0 35 -18 59 -40 32 -30 52
-40 77 -40 42 0 115 -48 142 -93 51 -83 77 -140 77 -168 0 -23 14 -46 56 -92
31 -34 62 -75 69 -92 15 -34 375 -395 394 -395 7 0 31 -15 54 -34 23 -18 77
-50 119 -71 42 -21 87 -48 99 -61 12 -13 38 -27 58 -30 20 -3 86 -30 146 -59
126 -61 206 -89 288 -104 31 -6 65 -15 75 -20 18 -9 193 -27 225 -22 10 1 30
-6 45 -16 24 -16 49 -18 222 -17 156 0 201 4 225 16 17 9 73 19 130 23 54 4
108 13 120 21 11 7 47 16 80 20 33 4 69 13 80 19 11 7 34 16 50 19 47 11 251
94 339 138 43 21 99 55 124 74 25 18 49 34 54 34 5 0 29 16 52 35 24 19 48 35
54 35 6 0 41 27 79 60 37 33 73 60 81 60 20 0 122 101 122 121 0 10 36 55 80
101 44 46 80 91 80 101 0 9 18 37 40 61 30 33 40 51 40 77 0 19 8 46 17 59 10
14 20 45 23 69 4 39 9 46 35 54 17 6 45 23 63 38 18 16 191 108 385 205 193
97 369 189 389 205 20 16 46 29 58 29 24 0 214 93 245 120 22 19 150 87 365
195 74 37 142 74 150 81 31 26 160 94 180 94 11 0 41 15 67 33 27 19 91 56
143 82 135 68 203 105 220 120 19 16 171 95 440 230 118 60 229 118 245 131
35 26 373 204 388 204 16 0 142 -67 227 -120 105 -65 289 -153 390 -185 47
-15 99 -33 116 -40 30 -13 84 -21 187 -29 26 -2 55 -10 64 -18 12 -10 63 -13
217 -13 168 1 205 3 226 17 14 9 60 19 104 23 44 4 89 13 100 20 12 7 39 16
60 20 21 3 48 12 60 20 12 7 35 15 52 18 17 3 108 44 202 90 163 80 177 90
273 181 56 53 108 96 115 96 21 0 154 130 154 150 0 9 25 44 55 76 30 33 58
68 61 79 4 11 21 38 39 60 36 45 125 223 125 251 1 11 9 37 20 59 11 22 20 51
20 65 0 14 9 39 20 55 11 17 20 38 20 48 0 10 12 22 28 28 15 6 38 17 52 24
14 7 41 16 60 19 19 4 49 13 65 21 29 13 76 29 175 60 99 31 148 48 225 80 44
19 91 37 105 41 13 4 127 58 253 120 125 62 242 116 260 120 38 8 679 327 722
359 26 20 133 79 220 123 17 9 51 35 78 58 26 23 81 59 121 79 40 20 86 50
102 66 16 17 58 50 94 74 78 52 422 399 465 469 64 105 88 142 111 169 13 16
24 32 24 36 0 5 18 41 39 80 22 39 43 82 47 94 3 12 19 36 35 52 18 19 32 48
38 78 4 26 14 53 20 61 7 8 15 41 18 73 3 32 14 72 24 89 15 25 19 52 19 137
0 89 3 113 21 147 18 34 21 53 17 112 -4 48 -11 75 -21 83 -11 8 -16 39 -18
138 -3 97 -7 130 -18 136 -9 6 -18 37 -22 77 -5 37 -15 77 -23 89 -8 12 -15
35 -16 51 -6 81 -5 82 132 220 72 72 139 147 148 165 39 78 72 135 89 154 24
26 151 286 151 309 0 9 9 37 21 62 13 30 19 59 16 87 -2 23 -4 32 -5 20z"/>
<path d="M9016 11596 c-13 -21 -16 -54 -16 -180 0 -141 2 -156 21 -177 l20
-24 -5 40 c-14 109 -17 198 -8 275 6 47 9 86 8 88 -2 1 -11 -9 -20 -22z"/>
<path d="M9039 11180 c-8 -48 9 -116 74 -300 78 -224 91 -255 127 -300 15 -19
42 -64 60 -100 18 -36 48 -84 67 -107 18 -23 33 -47 33 -54 0 -18 461 -479
480 -479 8 0 46 -27 83 -60 38 -33 74 -60 81 -60 8 0 40 -25 72 -55 33 -30 68
-57 79 -61 11 -4 39 -22 63 -41 29 -24 57 -37 85 -40 40 -5 38 -2 -63 59 -330
202 -660 489 -848 740 -181 243 -304 503 -366 781 -15 63 -25 92 -27 77z"/>
<path d="M10400 9501 c0 -5 12 -18 28 -29 47 -33 855 -432 875 -432 10 0 87
-34 171 -75 83 -41 167 -78 186 -81 19 -4 44 -13 55 -19 11 -7 34 -16 50 -20
17 -3 44 -13 60 -20 53 -24 109 -46 150 -60 22 -7 105 -36 185 -63 130 -45
234 -73 220 -60 -3 3 -93 36 -200 73 -365 126 -624 230 -930 372 -41 19 -113
52 -160 73 -102 45 -469 229 -597 300 -51 28 -93 46 -93 41z"/>
<path d="M14477 6260 c-28 -22 -77 -136 -77 -178 1 -21 5 -15 19 25 22 66 57
116 96 140 24 14 50 18 125 17 102 0 145 -14 175 -56 46 -66 64 -247 31 -323
-37 -86 -101 -124 -209 -125 -37 0 -82 6 -100 14 -48 20 -97 78 -118 138 l-18
53 -1 -49 c0 -66 43 -118 135 -165 58 -29 73 -33 116 -27 68 9 138 47 188 102
l43 46 -4 131 c-3 125 -5 135 -36 194 -17 34 -41 67 -51 73 -11 5 -80 10 -154
10 -119 0 -137 -2 -160 -20z"/>
<path d="M22721 5424 c-12 -9 -36 -45 -52 -79 -24 -53 -29 -76 -29 -142 0 -70
3 -84 29 -125 46 -73 59 -78 191 -78 115 0 117 0 144 29 45 47 76 125 76 190
0 44 -8 73 -34 128 -19 39 -44 76 -55 82 -11 6 -71 11 -133 11 -88 0 -119 -4
-137 -16z m245 -23 c33 -20 67 -83 78 -144 20 -110 -52 -228 -146 -242 -148
-22 -242 58 -243 205 0 54 5 73 28 113 41 70 75 87 172 87 61 0 87 -5 111 -19z"/>
<path d="M23467 5412 l-27 -28 0 -161 c0 -160 0 -162 27 -193 l27 -32 262 3
c232 4 264 6 281 22 11 9 28 17 39 17 44 1 46 10 42 157 -2 106 -7 145 -19
163 -9 14 -19 37 -23 53 l-6 27 -288 0 -288 0 -27 -28z m589 -5 c16 -15 28
-269 15 -314 -15 -56 -29 -58 -286 -56 -222 3 -294 8 -310 24 -5 5 -11 80 -13
167 -3 127 -2 160 10 169 7 7 41 14 73 16 104 7 503 2 511 -6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

BIN
assets/img/gamingpc.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
assets/img/hd-radarr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
assets/img/indexer-list.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
assets/img/jf-corrected.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

BIN
assets/img/jf-display.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

BIN
assets/img/jf-library.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

BIN
assets/img/jf-login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
assets/img/jf-media.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

BIN
assets/img/jf-settings.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
assets/img/kasm-auth.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
assets/img/kasm-auth2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
assets/img/kasm-auth3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 KiB

BIN
assets/img/kasm-saml.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

BIN
assets/img/network-flow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

BIN
assets/img/newlogo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
assets/img/newlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

BIN
assets/img/newlogo32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
assets/img/newlogolarge.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
assets/img/newlogolarge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 MiB

BIN
assets/img/pagerules.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
assets/img/proton-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/img/prox-resize.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
assets/img/seer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
assets/img/sonarr-1080p.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
assets/img/sonarr-cf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,235 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Import 2023-08-26 04:06 | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A blog by Mafyuh">
<meta name="author" content="Matt">
<link rel="canonical" href="http://localhost:1313/categories/import-2023-08-26-0406/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/import-2023-08-26-0406/index.xml">
<link rel="alternate" hreflang="en" href="http://localhost:1313/categories/import-2023-08-26-0406/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Import 2023-08-26 04:06" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://localhost:1313/categories/import-2023-08-26-0406/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Import 2023-08-26 04:06"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="http://localhost:1313/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="http://localhost:1313/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/categories/">Categories</a></div>
<h1>
Import 2023-08-26 04:06
<a href="/categories/import-2023-08-26-0406/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Software
</h2>
</header>
<div class="entry-content">
<p>Just a straight forward list of pretty much everything that makes up my homelab. Or systems Ive ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI...</p>
</div>
<footer class="entry-footer"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Software" href="http://localhost:1313/posts/software/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Import 2023-08-26 04:06 on Mafyuh&#39;s Blog</title>
<link>http://localhost:1313/categories/import-2023-08-26-0406/</link>
<description>Recent content in Import 2023-08-26 04:06 on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Sat, 26 Aug 2023 00:13:40 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/categories/import-2023-08-26-0406/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Software</title>
<link>http://localhost:1313/posts/software/</link>
<pubDate>Sat, 26 Aug 2023 00:13:40 +0000</pubDate>
<guid>http://localhost:1313/posts/software/</guid>
<description>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&amp;rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI</description>
</item>
</channel>
</rss>

View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>http://localhost:1313/categories/import-2023-08-26-0406/</title>
<link rel="canonical" href="http://localhost:1313/categories/import-2023-08-26-0406/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/categories/import-2023-08-26-0406/">
</head>
</html>

View file

@ -0,0 +1,235 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Import 2023-09-08 02:16 | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A blog by Mafyuh">
<meta name="author" content="Matt">
<link rel="canonical" href="http://localhost:1313/categories/import-2023-09-08-0216/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/import-2023-09-08-0216/index.xml">
<link rel="alternate" hreflang="en" href="http://localhost:1313/categories/import-2023-09-08-0216/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Import 2023-09-08 02:16" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://localhost:1313/categories/import-2023-09-08-0216/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Import 2023-09-08 02:16"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="http://localhost:1313/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="http://localhost:1313/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/categories/">Categories</a></div>
<h1>
Import 2023-09-08 02:16
<a href="/categories/import-2023-09-08-0216/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Software
</h2>
</header>
<div class="entry-content">
<p>Just a straight forward list of pretty much everything that makes up my homelab. Or systems Ive ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI...</p>
</div>
<footer class="entry-footer"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Software" href="http://localhost:1313/posts/software/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Import 2023-09-08 02:16 on Mafyuh&#39;s Blog</title>
<link>http://localhost:1313/categories/import-2023-09-08-0216/</link>
<description>Recent content in Import 2023-09-08 02:16 on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Sat, 26 Aug 2023 00:13:40 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/categories/import-2023-09-08-0216/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Software</title>
<link>http://localhost:1313/posts/software/</link>
<pubDate>Sat, 26 Aug 2023 00:13:40 +0000</pubDate>
<guid>http://localhost:1313/posts/software/</guid>
<description>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&amp;rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI</description>
</item>
</channel>
</rss>

View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>http://localhost:1313/categories/import-2023-09-08-0216/</title>
<link rel="canonical" href="http://localhost:1313/categories/import-2023-09-08-0216/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/categories/import-2023-09-08-0216/">
</head>
</html>

213
categories/index.html Normal file
View file

@ -0,0 +1,213 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Categories | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A blog by Mafyuh">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/categories/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="https://mafyuh.com/categories/index.xml">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/categories/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Categories" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mafyuh.com/categories/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Categories"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header">
<h1>Categories</h1>
</header>
<ul class="terms-tags">
</ul>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

11
categories/index.xml Normal file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Categories on Mafyuh&#39;s Blog</title>
<link>https://mafyuh.com/categories/</link>
<description>Recent content in Categories on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<atom:link href="https://mafyuh.com/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

340
contact/index.html Normal file
View file

@ -0,0 +1,340 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Contact | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:
Email: admin[at]mafyuh[dot]com Discord Resume If you&rsquo;re interested in my professional experience, you can download my resume below:
Download Resume ">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/contact/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/contact/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Contact" />
<meta property="og:description" content="Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:
Email: admin[at]mafyuh[dot]com Discord Resume If you&rsquo;re interested in my professional experience, you can download my resume below:
Download Resume " />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/contact/" /><meta property="article:section" content="" />
<meta property="article:published_time" content="2024-02-22T08:00:00+00:00" />
<meta property="article:modified_time" content="2024-02-22T08:00:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Contact"/>
<meta name="twitter:description" content="Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:
Email: admin[at]mafyuh[dot]com Discord Resume If you&rsquo;re interested in my professional experience, you can download my resume below:
Download Resume "/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Contact",
"item": "https://mafyuh.com/contact/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Contact",
"name": "Contact",
"description": "Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:\nEmail: admin[at]mafyuh[dot]com Discord Resume If you\u0026rsquo;re interested in my professional experience, you can download my resume below:\nDownload Resume ",
"keywords": [
],
"articleBody": "Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:\nEmail: admin[at]mafyuh[dot]com Discord Resume If youre interested in my professional experience, you can download my resume below:\nDownload Resume ",
"wordCount" : "40",
"inLanguage": "en",
"datePublished": "2024-02-22T08:00:00Z",
"dateModified": "2024-02-22T08:00:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/contact/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a></div>
<h1 class="post-title entry-hint-parent">
Contact
</h1>
<div class="post-meta"><span title='2024-02-22 08:00:00 +0000 UTC'>February 22, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;40 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:</p>
<ul>
<li><strong>Email:</strong> admin[at]mafyuh[dot]com</li>
<li><a href="https://discordapp.com/users/395699338757537792"><strong>Discord</strong></a></li>
</ul>
<h2 id="resume">Resume<a hidden class="anchor" aria-hidden="true" href="#resume">#</a></h2>
<p>If you&rsquo;re interested in my professional experience, you can download my resume below:</p>
<ul>
<li><a href="link-to-resume.pdf">Download Resume</a></li>
</ul>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

BIN
favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

BIN
favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

307
index.html Normal file

File diff suppressed because one or more lines are too long

1
index.json Normal file

File diff suppressed because one or more lines are too long

157
index.xml Normal file
View file

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Mafyuh&#39;s Blog</title>
<link>https://mafyuh.com/</link>
<description>Recent content on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Fri, 15 Mar 2024 00:13:40 +0000</lastBuildDate>
<atom:link href="https://mafyuh.com/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>How to create a Solana Token (SPL) from CLI with metadata</title>
<link>https://mafyuh.com/posts/spl-token-cli/</link>
<pubDate>Fri, 15 Mar 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/spl-token-cli/</guid>
<description>I wanted to create an SPL token and after looking online I couldn&amp;rsquo;t find an updated guide. I mainly just found Keyglowmax (SCAM). So I thought I would learn and share. There are much easier ways to create these tokens but they cost $ and spending more $ than needed is no fun. They also have you connect your wallet which is enough of a worry. This guide costs as little SOL as possible as everything is transacted directly on-chain.</description>
</item>
<item>
<title>Configuring Arr Stack</title>
<link>https://mafyuh.com/posts/arr-stack-config-guide/</link>
<pubDate>Sun, 25 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/arr-stack-config-guide/</guid>
<description>This is blog post 2/2 on setting up a Arr stack using docker. This post will touch on configuring these services and what I have learned when using these services. I will be referring to TRaSH-Guides often in this post. It&amp;rsquo;s like the bible of the Arr&amp;rsquo;s so I would look there for more options, especially if your setup differs from mine.
Prerequisites Any Usenet Server Subscription (preferred) Any Usenet Indexer Subscription (preferred) Real-Debrid Subscription (if you like torrents being fast) VPN Subscription (Bare minimum needed to download torrents) Configuration Prowlarr We will first start with Prowlarr and Sabnzbd to get all of this out of the way, and it&amp;rsquo;s the part where you&amp;rsquo;re gonna spend some $</description>
</item>
<item>
<title>Docker Compose Arr Stack Guide</title>
<link>https://mafyuh.com/posts/docker-arr-stack-guide/</link>
<pubDate>Fri, 23 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/docker-arr-stack-guide/</guid>
<description>This guide is for someone who is looking to setup an Arr Stack for media organization and downloading. This guide requires no remote path mappings, follows Trash-Guides recommendations and every command needed is copy-pasteable. The VM&amp;rsquo;s in this guide are hosted on Proxmox 8.1.4, but you can use any Ubuntu environment (WSL-2, VirtualBox, etc.)
Arr VM Specs:
2 core host 8GB RAM 100GB Storage Downloader VM Specs:
2 core host 4GB RAM 250GB Storage (can download up to this limit at a time, be careful when mass downloading or give plenty of space) Prerequisites Ubuntu 22.</description>
</item>
<item>
<title>About</title>
<link>https://mafyuh.com/about/</link>
<pubDate>Thu, 22 Feb 2024 08:00:00 +0000</pubDate>
<guid>https://mafyuh.com/about/</guid>
<description>Hello! 👋 I&amp;rsquo;m Matt Reeves, a DevOps and GitOps enthusiast with a passion for self-hosting.
Before diving into the world of DevOps and GitOps, I honed my skills as an advanced electronics repair technician, tackling complex challenges with multimeters, oscilloscopes, and soldering irons. From troubleshooting intricate circuits to mastering surface-mount technology (SMT), I thrived on solving problems and learning what&amp;rsquo;s possible in electronics.
While I continue to stay up-to-date with hardware, my focus has shifted more towards the software side of things.</description>
</item>
<item>
<title>Contact</title>
<link>https://mafyuh.com/contact/</link>
<pubDate>Thu, 22 Feb 2024 08:00:00 +0000</pubDate>
<guid>https://mafyuh.com/contact/</guid>
<description>Got questions, feedback, or just want to say hi? Feel free to reach out to me using the contact information below:
Email: admin[at]mafyuh[dot]com Discord Resume If you&amp;rsquo;re interested in my professional experience, you can download my resume below:
Download Resume </description>
</item>
<item>
<title>Selfhosted Game Servers</title>
<link>https://mafyuh.com/posts/selfhosted-game-servers/</link>
<pubDate>Thu, 22 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/selfhosted-game-servers/</guid>
<description>Something I only got into recently is hosting video game servers for games that support servers. Maybe it&amp;rsquo;s just something about having another server, cause these are totally not needed. But they are pretty easy to setup thanks to the open-source community.
Sons of the Forest I wanted to play sons one day and when I looked into multiplayer I seen there were options for servers. This sparked me Googling and finding this repo.</description>
</item>
<item>
<title>Resize Ubuntu VM Disk in Proxmox</title>
<link>https://mafyuh.com/posts/resize-ubuntu-vm-disk/</link>
<pubDate>Tue, 06 Feb 2024 02:58:07 +0000</pubDate>
<guid>https://mafyuh.com/posts/resize-ubuntu-vm-disk/</guid>
<description>1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l </description>
</item>
<item>
<title>Proton Mail - SimpleLogin authentik Social Login Setup</title>
<link>https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/</link>
<pubDate>Sun, 12 Nov 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/</guid>
<description>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.</description>
</item>
<item>
<title>How To Automate Jellyfin Issue Handling</title>
<link>https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/</link>
<pubDate>Sat, 11 Nov 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/</guid>
<description>I wanted a way to automate when users tell me a video on my Jellyfin server has an issue. After alot of trial and error, ChatGPT, Bard and I came up with this automation.
Requirements My only requirements when making this was that it was free and self-hostable. Not even any NPM extensions are required in AP. Actual Software requirements are:
Sonarr Radarr Overseerr/Jellyseerr Optional
SMTP server or ability to send SMTP messages (can also use discord) ActivePieces or any other automation platform that supports TS.</description>
</item>
<item>
<title>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager</title>
<link>https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/</guid>
<description>authentik&amp;rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.</description>
</item>
<item>
<title>How to authenticate Zammad via SAML with Nginx Proxy Manager</title>
<link>https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</guid>
<description>If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.</description>
</item>
<item>
<title>Jellyfin Help</title>
<link>https://mafyuh.com/jellyfin-help/</link>
<pubDate>Wed, 11 Oct 2023 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/jellyfin-help/</guid>
<description>If you are new to Jellyfin or Self-Hosted media in general, this will be a resource to help you get started.
💡 All of the software that makes up this setup are free and open-source. If you have any integrity concerns you can review all of the code on your own. All of the media and Jellyfin are located in-home. Requests, Sign-Up&amp;rsquo;s, Links and Server Status are all located in Oracle Cloud.</description>
</item>
<item>
<title>How To Authenticate KASM via authentik</title>
<link>https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/</link>
<pubDate>Sat, 30 Sep 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/</guid>
<description>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&amp;rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.</description>
</item>
<item>
<title>How to Show More Options By Default in Windows 11</title>
<link>https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/</link>
<pubDate>Tue, 05 Sep 2023 23:45:25 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/</guid>
<description>To &amp;lsquo;Show more options&amp;rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &amp;#34;&amp;#34; /f and hit Enter.</description>
</item>
<item>
<title>Network Traffic Map</title>
<link>https://mafyuh.com/posts/network-traffic-map/</link>
<pubDate>Thu, 31 Aug 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/network-traffic-map/</guid>
<description>This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea</description>
</item>
<item>
<title>Software</title>
<link>https://mafyuh.com/posts/software/</link>
<pubDate>Sat, 26 Aug 2023 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/software/</guid>
<description>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&amp;rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI</description>
</item>
<item>
<title>Hardware</title>
<link>https://mafyuh.com/posts/hardware/</link>
<pubDate>Fri, 25 Aug 2023 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/hardware/</guid>
<description>Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD&amp;rsquo;s for storage 4x 4TB HDD&amp;rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything.</description>
</item>
</channel>
</rss>

417
jellyfin-help/index.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,372 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager" />
<meta property="og:description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error." />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-10-29T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-10-29T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager"/>
<meta name="twitter:description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"item": "http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"name": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"description": "authentik\u0026rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.\nError 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.",
"keywords": [
],
"articleBody": "authentiks docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.\nError 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.\n22:03:59.418 [http-nio-8080-exec-2] INFO o.a.g.a.o.t.TokenValidationService - Rejected invalid OpenID token: JWT processing failed. Additional details: [[17] Unable to process JOSE object (cause: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {\"alg\":\"RS256\",\"kid\":\"xxx\",\"typ\":\"JWT\"} due to an unexpected exception (java.io.IOException: Non 200 status code (403 Forbidden) returned from https://example.com/application/o/guacamole/jwks/?exclude_x5) while obtaining or using keys from JWKS endpoint at https://example.com/application/o/guacamole/jwks/?exclude_x5): JsonWebSignature{\"alg\":\"RS256\",\"kid\":\"xxx\",\"typ\":\"JWT\"} I assumed it had something to do with my Nginx Proxy Manager and the way I was proxying Guacamole, I do have WebSocket support and block common exploits enabled, their docs give a nginx config that I added under advanced.\nlocation /guacamole/ { proxy_pass http://HOSTNAME:8080; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; access_log off; } I messed around with settings individually for hours, reading their docs, tried oznus Guacamole image as well, this time with errors about the postgres version being incompatible. Figured it could be something with Cloudflare so turned down my HTTPS settings. Nada. Tried SAML, more errors. Finally found this github issue and thanks to Fma965 for finding the solution.\nGo to your Cloudflare Dashboard. Click on your domains summary and then on the left tab find Rules.\nUnder Page Rules - Create a New Page Rule, set the URL as your jwks URL from authentiks provider summary. Under pick a setting, choose Browser Integrity Check and make sure its unchecked. Save.\nThis finally got me authenticated into my Guacamole instance via authentik. I spent way too much time on this integration. Anyways, hope this guide helps someone who may be in my shoes.\n",
"wordCount" : "344",
"inLanguage": "en",
"datePublished": "2023-10-29T16:20:00Z",
"dateModified": "2023-10-29T16:20:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager
</h1>
<div class="post-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;344 words&nbsp;·&nbsp;Mafyuh
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><nav id="TableOfContents">
<ul>
<li><a href="#error-403-forbidden">Error 403 Forbidden</a></li>
</ul>
</nav>
</div>
</details>
</div>
<div class="post-content"><p>authentik&rsquo;s docs have a guide already for Guacamole. You can find that <a href="https://goauthentik.io/integrations/services/apache-guacamole/">here</a>. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.</p>
<h2 id="error-403-forbidden">Error 403 Forbidden<a hidden class="anchor" aria-hidden="true" href="#error-403-forbidden">#</a></h2>
<p>While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">22:03:59.418 <span class="o">[</span>http-nio-8080-exec-2<span class="o">]</span> INFO o.a.g.a.o.t.TokenValidationService - Rejected invalid OpenID token: JWT processing failed. Additional details: <span class="o">[[</span>17<span class="o">]</span> Unable to process JOSE object <span class="o">(</span>cause: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable verification key <span class="k">for</span> JWS w/ header <span class="o">{</span><span class="s2">&#34;alg&#34;</span>:<span class="s2">&#34;RS256&#34;</span>,<span class="s2">&#34;kid&#34;</span>:<span class="s2">&#34;xxx&#34;</span>,<span class="s2">&#34;typ&#34;</span>:<span class="s2">&#34;JWT&#34;</span><span class="o">}</span> due to an unexpected exception <span class="o">(</span>java.io.IOException: Non <span class="m">200</span> status code <span class="o">(</span><span class="m">403</span> Forbidden<span class="o">)</span> returned from https://example.com/application/o/guacamole/jwks/?exclude_x5<span class="o">)</span> <span class="k">while</span> obtaining or using keys from JWKS endpoint at https://example.com/application/o/guacamole/jwks/?exclude_x5<span class="o">)</span>: JsonWebSignature<span class="o">{</span><span class="s2">&#34;alg&#34;</span>:<span class="s2">&#34;RS256&#34;</span>,<span class="s2">&#34;kid&#34;</span>:<span class="s2">&#34;xxx&#34;</span>,<span class="s2">&#34;typ&#34;</span>:<span class="s2">&#34;JWT&#34;</span><span class="o">}</span>
</span></span></code></pre></div><p>I assumed it had something to do with my Nginx Proxy Manager and the way I was proxying Guacamole, I do have WebSocket support and block common exploits enabled, their <a href="https://guacamole.apache.org/doc/gug/reverse-proxy.html">docs</a> give a nginx config that I added under advanced.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="k">location</span> <span class="s">/guacamole/</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_pass</span> <span class="s">http://HOSTNAME:8080</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_buffering</span> <span class="no">off</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_http_version</span> <span class="mi">1</span><span class="s">.1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-For</span> <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">Upgrade</span> <span class="nv">$http_upgrade</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">Connection</span> <span class="nv">$http_connection</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">access_log</span> <span class="no">off</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>I messed around with settings individually for hours, reading their docs, tried <a href="https://hub.docker.com/r/oznu/guacamole/">oznu&rsquo;s</a> Guacamole image as well, this time with errors about the postgres version being incompatible. Figured it could be something with Cloudflare so turned down my HTTPS settings. Nada. Tried SAML, more errors. Finally found this <a href="https://github.com/goauthentik/authentik/issues/4082">github issue</a> and thanks to <a href="https://github.com/Fma965">Fma965</a> for finding the solution.</p>
<p>Go to your Cloudflare Dashboard. Click on your domains summary and then on the left tab find <strong>Rules</strong>.</p>
<p>Under <strong>Page Rules - Create a New Page Rule</strong>, set the URL as your jwks URL from authentik&rsquo;s provider summary. Under pick a setting, choose Browser Integrity Check and make sure its unchecked. Save.</p>
<p><img loading="lazy" src="/assets/img/pagerules.png" alt="Page Rules Images" />
</p>
<p>This finally got me authenticated into my Guacamole instance via authentik. I spent way too much time on this integration. Anyways, hope this guide helps someone who may be in my shoes.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/post/how-to-automate-jellyfin-issue-handling/">
<span class="title">« Prev</span>
<br>
<span>How To Automate Jellyfin Issue Handling</span>
</a>
<a class="next" href="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<span class="title">Next »</span>
<br>
<span>How to authenticate Zammad via SAML with Nginx Proxy Manager</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,391 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How To Authenticate KASM via authentik | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="How To Authenticate KASM via authentik" />
<meta property="og:description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration." />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-09-30T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-09-30T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How To Authenticate KASM via authentik"/>
<meta name="twitter:description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How To Authenticate KASM via authentik",
"item": "http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How To Authenticate KASM via authentik",
"name": "How To Authenticate KASM via authentik",
"description": "You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.\nThe official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik\u0026rsquo;s SAML docs can be found here.\nSetting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.",
"keywords": [
],
"articleBody": "You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.\nThe official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentiks SAML docs can be found here.\nSetting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration. Make sure you enable and make default after testing. You will probably find yourself switching between tabs alot, its best to start creating them both at the same time as you need links from each.\nDisplay Name: authentik Logo URL: https://auth.example.com/static/dist/assets/icons/icon.svg (or custom logo) Host Name: authentik NameID Attribute: emailAddress Entity ID: authentik Single Sign On Service/SAML 2.0 Endpoint: https://auth.example.com/application/saml/kasm/sso/binding/redirect/ X509 Certificate: Skip to authentik setup first, then come back here. In authentik admin, go to your newly created SAML provider, when you click the provider and are brought to its details, you should have the option to Download signing certificate. Download it and paste the files contents here. Setting up authentik In the authentik admin, under Applications, create a new SAML provider. Once you created a provider, create an Application and set its provider to the newly created kasm provider. For simplicity sake, the provider and application name is kasm. (kasms pictured)\nAuthorization flow: implicit ACS URL: https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab (Single Sign-On Service from kasm photo) Issuer: authentik (must be the same as Entity ID chosen in Kasm) Service Binding Provider: Post Audience: https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab ( Entity ID URL from Kasm photo) Under Advanced, choose a signing certificate, default is authentik. Go back to Kasm x509 Certificate. Make sure you save you changes. You should now be able to test SAML at the bottom of the page, once tested, I recommend opening a incognito tab and loading your KASM website.\nYou should now be able to authenticate yourself using SAML via authentik. I recommend going back to your admin session and adding your newly created user to the admin group. Also if it should only be you accessing this via authentik, I would change the kasm Application in authentik and bind it to your user.\nThank you to u/agent-squirrel and this subreddit post on helping me with the NameID Attribute part!\n",
"wordCount" : "393",
"inLanguage": "en",
"datePublished": "2023-09-30T16:20:00Z",
"dateModified": "2023-09-30T16:20:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How To Authenticate KASM via authentik
</h1>
<div class="post-meta"><span title='2023-09-30 16:20:00 +0000 UTC'>September 30, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;393 words&nbsp;·&nbsp;Mafyuh
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><nav id="TableOfContents">
<ul>
<li><a href="#setting-up-kasm">Setting up Kasm</a></li>
<li><a href="#setting-up-authentik">Setting up authentik</a></li>
</ul>
</nav>
</div>
</details>
</div>
<div class="post-content"><p>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.</p>
<p>The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found <a href="https://goauthentik.io/integrations/sources/saml/">here</a>.</p>
<h2 id="setting-up-kasm">Setting up Kasm<a hidden class="anchor" aria-hidden="true" href="#setting-up-kasm">#</a></h2>
<p>In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration. Make sure you enable and make default after testing. You will probably find yourself switching between tabs alot, its best to start creating them both at the same time as you need links from each.</p>
<p><img loading="lazy" src="/assets/img/kasm-saml.png" alt="KASM SAML Config" />
</p>
<ul>
<li>Display Name: authentik</li>
<li>Logo URL: <a href="https://auth.example.com/static/dist/assets/icons/icon.svg">https://auth.example.com/static/dist/assets/icons/icon.svg</a> (or custom logo)</li>
<li>Host Name: authentik</li>
<li>NameID Attribute: emailAddress</li>
<li>Entity ID: authentik</li>
<li>Single Sign On Service/SAML 2.0 Endpoint: <a href="https://auth.example.com/application/saml/kasm/sso/binding/redirect/">https://auth.example.com/application/saml/kasm/sso/binding/redirect/</a></li>
<li>X509 Certificate: Skip to authentik setup first, then come back here. In authentik admin, go to your newly created SAML provider, when you click the provider and are brought to its details, you should have the option to Download signing certificate. Download it and paste the files contents here.</li>
</ul>
<p><img loading="lazy" src="/assets/img/kasm-auth.png" alt="authentik Config" />
</p>
<h2 id="setting-up-authentik">Setting up authentik<a hidden class="anchor" aria-hidden="true" href="#setting-up-authentik">#</a></h2>
<p>In the authentik admin, under Applications, create a new SAML provider. Once you created a provider, create an Application and set its provider to the newly created kasm provider. For simplicity sake, the provider and application name is kasm. (kasms pictured)</p>
<p><img loading="lazy" src="/assets/img/kasm-auth2.png" alt="authentik Config" />
</p>
<ul>
<li>Authorization flow: implicit</li>
<li>ACS URL: <a href="https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab">https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab</a> (Single Sign-On Service from kasm photo)</li>
<li>Issuer: authentik (must be the same as Entity ID chosen in Kasm)</li>
<li>Service Binding Provider: Post</li>
<li>Audience: <a href="https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab">https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab</a> ( Entity ID URL from Kasm photo)</li>
<li>Under Advanced, choose a signing certificate, default is authentik.</li>
<li>Go back to Kasm x509 Certificate.</li>
</ul>
<p>Make sure you save you changes. You should now be able to test SAML at the bottom of the page, once tested, I recommend opening a incognito tab and loading your KASM website.</p>
<p><img loading="lazy" src="/assets/img/kasm-auth3.png" alt="authentik Config" />
</p>
<p>You should now be able to authenticate yourself using SAML via authentik. I recommend going back to your admin session and adding your newly created user to the admin group. Also if it should only be you accessing this via authentik, I would change the kasm Application in authentik and bind it to your user.</p>
<p>Thank you to u/<a href="https://www.reddit.com/user/agent-squirrel/">agent-squirrel</a> and this <a href="https://www.reddit.com/r/selfhosted/comments/vc30l7/kasm_authentik/">subreddit</a> post on helping me with the NameID Attribute part!</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<span class="title">« Prev</span>
<br>
<span>How to authenticate Zammad via SAML with Nginx Proxy Manager</span>
</a>
<a class="next" href="http://localhost:1313/post/software/">
<span class="title">Next »</span>
<br>
<span>Software</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,357 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How to authenticate Zammad via SAML with Nginx Proxy Manager | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="How to authenticate Zammad via SAML with Nginx Proxy Manager" />
<meta property="og:description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues." />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-10-29T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-10-29T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How to authenticate Zammad via SAML with Nginx Proxy Manager"/>
<meta name="twitter:description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"item": "http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"name": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"description": "If you are getting error messages like:\n422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:\nlocation / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.",
"keywords": [
],
"articleBody": "If you are getting error messages like:\n422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:\nlocation / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.\nHope this helps someone out. Fix was found on this rails github issue.\n(https://github.com/rails/rails/issues/22965)\n",
"wordCount" : "107",
"inLanguage": "en",
"datePublished": "2023-10-29T16:20:00Z",
"dateModified": "2023-10-29T16:20:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How to authenticate Zammad via SAML with Nginx Proxy Manager
</h1>
<div class="post-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;107 words&nbsp;·&nbsp;Mafyuh
</div>
</header>
<div class="post-content"><p>If you are getting error messages like:</p>
<pre tabindex="0"><code>422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken
</code></pre><p>Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="k">location</span> <span class="s">/</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_pass</span> <span class="s">http://zammad:8080</span><span class="p">;</span> <span class="c1"># Replace
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kn">proxy_set_header</span> <span class="s">Host</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-For</span> <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Proto</span> <span class="nv">$scheme</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Ssl</span> <span class="no">on</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Port</span> <span class="nv">$server_port</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Host</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.</p>
<p>Hope this helps someone out. Fix was found on this rails github issue.</p>
<p>(<a href="https://github.com/rails/rails/issues/22965">https://github.com/rails/rails/issues/22965</a>)</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<span class="title">« Prev</span>
<br>
<span>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager</span>
</a>
<a class="next" href="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/">
<span class="title">Next »</span>
<br>
<span>How To Authenticate KASM via authentik</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

325
post/index.html Normal file
View file

@ -0,0 +1,325 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Posts | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Posts - Mafyuh&#39;s Blog">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/post/index.xml">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="Posts" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://localhost:1313/post/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Posts"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
}
]
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a></div>
<h1>
Posts
<a href="/post/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Resize Ubuntu VM Disk in Proxmox
</h2>
</header>
<div class="entry-content">
<p>1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l </p>
</div>
<footer class="entry-footer"><span title='2024-02-06 02:58:07 +0000 UTC'>February 6, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;53 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to Resize Ubuntu VM Disk in Proxmox" href="http://localhost:1313/post/resize-ubuntu-vm-disk/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Proton Mail - SimpleLogin authentik Social Login Setup
</h2>
</header>
<div class="entry-content">
<p>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth....</p>
</div>
<footer class="entry-footer"><span title='2023-11-12 16:20:00 +0000 UTC'>November 12, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;227 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to Proton Mail - SimpleLogin authentik Social Login Setup" href="http://localhost:1313/post/proton-mail-authentik-social-login-setup/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How To Automate Jellyfin Issue Handling
</h2>
</header>
<div class="entry-content">
<p>I wanted a way to automate when users tell me a video on my Jellyfin server has an issue. After alot of trial and error, ChatGPT, Bard and I came up with this automation.
Requirements My only requirements when making this was that it was free and self-hostable. Not even any NPM extensions are required in AP. Actual Software requirements are:
Sonarr Radarr Overseerr/Jellyseerr Optional
SMTP server or ability to send SMTP messages (can also use discord) ActivePieces or any other automation platform that supports TS....</p>
</div>
<footer class="entry-footer"><span title='2023-11-11 16:20:00 +0000 UTC'>November 11, 2023</span>&nbsp;·&nbsp;19 min&nbsp;·&nbsp;3952 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to How To Automate Jellyfin Issue Handling" href="http://localhost:1313/post/how-to-automate-jellyfin-issue-handling/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager
</h2>
</header>
<div class="entry-content">
<p>authentiks docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error....</p>
</div>
<footer class="entry-footer"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;344 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager" href="http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to authenticate Zammad via SAML with Nginx Proxy Manager
</h2>
</header>
<div class="entry-content">
<p>If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues....</p>
</div>
<footer class="entry-footer"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;107 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to How to authenticate Zammad via SAML with Nginx Proxy Manager" href="http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How To Authenticate KASM via authentik
</h2>
</header>
<div class="entry-content">
<p>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentiks SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration....</p>
</div>
<footer class="entry-footer"><span title='2023-09-30 16:20:00 +0000 UTC'>September 30, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;393 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to How To Authenticate KASM via authentik" href="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Software
</h2>
</header>
<div class="entry-content">
<p>Just a straight forward list of pretty much everything that makes up my homelab. Or systems Ive ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI...</p>
</div>
<footer class="entry-footer"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Mafyuh</footer>
<a class="entry-link" aria-label="post link to Software" href="http://localhost:1313/post/software/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

74
post/index.xml Normal file
View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Posts on Mafyuh&#39;s Blog</title>
<link>http://localhost:1313/post/</link>
<description>Recent content in Posts on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Tue, 06 Feb 2024 02:58:07 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/post/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Resize Ubuntu VM Disk in Proxmox</title>
<link>http://localhost:1313/post/resize-ubuntu-vm-disk/</link>
<pubDate>Tue, 06 Feb 2024 02:58:07 +0000</pubDate>
<guid>http://localhost:1313/post/resize-ubuntu-vm-disk/</guid>
<description>1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l </description>
</item>
<item>
<title>Proton Mail - SimpleLogin authentik Social Login Setup</title>
<link>http://localhost:1313/post/proton-mail-authentik-social-login-setup/</link>
<pubDate>Sun, 12 Nov 2023 16:20:00 +0000</pubDate>
<guid>http://localhost:1313/post/proton-mail-authentik-social-login-setup/</guid>
<description>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.</description>
</item>
<item>
<title>How To Automate Jellyfin Issue Handling</title>
<link>http://localhost:1313/post/how-to-automate-jellyfin-issue-handling/</link>
<pubDate>Sat, 11 Nov 2023 16:20:00 +0000</pubDate>
<guid>http://localhost:1313/post/how-to-automate-jellyfin-issue-handling/</guid>
<description>I wanted a way to automate when users tell me a video on my Jellyfin server has an issue. After alot of trial and error, ChatGPT, Bard and I came up with this automation.
Requirements My only requirements when making this was that it was free and self-hostable. Not even any NPM extensions are required in AP. Actual Software requirements are:
Sonarr Radarr Overseerr/Jellyseerr Optional
SMTP server or ability to send SMTP messages (can also use discord) ActivePieces or any other automation platform that supports TS.</description>
</item>
<item>
<title>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager</title>
<link>http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>http://localhost:1313/post/how-to-authenticate-guacamole-authentik-nginxproxymanager/</guid>
<description>authentik&amp;rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.</description>
</item>
<item>
<title>How to authenticate Zammad via SAML with Nginx Proxy Manager</title>
<link>http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>http://localhost:1313/post/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</guid>
<description>If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.</description>
</item>
<item>
<title>How To Authenticate KASM via authentik</title>
<link>http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/</link>
<pubDate>Sat, 30 Sep 2023 16:20:00 +0000</pubDate>
<guid>http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/</guid>
<description>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&amp;rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.</description>
</item>
<item>
<title>Software</title>
<link>http://localhost:1313/post/software/</link>
<pubDate>Sat, 26 Aug 2023 00:13:40 +0000</pubDate>
<guid>http://localhost:1313/post/software/</guid>
<description>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&amp;rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI</description>
</item>
</channel>
</rss>

10
post/page/1/index.html Normal file
View file

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

View file

@ -0,0 +1,364 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Proton Mail - SimpleLogin authentik Social Login Setup | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/proton-mail-authentik-social-login-setup/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/proton-mail-authentik-social-login-setup/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="Proton Mail - SimpleLogin authentik Social Login Setup" />
<meta property="og:description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth." />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/proton-mail-authentik-social-login-setup/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-11-12T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-11-12T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Proton Mail - SimpleLogin authentik Social Login Setup"/>
<meta name="twitter:description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Proton Mail - SimpleLogin authentik Social Login Setup",
"item": "http://localhost:1313/post/proton-mail-authentik-social-login-setup/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Proton Mail - SimpleLogin authentik Social Login Setup",
"name": "Proton Mail - SimpleLogin authentik Social Login Setup",
"description": "This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.\nTo accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.\nThen go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.",
"keywords": [
],
"articleBody": "This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.\nTo accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.\nThen go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.example.com/source/oauth/callback/simplelogin/ (simplelogin being slug of authentik)\nIn authentik go to Directory - Federation and Social login - Create and create an OpenID Oauth source\nName: SimpleLogin Slug: simplelogin User matching mode: i chose link with identical email Consumer key: Paste your key Consumer secret: Paste your secret authorization url: https://app.simplelogin.io/oauth2/authorize access token url: https://app.simplelogin.io/oauth2/token profile url: https://app.simplelogin.io/oauth2/userinfo OIDC Well-known URL: https://app.simplelogin.io/.well-known/openid-configuration\nFor logo, it appears authenik inverts your image, I dont know if its dark mode or bug but regardless heres the regular and inverted image I used. Just right click and save image:\nNow go to Flows and Stages - Flows - choose your default authentication stage - click it then click stage bindings - Click edit stage to the right of your identification stage - expand Source settings and make sure you CTL + click your newly created SimpleLogin source.\nYou should be able to logout and try to to login with your Proton account!\n",
"wordCount" : "227",
"inLanguage": "en",
"datePublished": "2023-11-12T16:20:00Z",
"dateModified": "2023-11-12T16:20:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/proton-mail-authentik-social-login-setup/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Proton Mail - SimpleLogin authentik Social Login Setup
</h1>
<div class="post-meta"><span title='2023-11-12 16:20:00 +0000 UTC'>November 12, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;227 words&nbsp;·&nbsp;Mafyuh
</div>
</header>
<div class="post-content"><p>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.</p>
<p><img loading="lazy" src="/assets/img/proton-authentik.png" alt="Proton Authentik Login Screen" />
</p>
<p>To accomplish this, first create a <a href="https://simplelogin.io/">SimpleLogin</a> acct by logging in with Proton. Once thats done go to <a href="https://app.simplelogin.io/developer">https://app.simplelogin.io/developer</a> and create a website. Give it your authentik URL.</p>
<p>Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this <a href="https://auth.example.com/source/oauth/callback/simplelogin/">https://auth.example.com/source/oauth/callback/simplelogin/</a> (simplelogin being slug of authentik)</p>
<p>In authentik go to Directory - Federation and Social login - Create and create an OpenID Oauth source</p>
<p>Name: SimpleLogin
Slug: simplelogin
User matching mode: i chose link with identical email
Consumer key: Paste your key
Consumer secret: Paste your secret
authorization url: <a href="https://app.simplelogin.io/oauth2/authorize">https://app.simplelogin.io/oauth2/authorize</a>
access token url: <a href="https://app.simplelogin.io/oauth2/token">https://app.simplelogin.io/oauth2/token</a>
profile url: <a href="https://app.simplelogin.io/oauth2/userinfo">https://app.simplelogin.io/oauth2/userinfo</a>
OIDC Well-known URL: <a href="https://app.simplelogin.io/.well-known/openid-configuration">https://app.simplelogin.io/.well-known/openid-configuration</a></p>
<p>For logo, it appears authenik inverts your image, I dont know if its dark mode or bug but regardless here&rsquo;s the regular and inverted image I used. Just right click and save image:</p>
<p><img loading="lazy" src="/assets/img/proton-logo.png" alt="Proton Logo" />
<img loading="lazy" src="/assets/img/proton-inverted.png" alt="Proton Logo Inverted" />
</p>
<p>Now go to Flows and Stages - Flows - choose your default authentication stage - click it then click stage bindings - Click edit stage to the right of your identification stage - expand Source settings and make sure you CTL + click your newly created SimpleLogin source.</p>
<p>You should be able to logout and try to to login with your Proton account!</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/post/resize-ubuntu-vm-disk/">
<span class="title">« Prev</span>
<br>
<span>Resize Ubuntu VM Disk in Proxmox</span>
</a>
<a class="next" href="http://localhost:1313/post/how-to-automate-jellyfin-issue-handling/">
<span class="title">Next »</span>
<br>
<span>How To Automate Jellyfin Issue Handling</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,355 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Resize Ubuntu VM Disk in Proxmox | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/resize-ubuntu-vm-disk/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/resize-ubuntu-vm-disk/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="Resize Ubuntu VM Disk in Proxmox" />
<meta property="og:description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l " />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/resize-ubuntu-vm-disk/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2024-02-06T02:58:07+00:00" />
<meta property="article:modified_time" content="2024-02-06T02:58:07+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Resize Ubuntu VM Disk in Proxmox"/>
<meta name="twitter:description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l "/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Resize Ubuntu VM Disk in Proxmox",
"item": "http://localhost:1313/post/resize-ubuntu-vm-disk/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Resize Ubuntu VM Disk in Proxmox",
"name": "Resize Ubuntu VM Disk in Proxmox",
"description": "1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ",
"keywords": [
],
"articleBody": "1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ",
"wordCount" : "53",
"inLanguage": "en",
"datePublished": "2024-02-06T02:58:07Z",
"dateModified": "2024-02-06T02:58:07Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/resize-ubuntu-vm-disk/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Resize Ubuntu VM Disk in Proxmox
</h1>
<div class="post-meta"><span title='2024-02-06 02:58:07 +0000 UTC'>February 6, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;53 words&nbsp;·&nbsp;Mafyuh
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><nav id="TableOfContents"></nav>
</div>
</details>
</div>
<div class="post-content"><h1 id="1st-step-increaseresize-disk-from-gui-console">1st step: Increase/resize disk from GUI console<a hidden class="anchor" aria-hidden="true" href="#1st-step-increaseresize-disk-from-gui-console">#</a></h1>
<p><img loading="lazy" src="/assets/img/prox-resize.png" alt="Proxmox webui change" />
</p>
<h1 id="2nd-step-extend-physical-drive-partition-and-check-free-space-with">2nd step: Extend physical drive partition and check free space with:<a hidden class="anchor" aria-hidden="true" href="#2nd-step-extend-physical-drive-partition-and-check-free-space-with">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo growpart /dev/sda <span class="m">3</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvdisplay
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvresize /dev/sda3
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvdisplay
</span></span></code></pre></div><h1 id="3rd-step-extend-logical-volume">3rd step: Extend Logical volume<a hidden class="anchor" aria-hidden="true" href="#3rd-step-extend-logical-volume">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvdisplay
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvdisplay
</span></span></code></pre></div><h1 id="4th-step-resize-filesystem">4th step: Resize Filesystem<a hidden class="anchor" aria-hidden="true" href="#4th-step-resize-filesystem">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo fdisk -l
</span></span></code></pre></div>
</div>
<footer class="post-footer">
<ul class="post-tags">
</ul>
<nav class="paginav">
<a class="next" href="http://localhost:1313/post/proton-mail-authentik-social-login-setup/">
<span class="title">Next »</span>
<br>
<span>Proton Mail - SimpleLogin authentik Social Login Setup</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

419
post/software/index.html Normal file
View file

@ -0,0 +1,419 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Software | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="Import 2023-08-26 04:06, Import 2023-09-08 02:16">
<meta name="description" content="Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/post/software/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/post/software/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="Software" />
<meta property="og:description" content="Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/post/software/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2023-08-26T00:13:40+00:00" />
<meta property="article:modified_time" content="2023-08-26T00:13:40+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Software"/>
<meta name="twitter:description" content="Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/post/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Software",
"item": "http://localhost:1313/post/software/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Software",
"name": "Software",
"description": "Just a straight forward list of pretty much everything that makes up my homelab. Or systems I\u0026rsquo;ve ran in the past.\nOperating Systems\nUbuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers\nNginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI",
"keywords": [
"Import 2023-08-26 04:06", "Import 2023-09-08 02:16"
],
"articleBody": "Just a straight forward list of pretty much everything that makes up my homelab. Or systems Ive ran in the past.\nOperating Systems\nUbuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers\nNginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI\nGPT4ALL Stable Diffusion LocalAI Auto-GPT Comfy UI Arr Suite\nRadarr Sonarr Prowlarr Lidarr Jellyseer Tdarr Requesterr Real Debrid Client Wizarr ",
"wordCount" : "124",
"inLanguage": "en",
"datePublished": "2023-08-26T00:13:40Z",
"dateModified": "2023-08-26T00:13:40Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/post/software/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/post/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Software
</h1>
<div class="post-meta"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Mafyuh
</div>
</header>
<div class="post-content"><p>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&rsquo;ve ran in the past.</p>
<p>Operating Systems</p>
<ul>
<li>Ubuntu 23.04</li>
<li>Ubuntu 22.04 (primary on most systems)</li>
<li>CentOS/Fedora 38 (only when Ubuntu doesnt play nice)</li>
<li>Debian 11</li>
<li>Proxmox 8</li>
<li>Windows 10/11</li>
<li>TrueNAS Scale (virtualized)</li>
<li>CasaOS (zimaboard)</li>
<li>pfSense</li>
</ul>
<p>Applications/Containers</p>
<ul>
<li><a href="https://nginxproxymanager.com/">Nginx Proxy Manager</a></li>
<li><a href="https://www.nginx.com/">Nginx</a></li>
<li><a href="https://httpd.apache.org/">Apache2</a></li>
<li><a href="https://traefik.io/traefik/">Traefik</a></li>
<li><a href="https://goauthentik.io/">Authentik</a></li>
<li><a href="https://docs.portainer.io/start/install-ce">Portainer</a></li>
<li><a href="https://yacht.sh/">Yacht</a></li>
<li><a href="https://adguard.com/en/adguard-home/overview.html">AdGuardHome</a></li>
<li><a href="https://pi-hole.net/">Pihole</a></li>
<li><a href="https://wazuh.com/">Wazuh</a></li>
<li><a href="https://www.zabbix.com/">Zabbix</a></li>
<li><a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a></li>
<li><a href="https://ghost.org/">Ghost</a> (this blog)</li>
<li><a href="https://wordpress.com/">Wordpress</a></li>
<li><a href="https://github.com/emersion/hydroxide">Hydroxide</a> (proton mail bridge)</li>
<li><a href="https://calibre-ebook.com/">Calibre</a></li>
<li><a href="https://oss.oetiker.ch/smokeping/">Smokeping</a></li>
<li><a href="https://openspeedtest.com/">Openspeedtest</a></li>
<li><a href="https://hub.docker.com/r/grafana/grafana">Grafana</a></li>
<li><a href="https://hub.docker.com/r/prom/prometheus">Prometheus</a></li>
<li><a href="https://www.influxdata.com/">InfluxDB</a></li>
<li><a href="https://hub.docker.com/_/postgres">PostgresSQL</a></li>
<li><a href="https://hub.docker.com/_/mysql">MySQL</a></li>
<li><a href="https://github.com/containrrr/watchtower">Watchtower</a></li>
<li><a href="https://guacamole.apache.org/doc/gug/guacamole-docker.html">Apache Guacamole</a></li>
<li><a href="https://www.ansible.com/overview/how-ansible-works">Ansible</a></li>
<li><a href="https://www.terraform.io/">Terraform</a></li>
<li><a href="https://www.packer.io/">Packer</a></li>
<li><a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a></li>
<li><a href="https://kasmweb.com/">Kasm Workspaces</a></li>
<li><a href="https://jellyfin.org/">Jellyfin</a></li>
<li><a href="https://plex.tv">Plex</a></li>
<li><a href="https://www.twingate.com/">Twingate</a></li>
<li><a href="https://tailscale.com/">Tailscale</a></li>
<li><a href="https://github.com/juanfont/headscale">Headscale</a></li>
<li>Wireguard</li>
<li><a href="https://linkstack.org/">LinkStack</a></li>
<li><a href="https://n8n.io/">N8N</a></li>
<li><a href="https://gotify.net/">Gotify</a></li>
<li><a href="https://nextcloud.com/">Nextcloud</a></li>
<li><a href="https://github.com/immich-app/immich">Immich</a></li>
</ul>
<p>AI</p>
<ul>
<li>GPT4ALL</li>
<li>Stable Diffusion</li>
<li>LocalAI</li>
<li>Auto-GPT</li>
<li>Comfy UI</li>
</ul>
<p>Arr Suite</p>
<ul>
<li>Radarr</li>
<li>Sonarr</li>
<li>Prowlarr</li>
<li>Lidarr</li>
<li>Jellyseer</li>
<li>Tdarr</li>
<li>Requesterr</li>
<li>Real Debrid Client</li>
<li>Wizarr</li>
</ul>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="http://localhost:1313/tags/import-2023-08-26-0406/">Import 2023-08-26 04:06</a></li>
<li><a href="http://localhost:1313/tags/import-2023-09-08-0216/">Import 2023-09-08 02:16</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/post/how-to-authenticate-kasm-via-authentik/">
<span class="title">« Prev</span>
<br>
<span>How To Authenticate KASM via authentik</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

321
posts/archives/index.html Normal file
View file

@ -0,0 +1,321 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content=" - Mafyuh&#39;s Blog">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/posts/archives/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/assets/favicon/favicon.svg">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/posts/archives/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="" />
<meta property="og:description" content="" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/posts/archives/" /><meta property="article:section" content="posts" />
<meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content=""/>
<meta name="twitter:description" content=""/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "",
"item": "http://localhost:1313/posts/archives/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "",
"name": "",
"description": "",
"keywords": [
],
"articleBody": "",
"wordCount" : "0",
"inLanguage": "en",
"datePublished": "0001-01-01T00:00:00Z",
"dateModified": "0001-01-01T00:00:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/posts/archives/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/assets/favicon/favicon.svg"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
</h1>
<div class="post-meta">0 min&nbsp;·&nbsp;0 words&nbsp;·&nbsp;Mafyuh
</div>
</header>
<footer class="post-footer">
<ul class="post-tags">
</ul>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

397
posts/hardware/index.html Normal file
View file

@ -0,0 +1,397 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Hardware | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="Homelab">
<meta name="description" content="Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD&rsquo;s for storage 4x 4TB HDD&rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/hardware/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/hardware/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Hardware" />
<meta property="og:description" content="Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD&rsquo;s for storage 4x 4TB HDD&rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/hardware/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-08-25T00:13:40+00:00" />
<meta property="article:modified_time" content="2023-08-25T00:13:40+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Hardware"/>
<meta name="twitter:description" content="Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD&rsquo;s for storage 4x 4TB HDD&rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Hardware",
"item": "https://mafyuh.com/posts/hardware/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Hardware",
"name": "Hardware",
"description": "Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.\nProxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD\u0026rsquo;s for storage 4x 4TB HDD\u0026rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything.",
"keywords": [
"Homelab"
],
"articleBody": "Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.\nProxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSDs for storage 4x 4TB HDDs (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything. I just remote into every other machine. Yes, it is on top of my mini-fridge. Yes, my cable management is terrible.\nNetworking ISP: Xfinity. Coax currently getting 2.0Gbps download and 80mbps upload. (my monitoring in lab averages 2.21Gbps down and 76mbps up) Router: pfSense Box APs: TP-Link Deco XE75 PRO (x3) WIFI 6E Mesh Switch: TRENDnet 6-port 10G ",
"wordCount" : "150",
"inLanguage": "en",
"datePublished": "2023-08-25T00:13:40Z",
"dateModified": "2023-08-25T00:13:40Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/hardware/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Hardware
</h1>
<div class="post-meta"><span title='2023-08-25 00:13:40 +0000 UTC'>August 25, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;150 words&nbsp;·&nbsp;Matt
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><nav id="TableOfContents">
<ul>
<li><a href="#proxmox-server">Proxmox Server</a></li>
<li><a href="#gaming-pc">Gaming PC</a></li>
<li><a href="#networking">Networking</a></li>
</ul>
</nav>
</div>
</details>
</div>
<div class="post-content"><p>Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.</p>
<h2 id="proxmox-server">Proxmox Server<a hidden class="anchor" aria-hidden="true" href="#proxmox-server">#</a></h2>
<ul>
<li>CPU: Intel Core i7-9700K</li>
<li>GPU: Nvidia GeForce GTX 1660 6GB</li>
<li>RAM: 64GB DDR4 3000Mhz</li>
<li>NVME SSD&rsquo;s for storage</li>
<li>4x 4TB HDD&rsquo;s (passthrough to NAS)</li>
</ul>
<h2 id="gaming-pc">Gaming PC<a hidden class="anchor" aria-hidden="true" href="#gaming-pc">#</a></h2>
<p><img loading="lazy" src="/assets/img/gamingpc.jpg" alt="Gaming PC" />
</p>
<ul>
<li>CPU: Intel Core i7-13700K</li>
<li>GPU: Nvidia GeForce RTX 3080</li>
<li>RAM: 64GB DDR5 6000 Mhz</li>
<li>SSD: Samsung 980 Pro 2TB</li>
<li>Mobo: <a href="https://www.msi.com/Motherboard/MPG-Z790-EDGE-WIFI">MPG Z790 EDGE WIFI</a></li>
<li>Windows 11 Pro</li>
</ul>
<p>Main PC used for everything. I just remote into every other machine. Yes, it is on top of my mini-fridge. Yes, my cable management is terrible.</p>
<h2 id="networking">Networking<a hidden class="anchor" aria-hidden="true" href="#networking">#</a></h2>
<ul>
<li>ISP: Xfinity. Coax currently getting 2.0Gbps download and 80mbps upload. (my monitoring in lab averages 2.21Gbps down and 76mbps up)</li>
<li>Router: <a href="https://a.co/d/9JgFmt6">pfSense Box</a></li>
<li>AP&rsquo;s: TP-Link Deco XE75 PRO (x3) WIFI 6E Mesh</li>
<li>Switch: TRENDnet 6-port 10G</li>
</ul>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/homelab/">Homelab</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/software/">
<span class="title">« Prev</span>
<br>
<span>Software</span>
</a>
<a class="next" href="https://mafyuh.com/archives/">
<span class="title">Next »</span>
<br>
<span>Archives</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,373 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="authentik">
<meta name="description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager" />
<meta property="og:description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-10-29T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-10-29T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager"/>
<meta name="twitter:description" content="authentik&rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"item": "https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"name": "How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager",
"description": "authentik\u0026rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.\nError 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.",
"keywords": [
"authentik"
],
"articleBody": "authentiks docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.\nError 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.\n22:03:59.418 [http-nio-8080-exec-2] INFO o.a.g.a.o.t.TokenValidationService - Rejected invalid OpenID token: JWT processing failed. Additional details: [[17] Unable to process JOSE object (cause: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {\"alg\":\"RS256\",\"kid\":\"xxx\",\"typ\":\"JWT\"} due to an unexpected exception (java.io.IOException: Non 200 status code (403 Forbidden) returned from https://example.com/application/o/guacamole/jwks/?exclude_x5) while obtaining or using keys from JWKS endpoint at https://example.com/application/o/guacamole/jwks/?exclude_x5): JsonWebSignature{\"alg\":\"RS256\",\"kid\":\"xxx\",\"typ\":\"JWT\"} I assumed it had something to do with my Nginx Proxy Manager and the way I was proxying Guacamole, I do have WebSocket support and block common exploits enabled, their docs give a nginx config that I added under advanced.\nlocation /guacamole/ { proxy_pass http://HOSTNAME:8080; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; access_log off; } I messed around with settings individually for hours, reading their docs, tried oznus Guacamole image as well, this time with errors about the postgres version being incompatible. Figured it could be something with Cloudflare so turned down my HTTPS settings. Nada. Tried SAML, more errors. Finally found this github issue and thanks to Fma965 for finding the solution.\nGo to your Cloudflare Dashboard. Click on your domains summary and then on the left tab find Rules.\nUnder Page Rules - Create a New Page Rule, set the URL as your jwks URL from authentiks provider summary. Under pick a setting, choose Browser Integrity Check and make sure its unchecked. Save.\nThis finally got me authenticated into my Guacamole instance via authentik. I spent way too much time on this integration. Anyways, hope this guide helps someone who may be in my shoes.\n",
"wordCount" : "344",
"inLanguage": "en",
"datePublished": "2023-10-29T16:20:00Z",
"dateModified": "2023-10-29T16:20:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager
</h1>
<div class="post-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;344 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>authentik&rsquo;s docs have a guide already for Guacamole. You can find that <a href="https://goauthentik.io/integrations/services/apache-guacamole/">here</a>. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.</p>
<h2 id="error-403-forbidden">Error 403 Forbidden<a hidden class="anchor" aria-hidden="true" href="#error-403-forbidden">#</a></h2>
<p>While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">22:03:59.418 <span class="o">[</span>http-nio-8080-exec-2<span class="o">]</span> INFO o.a.g.a.o.t.TokenValidationService - Rejected invalid OpenID token: JWT processing failed. Additional details: <span class="o">[[</span>17<span class="o">]</span> Unable to process JOSE object <span class="o">(</span>cause: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable verification key <span class="k">for</span> JWS w/ header <span class="o">{</span><span class="s2">&#34;alg&#34;</span>:<span class="s2">&#34;RS256&#34;</span>,<span class="s2">&#34;kid&#34;</span>:<span class="s2">&#34;xxx&#34;</span>,<span class="s2">&#34;typ&#34;</span>:<span class="s2">&#34;JWT&#34;</span><span class="o">}</span> due to an unexpected exception <span class="o">(</span>java.io.IOException: Non <span class="m">200</span> status code <span class="o">(</span><span class="m">403</span> Forbidden<span class="o">)</span> returned from https://example.com/application/o/guacamole/jwks/?exclude_x5<span class="o">)</span> <span class="k">while</span> obtaining or using keys from JWKS endpoint at https://example.com/application/o/guacamole/jwks/?exclude_x5<span class="o">)</span>: JsonWebSignature<span class="o">{</span><span class="s2">&#34;alg&#34;</span>:<span class="s2">&#34;RS256&#34;</span>,<span class="s2">&#34;kid&#34;</span>:<span class="s2">&#34;xxx&#34;</span>,<span class="s2">&#34;typ&#34;</span>:<span class="s2">&#34;JWT&#34;</span><span class="o">}</span>
</span></span></code></pre></div><p>I assumed it had something to do with my Nginx Proxy Manager and the way I was proxying Guacamole, I do have WebSocket support and block common exploits enabled, their <a href="https://guacamole.apache.org/doc/gug/reverse-proxy.html">docs</a> give a nginx config that I added under advanced.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="k">location</span> <span class="s">/guacamole/</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_pass</span> <span class="s">http://HOSTNAME:8080</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_buffering</span> <span class="no">off</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_http_version</span> <span class="mi">1</span><span class="s">.1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-For</span> <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">Upgrade</span> <span class="nv">$http_upgrade</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">Connection</span> <span class="nv">$http_connection</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">access_log</span> <span class="no">off</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>I messed around with settings individually for hours, reading their docs, tried <a href="https://hub.docker.com/r/oznu/guacamole/">oznu&rsquo;s</a> Guacamole image as well, this time with errors about the postgres version being incompatible. Figured it could be something with Cloudflare so turned down my HTTPS settings. Nada. Tried SAML, more errors. Finally found this <a href="https://github.com/goauthentik/authentik/issues/4082">github issue</a> and thanks to <a href="https://github.com/Fma965">Fma965</a> for finding the solution.</p>
<p>Go to your Cloudflare Dashboard. Click on your domains summary and then on the left tab find <strong>Rules</strong>.</p>
<p>Under <strong>Page Rules - Create a New Page Rule</strong>, set the URL as your jwks URL from authentik&rsquo;s provider summary. Under pick a setting, choose Browser Integrity Check and make sure its unchecked. Save.</p>
<p><img loading="lazy" src="/assets/img/pagerules.png" alt="Page Rules Images" />
</p>
<p>This finally got me authenticated into my Guacamole instance via authentik. I spent way too much time on this integration. Anyways, hope this guide helps someone who may be in my shoes.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/authentik/">Authentik</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/">
<span class="title">« Prev</span>
<br>
<span>How To Automate Jellyfin Issue Handling</span>
</a>
<a class="next" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<span class="title">Next »</span>
<br>
<span>How to authenticate Zammad via SAML with Nginx Proxy Manager</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,406 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How To Authenticate KASM via authentik | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="authentik">
<meta name="description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="How To Authenticate KASM via authentik" />
<meta property="og:description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-09-30T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-09-30T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How To Authenticate KASM via authentik"/>
<meta name="twitter:description" content="You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How To Authenticate KASM via authentik",
"item": "https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How To Authenticate KASM via authentik",
"name": "How To Authenticate KASM via authentik",
"description": "You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.\nThe official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik\u0026rsquo;s SAML docs can be found here.\nSetting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.",
"keywords": [
"authentik"
],
"articleBody": "You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.\nThe official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentiks SAML docs can be found here.\nSetting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration. Make sure you enable and make default after testing. You will probably find yourself switching between tabs alot, its best to start creating them both at the same time as you need links from each.\nDisplay Name: authentik Logo URL: https://auth.example.com/static/dist/assets/icons/icon.svg (or custom logo) Host Name: authentik NameID Attribute: emailAddress Entity ID: authentik Single Sign On Service/SAML 2.0 Endpoint: https://auth.example.com/application/saml/kasm/sso/binding/redirect/ X509 Certificate: Skip to authentik setup first, then come back here. In authentik admin, go to your newly created SAML provider, when you click the provider and are brought to its details, you should have the option to Download signing certificate. Download it and paste the files contents here. Setting up authentik In the authentik admin, under Applications, create a new SAML provider. Once you created a provider, create an Application and set its provider to the newly created kasm provider. For simplicity sake, the provider and application name is kasm. (kasms pictured)\nAuthorization flow: implicit ACS URL: https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab (Single Sign-On Service from kasm photo) Issuer: authentik (must be the same as Entity ID chosen in Kasm) Service Binding Provider: Post Audience: https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab ( Entity ID URL from Kasm photo) Under Advanced, choose a signing certificate, default is authentik. Go back to Kasm x509 Certificate. Make sure you save you changes. You should now be able to test SAML at the bottom of the page, once tested, I recommend opening a incognito tab and loading your KASM website.\nYou should now be able to authenticate yourself using SAML via authentik. I recommend going back to your admin session and adding your newly created user to the admin group. Also if it should only be you accessing this via authentik, I would change the kasm Application in authentik and bind it to your user.\nThank you to u/agent-squirrel and this subreddit post on helping me with the NameID Attribute part!\n",
"wordCount" : "393",
"inLanguage": "en",
"datePublished": "2023-09-30T16:20:00Z",
"dateModified": "2023-09-30T16:20:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How To Authenticate KASM via authentik
</h1>
<div class="post-meta"><span title='2023-09-30 16:20:00 +0000 UTC'>September 30, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;393 words&nbsp;·&nbsp;Matt
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><nav id="TableOfContents">
<ul>
<li><a href="#setting-up-kasm">Setting up Kasm</a></li>
<li><a href="#setting-up-authentik">Setting up authentik</a></li>
</ul>
</nav>
</div>
</details>
</div>
<div class="post-content"><p>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.</p>
<p>The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&rsquo;s SAML docs can be found <a href="https://goauthentik.io/integrations/sources/saml/">here</a>.</p>
<h2 id="setting-up-kasm">Setting up Kasm<a hidden class="anchor" aria-hidden="true" href="#setting-up-kasm">#</a></h2>
<p>In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration. Make sure you enable and make default after testing. You will probably find yourself switching between tabs alot, its best to start creating them both at the same time as you need links from each.</p>
<p><img loading="lazy" src="/assets/img/kasm-saml.png" alt="KASM SAML Config" />
</p>
<ul>
<li>Display Name: authentik</li>
<li>Logo URL: <a href="https://auth.example.com/static/dist/assets/icons/icon.svg">https://auth.example.com/static/dist/assets/icons/icon.svg</a> (or custom logo)</li>
<li>Host Name: authentik</li>
<li>NameID Attribute: emailAddress</li>
<li>Entity ID: authentik</li>
<li>Single Sign On Service/SAML 2.0 Endpoint: <a href="https://auth.example.com/application/saml/kasm/sso/binding/redirect/">https://auth.example.com/application/saml/kasm/sso/binding/redirect/</a></li>
<li>X509 Certificate: Skip to authentik setup first, then come back here. In authentik admin, go to your newly created SAML provider, when you click the provider and are brought to its details, you should have the option to Download signing certificate. Download it and paste the files contents here.</li>
</ul>
<p><img loading="lazy" src="/assets/img/kasm-auth.png" alt="authentik Config" />
</p>
<h2 id="setting-up-authentik">Setting up authentik<a hidden class="anchor" aria-hidden="true" href="#setting-up-authentik">#</a></h2>
<p>In the authentik admin, under Applications, create a new SAML provider. Once you created a provider, create an Application and set its provider to the newly created kasm provider. For simplicity sake, the provider and application name is kasm. (kasms pictured)</p>
<p><img loading="lazy" src="/assets/img/kasm-auth2.png" alt="authentik Config" />
</p>
<ul>
<li>Authorization flow: implicit</li>
<li>ACS URL: <a href="https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab">https://kasm.example.com/api/acs/?id=e977b6cf72c7424328275db5f48fd15ab</a> (Single Sign-On Service from kasm photo)</li>
<li>Issuer: authentik (must be the same as Entity ID chosen in Kasm)</li>
<li>Service Binding Provider: Post</li>
<li>Audience: <a href="https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab">https://kasm.example.com/api/metadata/?id=e977b6cf72c7424328275db5f48fd15ab</a> ( Entity ID URL from Kasm photo)</li>
<li>Under Advanced, choose a signing certificate, default is authentik.</li>
<li>Go back to Kasm x509 Certificate.</li>
</ul>
<p>Make sure you save you changes. You should now be able to test SAML at the bottom of the page, once tested, I recommend opening a incognito tab and loading your KASM website.</p>
<p><img loading="lazy" src="/assets/img/kasm-auth3.png" alt="authentik Config" />
</p>
<p>You should now be able to authenticate yourself using SAML via authentik. I recommend going back to your admin session and adding your newly created user to the admin group. Also if it should only be you accessing this via authentik, I would change the kasm Application in authentik and bind it to your user.</p>
<p>Thank you to u/<a href="https://www.reddit.com/user/agent-squirrel/">agent-squirrel</a> and this <a href="https://www.reddit.com/r/selfhosted/comments/vc30l7/kasm_authentik/">subreddit</a> post on helping me with the NameID Attribute part!</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/authentik/">Authentik</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<span class="title">« Prev</span>
<br>
<span>How to authenticate Zammad via SAML with Nginx Proxy Manager</span>
</a>
<a class="next" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/">
<span class="title">Next »</span>
<br>
<span>How to Show More Options By Default in Windows 11</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,371 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How to authenticate Zammad via SAML with Nginx Proxy Manager | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="authentik">
<meta name="description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="How to authenticate Zammad via SAML with Nginx Proxy Manager" />
<meta property="og:description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-10-29T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-10-29T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How to authenticate Zammad via SAML with Nginx Proxy Manager"/>
<meta name="twitter:description" content="If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"item": "https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"name": "How to authenticate Zammad via SAML with Nginx Proxy Manager",
"description": "If you are getting error messages like:\n422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:\nlocation / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.",
"keywords": [
"authentik"
],
"articleBody": "If you are getting error messages like:\n422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:\nlocation / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.\nHope this helps someone out. Fix was found on this rails github issue.\n(https://github.com/rails/rails/issues/22965)\n",
"wordCount" : "107",
"inLanguage": "en",
"datePublished": "2023-10-29T16:20:00Z",
"dateModified": "2023-10-29T16:20:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How to authenticate Zammad via SAML with Nginx Proxy Manager
</h1>
<div class="post-meta"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;107 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>If you are getting error messages like:</p>
<pre tabindex="0"><code>422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken
</code></pre><p>Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="k">location</span> <span class="s">/</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_pass</span> <span class="s">http://zammad:8080</span><span class="p">;</span> <span class="c1"># Replace
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kn">proxy_set_header</span> <span class="s">Host</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-For</span> <span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Proto</span> <span class="nv">$scheme</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Ssl</span> <span class="no">on</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Port</span> <span class="nv">$server_port</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_set_header</span> <span class="s">X-Forwarded-Host</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.</p>
<p>Hope this helps someone out. Fix was found on this rails github issue.</p>
<p>(<a href="https://github.com/rails/rails/issues/22965">https://github.com/rails/rails/issues/22965</a>)</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/authentik/">Authentik</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/">
<span class="title">« Prev</span>
<br>
<span>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager</span>
</a>
<a class="next" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/">
<span class="title">Next »</span>
<br>
<span>How To Authenticate KASM via authentik</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,357 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>How to Show More Options By Default in Windows 11 | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="Windows">
<meta name="description" content="To &lsquo;Show more options&rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &#34;&#34; /f and hit Enter.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="How to Show More Options By Default in Windows 11" />
<meta property="og:description" content="To &lsquo;Show more options&rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &#34;&#34; /f and hit Enter." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-09-05T23:45:25+00:00" />
<meta property="article:modified_time" content="2023-09-05T23:45:25+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="How to Show More Options By Default in Windows 11"/>
<meta name="twitter:description" content="To &lsquo;Show more options&rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &#34;&#34; /f and hit Enter."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "How to Show More Options By Default in Windows 11",
"item": "https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Show More Options By Default in Windows 11",
"name": "How to Show More Options By Default in Windows 11",
"description": "To \u0026lsquo;Show more options\u0026rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:\nreg add HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32 /ve /d \u0026#34;\u0026#34; /f and hit Enter.",
"keywords": [
"Windows"
],
"articleBody": "To Show more options by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:\nreg add HKCU\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32 /ve /d \"\" /f and hit Enter.\n",
"wordCount" : "31",
"inLanguage": "en",
"datePublished": "2023-09-05T23:45:25Z",
"dateModified": "2023-09-05T23:45:25Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
How to Show More Options By Default in Windows 11
</h1>
<div class="post-meta"><span title='2023-09-05 23:45:25 +0000 UTC'>September 5, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;31 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>To &lsquo;Show more options&rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:</p>
<pre tabindex="0"><code>reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &#34;&#34; /f
</code></pre><p>and hit Enter.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/windows/">Windows</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/">
<span class="title">« Prev</span>
<br>
<span>How To Authenticate KASM via authentik</span>
</a>
<a class="next" href="https://mafyuh.com/posts/network-traffic-map/">
<span class="title">Next »</span>
<br>
<span>Network Traffic Map</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

376
posts/index.html Normal file
View file

@ -0,0 +1,376 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Posts | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Posts - Mafyuh&#39;s Blog">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="https://mafyuh.com/posts/index.xml">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Posts" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mafyuh.com/posts/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Posts"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
}
]
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a></div>
<h1>
Posts
<a href="/posts/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to create a Solana Token (SPL) from CLI with metadata
</h2>
</header>
<div class="entry-content">
<p>I wanted to create an SPL token and after looking online I couldnt find an updated guide. I mainly just found Keyglowmax (SCAM). So I thought I would learn and share. There are much easier ways to create these tokens but they cost $ and spending more $ than needed is no fun. They also have you connect your wallet which is enough of a worry. This guide costs as little SOL as possible as everything is transacted directly on-chain....</p>
</div>
<footer class="entry-footer"><span title='2024-03-15 00:13:40 +0000 UTC'>March 15, 2024</span>&nbsp;·&nbsp;9 min&nbsp;·&nbsp;1713 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How to create a Solana Token (SPL) from CLI with metadata" href="https://mafyuh.com/posts/spl-token-cli/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Configuring Arr Stack
</h2>
</header>
<div class="entry-content">
<p>This is blog post 2/2 on setting up a Arr stack using docker. This post will touch on configuring these services and what I have learned when using these services. I will be referring to TRaSH-Guides often in this post. Its like the bible of the Arrs so I would look there for more options, especially if your setup differs from mine.
Prerequisites Any Usenet Server Subscription (preferred) Any Usenet Indexer Subscription (preferred) Real-Debrid Subscription (if you like torrents being fast) VPN Subscription (Bare minimum needed to download torrents) Configuration Prowlarr We will first start with Prowlarr and Sabnzbd to get all of this out of the way, and its the part where youre gonna spend some $...</p>
</div>
<footer class="entry-footer"><span title='2024-02-25 00:13:40 +0000 UTC'>February 25, 2024</span>&nbsp;·&nbsp;13 min&nbsp;·&nbsp;2716 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Configuring Arr Stack" href="https://mafyuh.com/posts/arr-stack-config-guide/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Docker Compose Arr Stack Guide
</h2>
</header>
<div class="entry-content">
<p>This guide is for someone who is looking to setup an Arr Stack for media organization and downloading. This guide requires no remote path mappings, follows Trash-Guides recommendations and every command needed is copy-pasteable. The VMs in this guide are hosted on Proxmox 8.1.4, but you can use any Ubuntu environment (WSL-2, VirtualBox, etc.)
Arr VM Specs:
2 core host 8GB RAM 100GB Storage Downloader VM Specs:
2 core host 4GB RAM 250GB Storage (can download up to this limit at a time, be careful when mass downloading or give plenty of space) Prerequisites Ubuntu 22....</p>
</div>
<footer class="entry-footer"><span title='2024-02-23 00:13:40 +0000 UTC'>February 23, 2024</span>&nbsp;·&nbsp;7 min&nbsp;·&nbsp;1305 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Docker Compose Arr Stack Guide" href="https://mafyuh.com/posts/docker-arr-stack-guide/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Selfhosted Game Servers
</h2>
</header>
<div class="entry-content">
<p>Something I only got into recently is hosting video game servers for games that support servers. Maybe its just something about having another server, cause these are totally not needed. But they are pretty easy to setup thanks to the open-source community.
Sons of the Forest I wanted to play sons one day and when I looked into multiplayer I seen there were options for servers. This sparked me Googling and finding this repo....</p>
</div>
<footer class="entry-footer"><span title='2024-02-22 00:13:40 +0000 UTC'>February 22, 2024</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;478 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Selfhosted Game Servers" href="https://mafyuh.com/posts/selfhosted-game-servers/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Resize Ubuntu VM Disk in Proxmox
</h2>
</header>
<div class="entry-content">
<p>1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l </p>
</div>
<footer class="entry-footer"><span title='2024-02-06 02:58:07 +0000 UTC'>February 6, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;53 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Resize Ubuntu VM Disk in Proxmox" href="https://mafyuh.com/posts/resize-ubuntu-vm-disk/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Proton Mail - SimpleLogin authentik Social Login Setup
</h2>
</header>
<div class="entry-content">
<p>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth....</p>
</div>
<footer class="entry-footer"><span title='2023-11-12 16:20:00 +0000 UTC'>November 12, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;227 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Proton Mail - SimpleLogin authentik Social Login Setup" href="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How To Automate Jellyfin Issue Handling
</h2>
</header>
<div class="entry-content">
<p>I wanted a way to automate when users tell me a video on my Jellyfin server has an issue. After alot of trial and error, ChatGPT, Bard and I came up with this automation.
Requirements My only requirements when making this was that it was free and self-hostable. Not even any NPM extensions are required in AP. Actual Software requirements are:
Sonarr Radarr Overseerr/Jellyseerr Optional
SMTP server or ability to send SMTP messages (can also use discord) ActivePieces or any other automation platform that supports TS....</p>
</div>
<footer class="entry-footer"><span title='2023-11-11 16:20:00 +0000 UTC'>November 11, 2023</span>&nbsp;·&nbsp;19 min&nbsp;·&nbsp;3952 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How To Automate Jellyfin Issue Handling" href="https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager
</h2>
</header>
<div class="entry-content">
<p>authentiks docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error....</p>
</div>
<footer class="entry-footer"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;344 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager" href="https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to authenticate Zammad via SAML with Nginx Proxy Manager
</h2>
</header>
<div class="entry-content">
<p>If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues....</p>
</div>
<footer class="entry-footer"><span title='2023-10-29 16:20:00 +0000 UTC'>October 29, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;107 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How to authenticate Zammad via SAML with Nginx Proxy Manager" href="https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How To Authenticate KASM via authentik
</h2>
</header>
<div class="entry-content">
<p>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentiks SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration....</p>
</div>
<footer class="entry-footer"><span title='2023-09-30 16:20:00 +0000 UTC'>September 30, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;393 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How To Authenticate KASM via authentik" href="https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/"></a>
</article>
<footer class="page-footer">
<nav class="pagination">
<a class="next" href="https://mafyuh.com/posts/page/2/">Next&nbsp;&nbsp;»
</a>
</nav>
</footer>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

131
posts/index.xml Normal file
View file

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Posts on Mafyuh&#39;s Blog</title>
<link>https://mafyuh.com/posts/</link>
<description>Recent content in Posts on Mafyuh&#39;s Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Fri, 15 Mar 2024 00:13:40 +0000</lastBuildDate>
<atom:link href="https://mafyuh.com/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>How to create a Solana Token (SPL) from CLI with metadata</title>
<link>https://mafyuh.com/posts/spl-token-cli/</link>
<pubDate>Fri, 15 Mar 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/spl-token-cli/</guid>
<description>I wanted to create an SPL token and after looking online I couldn&amp;rsquo;t find an updated guide. I mainly just found Keyglowmax (SCAM). So I thought I would learn and share. There are much easier ways to create these tokens but they cost $ and spending more $ than needed is no fun. They also have you connect your wallet which is enough of a worry. This guide costs as little SOL as possible as everything is transacted directly on-chain.</description>
</item>
<item>
<title>Configuring Arr Stack</title>
<link>https://mafyuh.com/posts/arr-stack-config-guide/</link>
<pubDate>Sun, 25 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/arr-stack-config-guide/</guid>
<description>This is blog post 2/2 on setting up a Arr stack using docker. This post will touch on configuring these services and what I have learned when using these services. I will be referring to TRaSH-Guides often in this post. It&amp;rsquo;s like the bible of the Arr&amp;rsquo;s so I would look there for more options, especially if your setup differs from mine.
Prerequisites Any Usenet Server Subscription (preferred) Any Usenet Indexer Subscription (preferred) Real-Debrid Subscription (if you like torrents being fast) VPN Subscription (Bare minimum needed to download torrents) Configuration Prowlarr We will first start with Prowlarr and Sabnzbd to get all of this out of the way, and it&amp;rsquo;s the part where you&amp;rsquo;re gonna spend some $</description>
</item>
<item>
<title>Docker Compose Arr Stack Guide</title>
<link>https://mafyuh.com/posts/docker-arr-stack-guide/</link>
<pubDate>Fri, 23 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/docker-arr-stack-guide/</guid>
<description>This guide is for someone who is looking to setup an Arr Stack for media organization and downloading. This guide requires no remote path mappings, follows Trash-Guides recommendations and every command needed is copy-pasteable. The VM&amp;rsquo;s in this guide are hosted on Proxmox 8.1.4, but you can use any Ubuntu environment (WSL-2, VirtualBox, etc.)
Arr VM Specs:
2 core host 8GB RAM 100GB Storage Downloader VM Specs:
2 core host 4GB RAM 250GB Storage (can download up to this limit at a time, be careful when mass downloading or give plenty of space) Prerequisites Ubuntu 22.</description>
</item>
<item>
<title>Selfhosted Game Servers</title>
<link>https://mafyuh.com/posts/selfhosted-game-servers/</link>
<pubDate>Thu, 22 Feb 2024 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/selfhosted-game-servers/</guid>
<description>Something I only got into recently is hosting video game servers for games that support servers. Maybe it&amp;rsquo;s just something about having another server, cause these are totally not needed. But they are pretty easy to setup thanks to the open-source community.
Sons of the Forest I wanted to play sons one day and when I looked into multiplayer I seen there were options for servers. This sparked me Googling and finding this repo.</description>
</item>
<item>
<title>Resize Ubuntu VM Disk in Proxmox</title>
<link>https://mafyuh.com/posts/resize-ubuntu-vm-disk/</link>
<pubDate>Tue, 06 Feb 2024 02:58:07 +0000</pubDate>
<guid>https://mafyuh.com/posts/resize-ubuntu-vm-disk/</guid>
<description>1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l </description>
</item>
<item>
<title>Proton Mail - SimpleLogin authentik Social Login Setup</title>
<link>https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/</link>
<pubDate>Sun, 12 Nov 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/</guid>
<description>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.</description>
</item>
<item>
<title>How To Automate Jellyfin Issue Handling</title>
<link>https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/</link>
<pubDate>Sat, 11 Nov 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/</guid>
<description>I wanted a way to automate when users tell me a video on my Jellyfin server has an issue. After alot of trial and error, ChatGPT, Bard and I came up with this automation.
Requirements My only requirements when making this was that it was free and self-hostable. Not even any NPM extensions are required in AP. Actual Software requirements are:
Sonarr Radarr Overseerr/Jellyseerr Optional
SMTP server or ability to send SMTP messages (can also use discord) ActivePieces or any other automation platform that supports TS.</description>
</item>
<item>
<title>How to authenticate Guacamole via authentik with Cloudflare and Nginx Proxy Manager</title>
<link>https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-guacamole-authentik-nginxproxymanager/</guid>
<description>authentik&amp;rsquo;s docs have a guide already for Guacamole. You can find that here. Follow all the instructions there, (especially the part where you create a user in Guacamole with the USERNAME of your email. not just filling in the email), but if you are using Cloudflare as our DNS you may run into problems. Such as infinite redirect loop.
Error 403 Forbidden While it was looping, I checked my Guacamole docker container logs in Portainer, and found the 403 Forbidden error.</description>
</item>
<item>
<title>How to authenticate Zammad via SAML with Nginx Proxy Manager</title>
<link>https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</link>
<pubDate>Sun, 29 Oct 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-zammad-via-saml-with-nginx-proxy-manager/</guid>
<description>If you are getting error messages like:
422: the change you wanted was rejected. message from saml: actioncontroller::invalidauthenticitytoken Just make sure you set these in your Nginx Proxy Manager hosts Advanced field:
location / { proxy_pass http://zammad:8080; # Replace proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; } I spent way too long trying to figure this out, reading through Github issues, breaking my SAML provider and Zammad configs, starting over, when the whole time it was just good old nginx header issues.</description>
</item>
<item>
<title>How To Authenticate KASM via authentik</title>
<link>https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/</link>
<pubDate>Sat, 30 Sep 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-authenticate-kasm-via-authentik/</guid>
<description>You could do this with OpenID as well but this method is using SAML. This guide assumes you already have running instances of Kasm Workspaces and authentik.
The official authentik docs dont have a Kasm Integration listed at the time. So I thought I would help out anyone who is trying to integrate these services via SAML. authentik&amp;rsquo;s SAML docs can be found here.
Setting up Kasm In the Kasm Workspaces admin, click Access Management - Authentication - SAML and create a new configuration.</description>
</item>
<item>
<title>How to Show More Options By Default in Windows 11</title>
<link>https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/</link>
<pubDate>Tue, 05 Sep 2023 23:45:25 +0000</pubDate>
<guid>https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/</guid>
<description>To &amp;lsquo;Show more options&amp;rsquo; by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &amp;#34;&amp;#34; /f and hit Enter.</description>
</item>
<item>
<title>Network Traffic Map</title>
<link>https://mafyuh.com/posts/network-traffic-map/</link>
<pubDate>Thu, 31 Aug 2023 16:20:00 +0000</pubDate>
<guid>https://mafyuh.com/posts/network-traffic-map/</guid>
<description>This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea</description>
</item>
<item>
<title>Software</title>
<link>https://mafyuh.com/posts/software/</link>
<pubDate>Sat, 26 Aug 2023 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/software/</guid>
<description>Just a straight forward list of pretty much everything that makes up my homelab. Or systems I&amp;rsquo;ve ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI</description>
</item>
<item>
<title>Hardware</title>
<link>https://mafyuh.com/posts/hardware/</link>
<pubDate>Fri, 25 Aug 2023 00:13:40 +0000</pubDate>
<guid>https://mafyuh.com/posts/hardware/</guid>
<description>Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSD&amp;rsquo;s for storage 4x 4TB HDD&amp;rsquo;s (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything.</description>
</item>
</channel>
</rss>

View file

@ -0,0 +1,357 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Network Traffic Map | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="Homelab">
<meta name="description" content="This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/network-traffic-map/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/network-traffic-map/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Network Traffic Map" />
<meta property="og:description" content="This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/network-traffic-map/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-08-31T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-08-31T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Network Traffic Map"/>
<meta name="twitter:description" content="This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Network Traffic Map",
"item": "https://mafyuh.com/posts/network-traffic-map/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Network Traffic Map",
"name": "Network Traffic Map",
"description": "This is just a visual representations of how my current setup flows.\nI have some of the docker-compose files that make up this infra on my Gitea",
"keywords": [
"Homelab"
],
"articleBody": "This is just a visual representations of how my current setup flows.\nI have some of the docker-compose files that make up this infra on my Gitea\n",
"wordCount" : "27",
"inLanguage": "en",
"datePublished": "2023-08-31T16:20:00Z",
"dateModified": "2023-08-31T16:20:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/network-traffic-map/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Network Traffic Map
</h1>
<div class="post-meta"><span title='2023-08-31 16:20:00 +0000 UTC'>August 31, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;27 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>This is just a visual representations of how my current setup flows.</p>
<p><img loading="lazy" src="/assets/img/network-flow.png" alt="Map Flow Image" />
</p>
<p>I have some of the docker-compose files that make up this infra on my <a href="https://git.mafyuh.dev/mafyuh/Auto-Homelab">Gitea</a></p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/homelab/">Homelab</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/">
<span class="title">« Prev</span>
<br>
<span>How to Show More Options By Default in Windows 11</span>
</a>
<a class="next" href="https://mafyuh.com/posts/software/">
<span class="title">Next »</span>
<br>
<span>Software</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

10
posts/page/1/index.html Normal file
View file

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

320
posts/page/2/index.html Normal file
View file

@ -0,0 +1,320 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Posts | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="Posts - Mafyuh&#39;s Blog">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="https://mafyuh.com/posts/index.xml">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Posts" />
<meta property="og:description" content="A blog by Mafyuh" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://mafyuh.com/posts/" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Posts"/>
<meta name="twitter:description" content="A blog by Mafyuh"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
}
]
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a></div>
<h1>
Posts
<a href="/posts/index.xml" title="RSS" aria-label="RSS">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" height="23">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
</a>
</h1>
</header>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">How to Show More Options By Default in Windows 11
</h2>
</header>
<div class="entry-content">
<p>To Show more options by default in File Explorer, open Command Prompt as Administrator, then type or paste the following command:
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d &#34;&#34; /f and hit Enter.</p>
</div>
<footer class="entry-footer"><span title='2023-09-05 23:45:25 +0000 UTC'>September 5, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;31 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to How to Show More Options By Default in Windows 11" href="https://mafyuh.com/posts/how-to-show-more-options-by-default-in-windows-11/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Network Traffic Map
</h2>
</header>
<div class="entry-content">
<p>This is just a visual representations of how my current setup flows.
I have some of the docker-compose files that make up this infra on my Gitea</p>
</div>
<footer class="entry-footer"><span title='2023-08-31 16:20:00 +0000 UTC'>August 31, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;27 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Network Traffic Map" href="https://mafyuh.com/posts/network-traffic-map/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Software
</h2>
</header>
<div class="entry-content">
<p>Just a straight forward list of pretty much everything that makes up my homelab. Or systems Ive ran in the past.
Operating Systems
Ubuntu 23.04 Ubuntu 22.04 (primary on most systems) CentOS/Fedora 38 (only when Ubuntu doesnt play nice) Debian 11 Proxmox 8 Windows 10/11 TrueNAS Scale (virtualized) CasaOS (zimaboard) pfSense Applications/Containers
Nginx Proxy Manager Nginx Apache2 Traefik Authentik Portainer Yacht AdGuardHome Pihole Wazuh Zabbix Uptime Kuma Ghost (this blog) Wordpress Hydroxide (proton mail bridge) Calibre Smokeping Openspeedtest Grafana Prometheus InfluxDB PostgresSQL MySQL Watchtower Apache Guacamole Ansible Terraform Packer Vaultwarden Kasm Workspaces Jellyfin Plex Twingate Tailscale Headscale Wireguard LinkStack N8N Gotify Nextcloud Immich AI...</p>
</div>
<footer class="entry-footer"><span title='2023-08-26 00:13:40 +0000 UTC'>August 26, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;124 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Software" href="https://mafyuh.com/posts/software/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hardware
</h2>
</header>
<div class="entry-content">
<p>Most of my infrastructure is hosted on my in-lab Proxmox server, along with a few new machines for dedicated services. Here are some of the specs of some of the in-lab machines.
Proxmox Server CPU: Intel Core i7-9700K GPU: Nvidia GeForce GTX 1660 6GB RAM: 64GB DDR4 3000Mhz NVME SSDs for storage 4x 4TB HDDs (passthrough to NAS) Gaming PC CPU: Intel Core i7-13700K GPU: Nvidia GeForce RTX 3080 RAM: 64GB DDR5 6000 Mhz SSD: Samsung 980 Pro 2TB Mobo: MPG Z790 EDGE WIFI Windows 11 Pro Main PC used for everything....</p>
</div>
<footer class="entry-footer"><span title='2023-08-25 00:13:40 +0000 UTC'>August 25, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;150 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Hardware" href="https://mafyuh.com/posts/hardware/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Archives
</h2>
</header>
<div class="entry-content">
<p>archives</p>
</div>
<footer class="entry-footer">0 min&nbsp;·&nbsp;0 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Archives" href="https://mafyuh.com/archives/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Search
</h2>
</header>
<div class="entry-content">
<p>search</p>
</div>
<footer class="entry-footer">0 min&nbsp;·&nbsp;0 words&nbsp;·&nbsp;Matt</footer>
<a class="entry-link" aria-label="post link to Search" href="https://mafyuh.com/search/"></a>
</article>
<footer class="page-footer">
<nav class="pagination">
<a class="prev" href="https://mafyuh.com/posts/">
«&nbsp;Prev&nbsp;
</a>
</nav>
</footer>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

View file

@ -0,0 +1,378 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Proton Mail - SimpleLogin authentik Social Login Setup | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="authentik">
<meta name="description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Proton Mail - SimpleLogin authentik Social Login Setup" />
<meta property="og:description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-11-12T16:20:00+00:00" />
<meta property="article:modified_time" content="2023-11-12T16:20:00+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Proton Mail - SimpleLogin authentik Social Login Setup"/>
<meta name="twitter:description" content="This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.
To accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.
Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Proton Mail - SimpleLogin authentik Social Login Setup",
"item": "https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Proton Mail - SimpleLogin authentik Social Login Setup",
"name": "Proton Mail - SimpleLogin authentik Social Login Setup",
"description": "This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.\nTo accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.\nThen go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.",
"keywords": [
"authentik"
],
"articleBody": "This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.\nTo accomplish this, first create a SimpleLogin acct by logging in with Proton. Once thats done go to https://app.simplelogin.io/developer and create a website. Give it your authentik URL.\nThen go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this https://auth.example.com/source/oauth/callback/simplelogin/ (simplelogin being slug of authentik)\nIn authentik go to Directory - Federation and Social login - Create and create an OpenID Oauth source\nName: SimpleLogin Slug: simplelogin User matching mode: i chose link with identical email Consumer key: Paste your key Consumer secret: Paste your secret authorization url: https://app.simplelogin.io/oauth2/authorize access token url: https://app.simplelogin.io/oauth2/token profile url: https://app.simplelogin.io/oauth2/userinfo OIDC Well-known URL: https://app.simplelogin.io/.well-known/openid-configuration\nFor logo, it appears authenik inverts your image, I dont know if its dark mode or bug but regardless heres the regular and inverted image I used. Just right click and save image:\nNow go to Flows and Stages - Flows - choose your default authentication stage - click it then click stage bindings - Click edit stage to the right of your identification stage - expand Source settings and make sure you CTL + click your newly created SimpleLogin source.\nYou should be able to logout and try to to login with your Proton account!\n",
"wordCount" : "227",
"inLanguage": "en",
"datePublished": "2023-11-12T16:20:00Z",
"dateModified": "2023-11-12T16:20:00Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Proton Mail - SimpleLogin authentik Social Login Setup
</h1>
<div class="post-meta"><span title='2023-11-12 16:20:00 +0000 UTC'>November 12, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;227 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><p>This is just a quick guide on how to authenticate your authentik users with Proton using SimpleLogin OIDC.</p>
<p><img loading="lazy" src="/assets/img/proton-authentik.png" alt="Proton Authentik Login Screen" />
</p>
<p>To accomplish this, first create a <a href="https://simplelogin.io/">SimpleLogin</a> acct by logging in with Proton. Once thats done go to <a href="https://app.simplelogin.io/developer">https://app.simplelogin.io/developer</a> and create a website. Give it your authentik URL.</p>
<p>Then go to Oauth Settings and copy your client ID and secret for next step. add your authentik URL in redirect URL like this <a href="https://auth.example.com/source/oauth/callback/simplelogin/">https://auth.example.com/source/oauth/callback/simplelogin/</a> (simplelogin being slug of authentik)</p>
<p>In authentik go to Directory - Federation and Social login - Create and create an OpenID Oauth source</p>
<p>Name: SimpleLogin
Slug: simplelogin
User matching mode: i chose link with identical email
Consumer key: Paste your key
Consumer secret: Paste your secret
authorization url: <a href="https://app.simplelogin.io/oauth2/authorize">https://app.simplelogin.io/oauth2/authorize</a>
access token url: <a href="https://app.simplelogin.io/oauth2/token">https://app.simplelogin.io/oauth2/token</a>
profile url: <a href="https://app.simplelogin.io/oauth2/userinfo">https://app.simplelogin.io/oauth2/userinfo</a>
OIDC Well-known URL: <a href="https://app.simplelogin.io/.well-known/openid-configuration">https://app.simplelogin.io/.well-known/openid-configuration</a></p>
<p>For logo, it appears authenik inverts your image, I dont know if its dark mode or bug but regardless here&rsquo;s the regular and inverted image I used. Just right click and save image:</p>
<p><img loading="lazy" src="/assets/img/proton-logo.png" alt="Proton Logo" />
<img loading="lazy" src="/assets/img/proton-inverted.png" alt="Proton Logo Inverted" />
</p>
<p>Now go to Flows and Stages - Flows - choose your default authentication stage - click it then click stage bindings - Click edit stage to the right of your identification stage - expand Source settings and make sure you CTL + click your newly created SimpleLogin source.</p>
<p>You should be able to logout and try to to login with your Proton account!</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/authentik/">Authentik</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/resize-ubuntu-vm-disk/">
<span class="title">« Prev</span>
<br>
<span>Resize Ubuntu VM Disk in Proxmox</span>
</a>
<a class="next" href="https://mafyuh.com/posts/how-to-automate-jellyfin-issue-handling/">
<span class="title">Next »</span>
<br>
<span>How To Automate Jellyfin Issue Handling</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,365 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Resize Ubuntu VM Disk in Proxmox | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="Ubuntu">
<meta name="description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ">
<meta name="author" content="Matt">
<link rel="canonical" href="https://mafyuh.com/posts/resize-ubuntu-vm-disk/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://mafyuh.com/assets/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://mafyuh.com/assets/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://mafyuh.com/assets/favicon/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://mafyuh.com/assets/favicon/apple-touch-icon.png">
<link rel="mask-icon" href="https://mafyuh.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://mafyuh.com/posts/resize-ubuntu-vm-disk/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script defer data-domain="mafyuh.com" src="https://stats.mafyuh.com/js/script.js"></script>
<meta property="og:title" content="Resize Ubuntu VM Disk in Proxmox" />
<meta property="og:description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l " />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://mafyuh.com/posts/resize-ubuntu-vm-disk/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2024-02-06T02:58:07+00:00" />
<meta property="article:modified_time" content="2024-02-06T02:58:07+00:00" /><meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Resize Ubuntu VM Disk in Proxmox"/>
<meta name="twitter:description" content="1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l &#43;100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l "/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://mafyuh.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Resize Ubuntu VM Disk in Proxmox",
"item": "https://mafyuh.com/posts/resize-ubuntu-vm-disk/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Resize Ubuntu VM Disk in Proxmox",
"name": "Resize Ubuntu VM Disk in Proxmox",
"description": "1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ",
"keywords": [
"Ubuntu"
],
"articleBody": "1st step: Increase/resize disk from GUI console 2nd step: Extend physical drive partition and check free space with: sudo growpart /dev/sda 3 sudo pvdisplay sudo pvresize /dev/sda3 sudo pvdisplay 3rd step: Extend Logical volume sudo lvdisplay sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo lvdisplay 4th step: Resize Filesystem sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo fdisk -l ",
"wordCount" : "53",
"inLanguage": "en",
"datePublished": "2024-02-06T02:58:07Z",
"dateModified": "2024-02-06T02:58:07Z",
"author":{
"@type": "Person",
"name": "Matt"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mafyuh.com/posts/resize-ubuntu-vm-disk/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "https://mafyuh.com/assets/favicon/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://mafyuh.com/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="https://mafyuh.com/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="https://mafyuh.com/tags/" title="Tags">
<span>Tags</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="https://mafyuh.com/search/" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://mafyuh.com/">Home</a>&nbsp;»&nbsp;<a href="https://mafyuh.com/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Resize Ubuntu VM Disk in Proxmox
</h1>
<div class="post-meta"><span title='2024-02-06 02:58:07 +0000 UTC'>February 6, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;53 words&nbsp;·&nbsp;Matt
</div>
</header>
<div class="post-content"><h1 id="1st-step-increaseresize-disk-from-gui-console">1st step: Increase/resize disk from GUI console<a hidden class="anchor" aria-hidden="true" href="#1st-step-increaseresize-disk-from-gui-console">#</a></h1>
<p><img loading="lazy" src="/assets/img/prox-resize.png#center" alt="Proxmox webui change" />
</p>
<h1 id="2nd-step-extend-physical-drive-partition-and-check-free-space-with">2nd step: Extend physical drive partition and check free space with:<a hidden class="anchor" aria-hidden="true" href="#2nd-step-extend-physical-drive-partition-and-check-free-space-with">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo growpart /dev/sda <span class="m">3</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvdisplay
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvresize /dev/sda3
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo pvdisplay
</span></span></code></pre></div><h1 id="3rd-step-extend-logical-volume">3rd step: Extend Logical volume<a hidden class="anchor" aria-hidden="true" href="#3rd-step-extend-logical-volume">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvdisplay
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo lvdisplay
</span></span></code></pre></div><h1 id="4th-step-resize-filesystem">4th step: Resize Filesystem<a hidden class="anchor" aria-hidden="true" href="#4th-step-resize-filesystem">#</a></h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo fdisk -l
</span></span></code></pre></div>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://mafyuh.com/tags/ubuntu/">Ubuntu</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="https://mafyuh.com/posts/selfhosted-game-servers/">
<span class="title">« Prev</span>
<br>
<span>Selfhosted Game Servers</span>
</a>
<a class="next" href="https://mafyuh.com/posts/proton-mail-authentik-social-login-setup/">
<span class="title">Next »</span>
<br>
<span>Proton Mail - SimpleLogin authentik Social Login Setup</span>
</a>
</nav>
</footer><script src="https://utteranc.es/client.js"
repo="Mafyuh/mafyuh.com"
issue-term="pathname"
label="✨💬✨"
theme="photon-dark"
crossorigin="anonymous"
async>
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="https://mafyuh.com/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>

277
posts/search/index.html Normal file
View file

@ -0,0 +1,277 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Search | Mafyuh&#39;s Blog</title>
<meta name="keywords" content="">
<meta name="description" content="search">
<meta name="author" content="Mafyuh">
<link rel="canonical" href="http://localhost:1313/posts/search/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z&#43;V9&#43;cO1A=" rel="preload stylesheet" as="style"><link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
<script defer crossorigin="anonymous" src="/assets/js/search.08e05469bdb256c7ac07101becb0f8f73deb8a2e7fc656044896538a7f8023e1.js" integrity="sha256-COBUab2yVsesBxAb7LD49z3rii5/xlYESJZTin&#43;AI&#43;E="></script>
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/posts/search/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><meta property="og:title" content="Search" />
<meta property="og:description" content="search" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/posts/search/" /><meta property="article:section" content="posts" />
<meta property="og:site_name" content="Mafyuh&#39;s Blog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Search"/>
<meta name="twitter:description" content="search"/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "http://localhost:1313/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Search",
"item": "http://localhost:1313/posts/search/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Search",
"name": "Search",
"description": "search",
"keywords": [
],
"articleBody": "",
"wordCount" : "0",
"inLanguage": "en",
"datePublished": "0001-01-01T00:00:00Z",
"dateModified": "0001-01-01T00:00:00Z",
"author":{
"@type": "Person",
"name": "Mafyuh"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localhost:1313/posts/search/"
},
"publisher": {
"@type": "Organization",
"name": "Mafyuh's Blog",
"logo": {
"@type": "ImageObject",
"url": "http://localhost:1313/favicon.ico"
}
}
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title="Mafyuh&#39;s Blog (Alt + H)">
<img src="http://localhost:1313/assets/favicon/favicon.svg" alt="" aria-label="logo"
height="35">Mafyuh&#39;s Blog</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
<ul class="lang-switch"><li>|</li>
</ul>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/guides/" title="Guides">
<span>Guides</span>
</a>
</li>
<li>
<a href="http://localhost:1313/archives/" title="Archives">
<span>Archives</span>
</a>
</li>
<li>
<a href="http://localhost:1313/search" title="Search (Alt &#43; /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header">
<h1>Search <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
</h1>
<div class="post-meta"></div>
</header>
<div id="searchbox">
<input id="searchInput" autofocus placeholder="Search ↵"
aria-label="search" type="search" autocomplete="off" maxlength="64">
<ul id="searchResults" aria-label="search results"></ul>
</div>
</main>
<footer class="footer">
<span>&copy; 2024 <a href="http://localhost:1313/">Mafyuh&#39;s Blog</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more