Files
wiki/projects/index.html
2026-03-10 06:32:29 +00:00

17 lines
44 KiB
HTML

<!doctype html><html lang=en dir=ltr class=scroll-smooth data-default-appearance=dark data-auto-appearance=true><head><meta charset=utf-8><meta http-equiv=content-language content="en"><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="ie=edge"><meta name=theme-color><title>Projects &#183; wiki.wompmacho.com</title><meta name=title content="Projects &#183; wiki.wompmacho.com"><meta name=description content="my personal wiki"><link rel=canonical href=https://wiki.wompmacho.com/projects/><link rel=alternate type=application/rss+xml href=../projects/index.xml title=wiki.wompmacho.com><meta name=author content="Michael"><meta property="og:url" content="https://wiki.wompmacho.com/projects/"><meta property="og:site_name" content="wiki.wompmacho.com"><meta property="og:title" content="Projects"><meta property="og:description" content="my personal wiki"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Projects"><meta name=twitter:description content="my personal wiki"><link type=text/css rel=stylesheet href=../css/main.bundle.min.24854dde0af9d0619f56f3ba2a7101ac21aaa3fe2ccb639112fb1ccd8c44a8b2e9e043fd16fda8efbfe56cc94b58c4ba506ba4ac6fc876c397d04cd40b49ae17.css integrity="sha512-JIVN3gr50GGfVvO6KnEBrCGqo/4sy2OREvsczYxEqLLp4EP9Fv2o77/lbMlLWMS6UGukrG/IdsOX0EzUC0muFw=="><script type=text/javascript src=../js/appearance.min.6f41174b3a05b680820fe08cadbfa5fb7a7ca347b76a0955cdc68b9d8aca1ce24f0547e138cea33bcc7904d551a90afcb1cc7f2d9fe8557075d501419046c08c.js integrity="sha512-b0EXSzoFtoCCD+CMrb+l+3p8o0e3aglVzcaLnYrKHOJPBUfhOM6jO8x5BNVRqQr8scx/LZ/oVXB11QFBkEbAjA=="></script><script src=../lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script><script defer type=text/javascript id=script-bundle src=../js/main.bundle.min.bdda7dece6cbaf08deef7d254f7f842f3261c2524d247905127c9a20decc03f1011a2950048464c79272c1ce0705a49a41147f39f2b95163bb71d404b33263ef.js integrity="sha512-vdp97ObLrwje730lT3+ELzJhwlJNJHkFEnyaIN7MA/EBGilQBIRkx5Jywc4HBaSaQRR/OfK5UWO7cdQEszJj7w==" data-copy=Copy data-copied=Copied></script><link rel=icon type=image/svg+xml href=../icons/icon.svg><link rel=apple-touch-icon href=../icons/icon.svg><script type=application/ld+json>[{"@context":"https://schema.org","@type":"Article","articleSection":"Projects","name":"Projects","headline":"Projects","inLanguage":"en","url":"https://wiki.wompmacho.com/projects/","author":{"@type":"Person","name":"Michael"},"copyrightYear":"2025","dateCreated":"2025-02-23T00:00:00\u002b00:00","datePublished":"2025-02-23T00:00:00\u002b00:00","dateModified":"2026-03-08T00:00:00\u002b00:00","mainEntityOfPage":"true","wordCount":"0"}]</script></head><body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar"><div id=the-top class="absolute flex self-center"><a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" href=#main-content><span class="font-bold text-primary-600 pe-2 dark:text-primary-400">&darr;</span>
Skip to main content</a></div><div class=min-h-[148px]></div><div class="fixed inset-x-0 z-100"><div id=menu-blur class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl bg-neutral/25 dark:bg-neutral-800/25"></div><div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32"><div class="main-menu flex items-center w-full gap-2 p-1 pl-0"><a href=../ class="text-base font-medium truncate min-w-0 shrink">wiki.wompmacho.com</a><div class="flex items-center ms-auto"><div class="hidden md:flex"><nav class="flex items-center gap-x-5 h-12"><a href=../projects/ class="flex items-center bf-icon-color-hover" aria-label=projects title=Projects><span class="text-base font-medium break-normal">projects
</span></a><a href=../posts/ class="flex items-center bf-icon-color-hover" aria-label=posts title=Posts><span class="text-base font-medium break-normal">posts
</span></a><a href=../stream/ class="flex items-center bf-icon-color-hover" aria-label=stream title=Stream><span class="text-base font-medium break-normal">stream
</span></a><button id=search-button aria-label=Search class="text-base bf-icon-color-hover" title="Search (/)">
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7 405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9.0 208 0S0 93.1.0 208s93.1 208 208 208c48.3.0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9.0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7.0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7.0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg></span></button><div class="flex items-center"><button id=appearance-switcher aria-label="Dark mode switcher" type=button class="text-base bf-icon-color-hover"><div class="flex items-center justify-center dark:hidden"><span class="relative block icon"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M32 256C32 132.2 132.3 32 255.8 32c11.36.0 29.7 1.668 40.9 3.746 9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3 9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480 132.1 480 32 379.6 32 256z"/></svg></span></div><div class="items-center justify-center hidden dark:flex"><span class="relative block icon"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02.0-95.1 42.98-95.1 95.1s41.2 96.9 95.1 96.9 95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347l-63.2-91.9 63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89 164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6 12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256 2.74 347.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7 19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109 109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69.0-127.1-57.31-127.1-127.1.0-70.69 57.31-127.1 127.1-127.1S383.1 186.2 383.1 256c0 70.7-56.4 127.1-127.1 127.1z"/></svg></span></div></button></div></nav></div><div class="flex md:hidden"><div class="flex items-center h-14 gap-4"><button id=search-button-mobile aria-label=Search class="flex items-center justify-center bf-icon-color-hover" title="Search (/)">
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7 405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9.0 208 0S0 93.1.0 208s93.1 208 208 208c48.3.0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9.0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7.0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7.0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
</span></button>
<button id=appearance-switcher-mobile type=button aria-label="Dark mode switcher" class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400"><div class=dark:hidden><span class="relative block icon"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M32 256C32 132.2 132.3 32 255.8 32c11.36.0 29.7 1.668 40.9 3.746 9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3 9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480 132.1 480 32 379.6 32 256z"/></svg></span></div><div class="hidden dark:block"><span class="relative block icon"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02.0-95.1 42.98-95.1 95.1s41.2 96.9 95.1 96.9 95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347l-63.2-91.9 63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89 164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6 12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256 2.74 347.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7 19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109 109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69.0-127.1-57.31-127.1-127.1.0-70.69 57.31-127.1 127.1-127.1S383.1 186.2 383.1 256c0 70.7-56.4 127.1-127.1 127.1z"/></svg></span></div></button>
<input type=checkbox id=mobile-menu-toggle autocomplete=off class="hidden peer">
<label for=mobile-menu-toggle class="flex items-center justify-center cursor-pointer bf-icon-color-hover"><span class="relative block icon"><svg viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416c17.7.0 32 14.33 32 32 0 17.7-14.3 32-32 32H32C14.33 128 0 113.7.0 96zM0 256c0-17.7 14.33-32 32-32H416c17.7.0 32 14.3 32 32s-14.3 32-32 32H32c-17.67.0-32-14.3-32-32zM416 448H32c-17.67.0-32-14.3-32-32s14.33-32 32-32H416c17.7.0 32 14.3 32 32s-14.3 32-32 32z"/></svg></span></label><div role=dialog aria-modal=true style=scrollbar-gutter:stable class="fixed inset-0 z-50 invisible overflow-y-auto px-6 py-20 opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100 bg-neutral-50/97 dark:bg-neutral-900/99
bf-scrollbar"><label for=mobile-menu-toggle class="fixed end-8 top-5 flex items-center justify-center z-50 h-12 w-12 cursor-pointer select-none rounded-full bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900"><span class="relative block icon"><svg viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75.0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3 54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75.0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75.0-45.25s32.75-12.5 45.25.0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25.0s12.5 32.75.0 45.25l-105.4 105.4L310.6 361.4z"/></svg></span></label><nav class="mx-auto max-w-md space-y-6"><div class=px-2><a href=../projects/ aria-label=projects class="flex items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200"><span title=Projects class="text-2xl font-bold tracking-tight">projects</span></a></div><div class=px-2><a href=../posts/ aria-label=posts class="flex items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200"><span title=Posts class="text-2xl font-bold tracking-tight">posts</span></a></div><div class=px-2><a href=../stream/ aria-label=stream class="flex items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200"><span title=Stream class="text-2xl font-bold tracking-tight">stream</span></a></div><div class="flex flex-wrap gap-4 mt-8 pt-8 border-t bf-border-color"><a href=../projects/lab_setup/ aria-label=lab class="inline-flex items-center gap-2 px-2 py-2 bf-icon-color-hover rounded-full text-sm"><span title="Lab Setup">lab</span>
</a><a href=../resume/ aria-label=resume class="inline-flex items-center gap-2 px-2 py-2 bf-icon-color-hover rounded-full text-sm"><span title=Resume>resume</span></a></div></nav></div></div></div></div></div><div class="main-menu flex pb-3 flex-col items-end justify-between md:justify-start space-x-3"><div class="hidden md:flex items-center space-x-5"><a href=../projects/lab_setup/ class="flex items-center bf-icon-color-hover"><span class="text-xs font-light" title="Lab Setup">lab
</span></a><a href=../resume/ class="flex items-center bf-icon-color-hover"><span class="text-xs font-light" title=Resume>resume</span></a></div></div></div></div><script type=text/javascript src=../js/background-blur.min.605b3b942818f0ab5a717ae446135ec46b8ee5a2ad12ae56fb90dc2a76ce30c388f9fec8bcc18db15bd47e3fa8a09d779fa12aa9c184cf614a315bc72c6c163d.js integrity="sha512-YFs7lCgY8KtacXrkRhNexGuO5aKtEq5W+5DcKnbOMMOI+f7IvMGNsVvUfj+ooJ13n6EqqcGEz2FKMVvHLGwWPQ==" data-blur-id=menu-blur></script><div class="relative flex flex-col grow"><main id=main-content class=grow><header><ol class="text-sm text-neutral-500 dark:text-neutral-400 print:hidden"><li class=hidden><a class="hover:underline decoration-neutral-300 dark:underline-neutral-600" href=../>HOME</a><span class="px-1 text-primary-500">/</span></li><li class=hidden><a class="hover:underline decoration-neutral-300 dark:underline-neutral-600" href=../projects/>Projects</a><span class="px-1 text-primary-500">/</span></li></ol><h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Projects</h1><div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"><div class="flex flex-row flex-wrap items-center"></div></div></header><section class="mt-0 prose flex max-w-full flex-col dark:prose-invert lg:flex-row"><div class="min-w-0 min-h-0 max-w-prose w-full"></div></section><h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">2025</h2><section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/vaultwarden/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2></h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-23T00:00:00+00:00>23 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>81 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is vaultwarden? # vaultwarden ia a alternative server implementation of the Bitwarden Client API, written in Rust and compatible with official Bitwarden clients, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/wikijs/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>wikijs</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>135 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is wikijs? # Wiki.js is a powerful, modern, and open-source wiki application built on Node.js. It is designed to be the central knowledge base for your home lab or professional projects, replacing traditional, clunky wiki platforms with a sleek, intuitive interface.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/webtop/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>webtop</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>58 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is webtop? # webtop is a awesome mini linux env I can use as a secure remote web-client for my home network.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/uptime-kuma/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>uptime-kuma</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>82 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is uptime-kuma? # uptime-kuma is a neat little web monitoring application. Lotta dope things right out of the box, very gui / user friendly. Pretty much just add the stack, update the dir for config - and it works. Integrates with discord webhooks, great easy status page and dashboard.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/qbittorent/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>qBittorrent</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>279 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is qBittorrent? # qBittorrent is a awesome, simple app that allows you to use classic QBittorrent in a docker container. I use QBittorrent because I can set it up with a VPN that only connects via the container directly. Effectively separating it from the rest of my network and allowing me to continue as normal while it is downloading. It will automatically stop the network if the VPN is not functioning correctly.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/portainer/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>portainer</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>224 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is Portainer? # Portainer is a lightweight, powerful container management platform that provides a graphical user interface (GUI) to manage your Docker, Docker Swarm, and Kubernetes environments. It essentially sits on top of your container runtime, allowing you to control complex infrastructure without needing to master the command line.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/nginx-proxy-manager/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>nginx-proxy-manager</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>1053 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">5 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is nginx-proxy-manager? # Nginx-proxy-manager is a simplified GUI for handling an nginx server configuration. Nginx is a reverse proxy server.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/mkdocs/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>mkdocs</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>120 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is mkdocs? # MkDocs is a fast, simple, and extensible static site generator geared specifically toward building project documentation. It relies heavily on Markdown files, which makes it incredibly accessible for developers who want to write docs as easily as they write code.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/linkstack/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>linkstacks</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>93 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is linkstacks? # Linkstacks is a nice little linktr.ee clone that allows you to set up a simple link page. It can also be expanded to add multiple users and you can host multiple people&rsquo;s pages with their own user accounts and everything.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/jellyseer/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>jellyseer</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>65 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is jellyseer? # Jellyseerr is a free, open-source, and highly intuitive media request management tool designed for the Jellyfin (and Plex/Emby) ecosystem. It essentially acts as a &ldquo;gateway&rdquo; between your users and your media server.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/jellyfin/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>jellyfin</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>238 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is jellyfin? # Jellyfin is a media server. I like it because its simple, free, doesnt require online accounts and lets you serve up your movies, tv shows and music. Is very similar to apps like Plex and Emby. You can manage your media and auto download things like episode names, artwork etc. Has plugin support and is basically trying to be a better open source version of Plex. It has apps/support for android, google tvs, firestick, iphone etc.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/homepage/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>homepage</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>89 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is homepage? # homepage is an open-source, highly customizable, and static site-based dashboard designed to organize your self-hosted services into a beautiful, central hub.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/homarr/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>homarr</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>115 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is homarr? # homarr is a nice little dashboard app that can be used to organize your homelab with a simple webpage interface. Great for Quick links, updates on weather, time, seeing if a server is down, monitoring your webcams or torrents, etc.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/frigate/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>frigate</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>271 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is Frigate? # Frigate is a complete and local NVR designed for Home Assistant with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/code-server/code-server/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>code-server</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>115 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">Whats is code-server? # code-server is a self-hosted instance of Visual Studio Code that runs on a remote server and is accessible directly through your web browser. It effectively turns any machine with a CPU and RAM into a fully functional cloud-based development environment.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/audiobookshelf/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>audiobookshelf</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2025-02-04T00:00:00+00:00>4 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>233 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is Audiobookshelf? # Audiobookshelf is a self-hosted, open-source server designed to manage and stream your personal audiobook and podcast collections. It acts as a private, web-based alternative to services like Audible, giving you full control over your media files. Key features include:</div></div><div class="px-6 pt-4 pb-2"></div></article></section><h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">2024</h2><section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/pterodactyl/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>pterodactyl</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2024-05-04T20:00:25+00:00>4 May 2024</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2025-02-08T00:00:00+00:00>Updated: 8 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>253 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is Pterodactyl? # Pterodactyl is a free, open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/nas/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>NAS</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2024-05-04T00:00:00+00:00>4 May 2024</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2024-05-11T00:00:00+00:00>Updated: 11 May 2024</time><span class="px-2 text-primary-500">&#183;</span><span>1790 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">9 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">NAS build and some tips and tricks to get things working with your docker containers</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/pihole/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>pihole</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2024-04-27T23:53:26+00:00>27 April 2024</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2025-02-08T00:00:00+00:00>Updated: 8 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>528 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">3 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">The Pi-hole is a DNS sinkhole that protects your devices from unwanted content, without installing any client-side software. Useful for blocking ad services at a DNS level. It uses a list of known ad services stored on github, can add your own. It can also operate as a internal dns router and dhcp server.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/networking/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>networking</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2024-04-27T23:53:26+00:00>27 April 2024</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2025-02-08T00:00:00+00:00>Updated: 8 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>1675 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">8 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">IP Address # An Internet Protocol address (IP) address is a numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication. Think of it like a street address for your computer on the internet. It&rsquo;s how devices find each other and exchange information.</div></div><div class="px-6 pt-4 pb-2"></div></article></section><h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">2023</h2><section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/docker/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>Docker</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2023-11-26T01:14:53+00:00>26 November 2023</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2025-02-11T00:00:00+00:00>Updated: 11 February 2025</time><span class="px-2 text-primary-500">&#183;</span><span>299 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">2 mins</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">What is Docker? # Docker is an awesome platform that anyone hoping to get into software / development or any homelab-er should become familiar with. Docker is a platform designed to help developers build, share, and run container applications. The most important aspect to docker is its ability to be implemented in version control via simple config files. This allowing a team of people to share a code base working in the same environments consistently.</div></div><div class="px-6 pt-4 pb-2"></div></article><article class="relative flex flex-col h-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600"><div class="p-4 flex flex-col flex-grow"><header><a href=../projects/lab_setup/ class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2"><h2>Lab Setup</h2></a></header><div class="text-sm text-neutral-500 dark:text-neutral-400 mb-2"><div class="flex flex-row flex-wrap items-center"><time datetime=2023-07-04T05:33:31+00:00>4 July 2023</time><span class="px-2 text-primary-500">&#183;</span><time datetime=2026-03-08T00:00:00+00:00>Updated: 8 March 2026</time><span class="px-2 text-primary-500">&#183;</span><span>16 words</span><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">1 min</span></div><div class="flex flex-row flex-wrap items-center"></div><div class="flex flex-row flex-wrap items-center"></div></div><div class="prose dark:prose-invert py-1 line-clamp-3 flex-grow text-sm">2024 Home Lab #</div></div><div class="px-6 pt-4 pb-2"></div></article></section><div id=scroll-to-top class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200"><a href=#the-top class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" aria-label="Scroll to top" title="Scroll to top">&uarr;</a></div></main><footer id=site-footer class="py-10 print:hidden"><div class="flex items-center justify-between"><p class="text-sm text-neutral-500 dark:text-neutral-400">&copy;
2026
Michael</p><p class="text-xs text-neutral-500 dark:text-neutral-400">Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" href=https://gohugo.io/ target=_blank rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" href=https://blowfish.page/ target=_blank rel="noopener noreferrer">Blowfish</a></p></div><script>mediumZoom(document.querySelectorAll("img:not(.nozoom)"),{margin:24,background:"rgba(0,0,0,0.5)",scrollOffset:0})</script></footer><div id=search-wrapper class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500" data-url=https://wiki.wompmacho.com/><div id=search-modal class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800"><header class="relative z-10 flex items-center justify-between flex-none px-2"><form class="flex items-center flex-auto min-w-0"><div class="flex items-center justify-center w-8 h-8 text-neutral-400"><span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7 405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9.0 208 0S0 93.1.0 208s93.1 208 208 208c48.3.0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9.0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7.0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7.0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg></span></div><input type=search id=search-query class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" placeholder=Search tabindex=0></form><button id=close-search-button class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" title="Close (Esc)">
<span class="relative block icon"><svg viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75.0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3 54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75.0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75.0-45.25s32.75-12.5 45.25.0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25.0s12.5 32.75.0 45.25l-105.4 105.4L310.6 361.4z"/></svg></span></button></header><section class="flex-auto px-2 overflow-auto"><ul id=search-results></ul></section></div></div></div></body></html>