incngrnt/public/index.html
2025-03-16 11:20:59 -06:00

406 lines
13 KiB
HTML

<!DOCTYPE html>
<html lang="en-ca" dir="ltr">
<head>
<meta name="generator" content="Hugo 0.145.0"><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="content-language" content="en-ca" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>incngrnt &middot; Home </title>
<meta name="title" content="incngrnt" />
<meta name="description" content="A Hugo Theme" />
<link rel="canonical" href="http://localhost:1313/" />
<link rel="stylesheet" href="/css/theme.css">
<link rel="stylesheet" href="/css/main.css">
<script src="/js/theme.js"></script>
<script src="/js/codecopy.js"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" type="application/rss+xml" href="/index.xml" title="incngrnt" />
<link rel="alternate" type="application/json" href="/index.json" title="incngrnt" />
<meta property="og:url" content="http://localhost:1313/">
<meta property="og:site_name" content="incngrnt">
<meta property="og:title" content="incngrnt">
<meta property="og:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<meta property="og:locale" content="en_ca">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="incngrnt">
<meta name="twitter:description" content="Incngrnt is an experiment in host applications and services, usually run by huge corporations, on a small community scale. Using cloud technologies to enhance redundancy and maintainability while keeping as much as possible hosted locally.
This project provides modern applications and services for friends and family, offering the convenience of cloud-based tools without sacrificing data privacy.
The current instance, cheekily names Fog, is a Kubernetes cluster of 3 Talos Linux nodes. It uses Ceph as the storage layer and Metallb and Traefik for networking. The whole cluster has a has backup batteries in the event of a power failure. All configuration and setup docs live in a self-hosted git repo running directly on Fog.">
<link rel="preload" href="http://localhost:1313/fonts/Ubuntu-Regular.woff2" as="font" type="font/woff2" crossorigin>
<style>
@importrt url(https://fonts.googleapis.com/css?family=Exo+2:200i);
.title {
font-size: 24px;
font-family: 'Exo 2', sans-serif;
font-weight: lighter;
}
.title .flicker {
animation: flicker 3s linear infinite;
}
@keyframes flicker {
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% {
opacity: .1;
}
20%, 21.999%, 63%, 63.999%, 65%, 69.999% {
opacity: 0.99;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="incngrnt">
</head>
<body>
<script>
const siteTheme = "auto";
let savedTheme = localStorage.getItem('theme') || siteTheme;
if (savedTheme == 'auto') {
if ( window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ) {
savedTheme = 'dark';
}
}
if (savedTheme === "dark") {
document.body.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
</script>
<div class="content">
<header>
<a class="title" href="/">
<img loading="lazy"
src="/incngrnt.webp"
alt="Site Logo" />
</a>
<div class="header-cntr">
<a class="title" href="/">
<span><span>inc</span><span class='flicker'>o</span><span>ngr</span><span class='flicker'>ue</span><span>nt</span></span>
</a>
<div class="menu">
<nav id="main-menu" class="mm-normal">
<ul>
<li> <button id="mob-x-icon" class="menu-btn" arial-label="x-icon">
<svg xmlns="http://www.w3.org/2000/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.3L54.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>
</button> </li>
<li><a href="/behind-incngrnt/" aria-label="behind-icngrnt">
Behind icngrnt</li></a>
<li><a href="https://git.incngrnt.ca/grant" aria-label="Gitea">
<span>
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m5.583 7.229c-2.464-.005-5.755 1.557-5.573 5.479.281 6.125 6.557 6.693 9.068 6.745.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-.38 10.036-17.365 6.854-17.427-5.271.25-8.396.375-11.073.396v5.297l-.839-.365-.005-4.932c-3.073 0-5.781-.141-10.917-.396-.646-.005-1.542-.115-2.5-.115zm.344 2.167h.297c.349 3.141.917 4.974 2.068 7.781-2.938-.349-5.432-1.198-5.891-4.38-.24-1.646.563-3.365 3.526-3.401zm11.412 3.083c.198.005.406.042.594.13l1 .432-.714 1.302c-.109 0-.219.016-.323.052-.464.151-.708.604-.542 1.021.036.083.089.161.151.229l-1.234 2.25c-.099 0-.203.016-.297.052-.464.146-.708.604-.542 1.016.172.417.682.63 1.151.479.464-.146.703-.604.536-1.021-.047-.109-.115-.208-.208-.292l1.203-2.188c.13.01.26 0 .391-.042.104-.031.198-.083.281-.151.464.198.844.354 1.12.49.406.203.552.339.599.49.042.146-.005.427-.24.922-.172.37-.458.896-.797 1.51-.115 0-.229.016-.333.052-.469.151-.708.604-.542 1.021.167.411.682.625 1.146.479.469-.151.708-.604.542-1.021-.042-.099-.104-.193-.182-.271.333-.609.62-1.135.807-1.526.25-.536.38-.938.266-1.323s-.469-.635-.932-.865c-.307-.151-.693-.313-1.146-.505.005-.109-.01-.214-.052-.318s-.109-.198-.193-.281l.703-1.281 3.901 1.682c.703.307.995 1.057.651 1.682l-2.682 4.906c-.339.625-1.182.885-1.885.578l-5.516-2.38c-.703-.307-.995-1.057-.656-1.682l2.682-4.906c.234-.432.708-.688 1.208-.708h.083z"/></svg>
</span>
</li></a>
</ul>
</nav>
<div class="side-menu">
<div id="search-container" data-url="http://localhost:1313/">
<div class="search">
<div class="panel">
<form>
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.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>
<input type="search" id="search-query" placeholder="Search" tabindex=0 autocomplete="off"/>
<button id="search-close" title="Cancel (ESC)">
<svg xmlns="http://www.w3.org/2000/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.3L54.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>
</button>
</form>
</div>
<ul id="search-results">
</ul>
</div>
</div>
<button id="theme-switcher" class="menu-btn" aria-label="Theme switcher">
<div id="moon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.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.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
</div>
<div id="sun">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.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-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
</div>
</button>
</div>
<button id="mob-hb-icon" class="menu-btn" aria-label="Hamburger icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
</button>
</div>
<script>
(function() {
document.addEventListener('DOMContentLoaded', function() {
const openBtn = document.getElementById('mob-hb-icon');
const closeBtn = document.getElementById('mob-x-icon');
const mainMenu = document.getElementById('main-menu');
const body = document.body;
openBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-normal', 'mm-mobile-open');
closeBtn.style.display = 'block';
body.style.overflow = 'hidden';
});
closeBtn.addEventListener('click', function() {
mainMenu.classList.replace('mm-mobile-open', 'mm-normal');
closeBtn.style.display = 'none';
body.style.overflow = '';
});
})
})();
</script>
<script>
(function() {
var mainmenu = document.getElementById('main-menu');
if (!mainmenu) return;
var path = window.location.pathname;
var links = mainmenu.querySelectorAll('a');
links.forEach(function(link) {
if (link.getAttribute('href') === path) {
link.classList.add('active');
}
});
})();
</script>
</div>
</header>
<main>
<span class="headline">Just a little different</span>
<p>Incngrnt is an experiment in host applications and services, usually run by huge
corporations, on a small community scale. Using cloud technologies to enhance
redundancy and maintainability while keeping as much as possible hosted locally.</p>
<p>This project provides modern applications and services for friends and family,
offering the convenience of cloud-based tools without sacrificing data privacy.</p>
<p>The current instance, cheekily names Fog, is a <a href="https://kubernetes.io/" target="_blank">Kubernetes</a>
cluster of 3 <a href="https://www.talos.dev/" target="_blank">Talos Linux</a>
nodes. It uses <a href="https://ceph.io/en/" target="_blank">Ceph</a>
as the storage layer and <a href="https://metallb.io/" target="_blank">Metallb</a>
and
<a href="https://traefik.io/traefik/" target="_blank">Traefik</a>
for networking. The whole cluster has a has backup
<a href="https://www.ecoflow.com/ca" target="_blank">batteries</a>
in the event of a power failure. All configuration
and setup docs live in a self-hosted <a href="https://git.incngrnt.ca/grant/fog" target="_blank">git repo</a>
running directly on Fog.</p>
</main>
<footer>
<div class="copyright">
© 2025 Grant Hunter
</div>
<div class="attribution">
Built with <a href="https://gohugo.io" target="_blank">Hugo</a> & <a href="https://github.com/mnjm/kayal" target="_blank">Kayal</a>
</div>
</footer>
</div>
</body>
</html>