375 lines
15 KiB
HTML
Executable File
375 lines
15 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html lang="en" dir="auto" data-theme="dark">
|
|
|
|
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&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="noindex, nofollow">
|
|
<title>What's in the lab right now? | TheWittyBanter.com</title>
|
|
<meta name="keywords" content="">
|
|
<meta name="description" content="The network’s in a cool spot right now.
|
|
|
|
|
|
The whole team
|
|
|
|
|
|
|
|
|
|
The Gesellschaft
|
|
TrueNAS on a 6th gen i7 with 32gb RAM
|
|
Services here
|
|
Frigate
|
|
|
|
This has been cool for storing footage from our IP cams, though I’m not too thrilled with the performance of our current setup. We use Tapo, and the small ones work fine - but the “good” one for the entryway doesn’t support local account setup. We bought them in a pinch and they’ve been effective, but I’m not crazy about them.
|
|
|
|
Immich">
|
|
<meta name="author" content="">
|
|
<link rel="canonical" href="https://thewittybanter.com:1313/docs/currentlab/">
|
|
<link crossorigin="anonymous" href="/assets/css/stylesheet.6ff46447b1fa3f8a5cc0bcae48088decc3ae37f5fbc99406a3aefc3bf0e6044a.css" integrity="sha256-b/RkR7H6P4pcwLyuSAiN7MOuN/X7yZQGo678O/DmBEo=" rel="preload stylesheet" as="style">
|
|
<link rel="icon" href="https://thewittybanter.com:1313/favicon.ico">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="https://thewittybanter.com:1313/favicon-16x16.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="https://thewittybanter.com:1313/favicon-32x32.png">
|
|
<link rel="apple-touch-icon" href="https://thewittybanter.com:1313/apple-touch-icon.png">
|
|
<link rel="mask-icon" href="https://thewittybanter.com:1313/safari-pinned-tab.svg">
|
|
<meta name="theme-color" content="#2e2e33">
|
|
<meta name="msapplication-TileColor" content="#2e2e33">
|
|
<link rel="alternate" hreflang="en" href="https://thewittybanter.com:1313/docs/currentlab/">
|
|
<noscript>
|
|
<style>
|
|
#theme-toggle,
|
|
.top-link {
|
|
display: none;
|
|
}
|
|
|
|
</style>
|
|
</noscript>
|
|
<script>
|
|
if (localStorage.getItem("pref-theme") === "light") {
|
|
document.querySelector("html").dataset.theme = 'light';
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body id="top">
|
|
<header class="header">
|
|
<nav class="header-nav">
|
|
<div class="logo">
|
|
<a href="https://thewittybanter.com:1313/" accesskey="h" title="TheWittyBanter.com (Alt + H)">TheWittyBanter.com</a>
|
|
<div class="logo-switches">
|
|
<button id="theme-toggle" class="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
|
|
<svg class="moon" xmlns="http://www.w3.org/2000/svg" width="17" height="17" 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 class="sun" xmlns="http://www.w3.org/2000/svg" width="17" height="17" 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>
|
|
</div>
|
|
</div>
|
|
<ul id="menu" class="menu">
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/welcome" title="Welcome">
|
|
<span>Welcome</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/shows" title="Shows">
|
|
<span>Shows</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/music" title="Music">
|
|
<span>Music</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/reviews" title="Reviews">
|
|
<span>Reviews</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/posts" title="Blog">
|
|
<span>Blog</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://thewittybanter.com:1313/docs" title="Docs">
|
|
<span>Docs</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
<main class="main">
|
|
|
|
<article class="post-single">
|
|
<header class="post-header">
|
|
<nav class="breadcrumbs" role="navigation" aria-label="Breadcrumb">
|
|
<a href="/">Home</a>
|
|
<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" class="feather feather-chevron-right">
|
|
<polyline points="9 18 15 12 9 6"></polyline>
|
|
</svg>
|
|
<a href="/docs/">Docs</a>
|
|
<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" class="feather feather-chevron-right">
|
|
<polyline points="9 18 15 12 9 6"></polyline>
|
|
</svg>
|
|
</nav>
|
|
<h1 class="post-title entry-hint-parent">
|
|
What's in the lab right now?
|
|
</h1>
|
|
<div class="post-meta">
|
|
|
|
<span title='2026-07-31 22:33:32 -0400 -0400'>July 31, 2026</span> · <span>2 min</span>
|
|
|
|
</div>
|
|
</header> <details class="toc" >
|
|
<summary accesskey="c" title="(Alt + C)">
|
|
<span class="title">Table of Contents</span>
|
|
</summary>
|
|
|
|
<div class="inner"><ul>
|
|
<li>
|
|
<a href="#the-gesellschaft" aria-label="The Gesellschaft">The Gesellschaft</a><ul>
|
|
|
|
<li>
|
|
<a href="#services-here" aria-label="Services here">Services here</a></li></ul>
|
|
</li>
|
|
<li>
|
|
<a href="#the-servbot" aria-label="The Servbot">The Servbot</a><ul>
|
|
|
|
<li>
|
|
<a href="#services-here-1" aria-label="Services here">Services here</a></li></ul>
|
|
</li>
|
|
<li>
|
|
<a href="#the-router" aria-label="The Router">The Router</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</details>
|
|
|
|
<div class="post-content md-content"><p>The network’s in a cool spot right now.</p>
|
|
<figure>
|
|
<img loading="lazy" src="/images/lab.jpg" width="600"/> <figcaption>
|
|
The whole team
|
|
</figcaption>
|
|
</figure>
|
|
|
|
<hr>
|
|
<h1 id="the-gesellschaft">The Gesellschaft<a hidden class="anchor" aria-hidden="true" href="#the-gesellschaft">#</a></h1>
|
|
<p><em>TrueNAS on a 6th gen i7 with 32gb RAM</em></p>
|
|
<h2 id="services-here">Services here<a hidden class="anchor" aria-hidden="true" href="#services-here">#</a></h2>
|
|
<p><strong>Frigate</strong></p>
|
|
<ul>
|
|
<li>This has been cool for storing footage from our IP cams, though I’m not too thrilled with the performance of our current setup. We use Tapo, and the small ones work fine - but the “good” one for the entryway doesn’t support local account setup. We bought them in a pinch and they’ve been effective, but I’m not crazy about them.</li>
|
|
</ul>
|
|
<p><strong>Immich</strong></p>
|
|
<ul>
|
|
<li>An excellent tool that I haven’t given the time it deserves. It’s intended to be a “set and forget” image backup, which it’s served well as, though I would like to delve a bit deeper. Time is an illusion.</li>
|
|
</ul>
|
|
<p><strong>Jellyfin</strong></p>
|
|
<ul>
|
|
<li>What else can I say. A perfect tool for streaming (<em>ahem</em>) acquired media. A bit clunky for music, however. So we use instead…</li>
|
|
</ul>
|
|
<p><strong>Navidrome</strong></p>
|
|
<ul>
|
|
<li>Another perfect tool for interfacing with your media of the audio varitety. The metadata is only as good as YOU make it, but that’s a fun mindless task for when you wanna get stoned and data entry for a bit. (What, just me?)</li>
|
|
</ul>
|
|
<p><strong>Memos</strong></p>
|
|
<ul>
|
|
<li>A fun markdown-based tool for keeping notes, designed to look and function like a self-hosted Twitter. Sorts by tags, comes with a search integrated. Real fun to mess with, though I’ve since kinda abandoned it since building this.</li>
|
|
</ul>
|
|
<hr>
|
|
<h1 id="the-servbot">The Servbot<a hidden class="anchor" aria-hidden="true" href="#the-servbot">#</a></h1>
|
|
<p><em>Ubuntu 26.04 on a 4th Gen i5 with 16gb RAM</em></p>
|
|
<p>A rugged little beast. Formerly part of a Proxmox cluster, running HA on three of these guys proved to be a bit much.</p>
|
|
<h2 id="services-here-1">Services here<a hidden class="anchor" aria-hidden="true" href="#services-here-1">#</a></h2>
|
|
<p><strong>Nginx Proxy Manager</strong></p>
|
|
<ul>
|
|
<li>Something I started using early on, as soon as I bought the first domain. I know how to use it, it handles Cloudflare well, so far little complaints.</li>
|
|
</ul>
|
|
<p><strong>Dockge</strong></p>
|
|
<ul>
|
|
<li>Handy for deploying Docker stuff quickly. I like the interface</li>
|
|
</ul>
|
|
<p><strong>Pinchflat</strong></p>
|
|
<ul>
|
|
<li>For archiving those important videos</li>
|
|
</ul>
|
|
<p><strong>OpenSpeedTest</strong></p>
|
|
<ul>
|
|
<li><em>shrugs</em> Why not?</li>
|
|
</ul>
|
|
<p><strong>Seerr</strong></p>
|
|
<ul>
|
|
<li>Better for requests than a Discord server</li>
|
|
</ul>
|
|
<p><strong>Futo Notes</strong></p>
|
|
<ul>
|
|
<li>I’d rather have my text files be my responsibility</li>
|
|
</ul>
|
|
<p><strong>The Stack</strong></p>
|
|
<ul>
|
|
<li>The less said the better</li>
|
|
</ul>
|
|
<p><strong>Gitea</strong></p>
|
|
<ul>
|
|
<li>Getting familiar with that setup, but that’s been clunky</li>
|
|
</ul>
|
|
<hr>
|
|
<h1 id="the-router">The Router<a hidden class="anchor" aria-hidden="true" href="#the-router">#</a></h1>
|
|
<p>Running OPNSense on a decommissioned kiosk computer I nabbed from work. A 7th gen i3 with two NIC jacks in a compact form factor… that had a locked bios. It booted legacy, though, and that’s all I needed.</p>
|
|
<hr>
|
|
|
|
|
|
</div>
|
|
|
|
<footer class="post-footer">
|
|
<ul class="post-tags">
|
|
</ul>
|
|
</footer>
|
|
</article>
|
|
</main>
|
|
|
|
<footer class="footer">
|
|
<span>© 2026 <a href="https://thewittybanter.com:1313/">TheWittyBanter.com</a></span> ·
|
|
|
|
|
|
|
|
<span>
|
|
Powered by
|
|
<a href="https://gohugo.io/?utm_source=papermod" rel="noopener" target="_blank">Hugo</a> &
|
|
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
|
</span>
|
|
</footer>
|
|
<a href="#top" id="top-link" class="top-link hidden" aria-label="go to top" title="Go to Top (Alt + G)" accesskey="g">
|
|
<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" class="feather feather-chevrons-up">
|
|
<polyline points="17 11 12 6 7 11"></polyline>
|
|
<polyline points="17 18 12 13 7 18"></polyline>
|
|
</svg>
|
|
</a>
|
|
|
|
<script>
|
|
let menu = document.getElementById('menu');
|
|
if (menu) {
|
|
|
|
const scrollPosition = localStorage.getItem("menu-scroll-position");
|
|
if (scrollPosition) {
|
|
menu.scrollLeft = parseInt(scrollPosition, 10);
|
|
}
|
|
|
|
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 toplink = document.getElementById("top-link");
|
|
window.onscroll = function () {
|
|
const scrollThreshold = window.innerHeight;
|
|
if (document.body.scrollTop > scrollThreshold || document.documentElement.scrollTop > scrollThreshold) {
|
|
toplink.classList.remove("hidden");
|
|
} else {
|
|
toplink.classList.add("hidden");
|
|
}
|
|
};
|
|
|
|
</script>
|
|
<script>
|
|
document.getElementById("theme-toggle").addEventListener("click", () => {
|
|
const html = document.querySelector("html");
|
|
if (html.dataset.theme === "dark") {
|
|
html.dataset.theme = 'light';
|
|
localStorage.setItem("pref-theme", 'light');
|
|
} else {
|
|
html.dataset.theme = '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>
|