Files

3724 lines
73 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Single source of truth for the homelab">
<link rel="canonical" href="http://192.168.1.8:13080/infra/connection-hosts/">
<link rel="prev" href="../docker-networks/">
<link rel="next" href="../proxmox-memory-audit/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>Connection hosts - nuclide.systems docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="blue">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#connection-hosts-nuclidesystems" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="nuclide.systems docs" class="md-header__button md-logo" aria-label="nuclide.systems docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
nuclide.systems docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Connection hosts
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_1">
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../CHANGELOG/" class="md-tabs__link">
Changelog
</a>
</li>
<li class="md-tabs__item">
<a href="../../RESUME/" class="md-tabs__link">
Resume
</a>
</li>
<li class="md-tabs__item">
<a href="../../ct-inventory/" class="md-tabs__link">
CT inventory
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../proxmox-state/" class="md-tabs__link">
Infra
</a>
</li>
<li class="md-tabs__item">
<a href="../../services/homelab-architecture/" class="md-tabs__link">
Services
</a>
</li>
<li class="md-tabs__item">
<a href="../../security/data-leak-audit-comparison/" class="md-tabs__link">
Security & audits
</a>
</li>
<li class="md-tabs__item">
<a href="../../ideas/stack-ideas/" class="md-tabs__link">
Ideas
</a>
</li>
<li class="md-tabs__item">
<a href="../../history/traefik-migration/" class="md-tabs__link">
History
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="nuclide.systems docs" class="md-nav__button md-logo" aria-label="nuclide.systems docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
nuclide.systems docs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../CHANGELOG/" class="md-nav__link">
<span class="md-ellipsis">
Changelog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../RESUME/" class="md-nav__link">
<span class="md-ellipsis">
Resume
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../ct-inventory/" class="md-nav__link">
<span class="md-ellipsis">
CT inventory
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Infra
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Infra
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../proxmox-state/" class="md-nav__link">
<span class="md-ellipsis">
Proxmox state
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../portmap/" class="md-nav__link">
<span class="md-ellipsis">
Port map
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../storage/" class="md-nav__link">
<span class="md-ellipsis">
Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../volumes/" class="md-nav__link">
<span class="md-ellipsis">
Volumes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../docker-networks/" class="md-nav__link">
<span class="md-ellipsis">
Docker networks
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Connection hosts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Connection hosts
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#network-infrastructure" class="md-nav__link">
<span class="md-ellipsis">
Network infrastructure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-ve-host-nuc" class="md-nav__link">
<span class="md-ellipsis">
Proxmox VE host — nuc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lxc-vm-guests" class="md-nav__link">
<span class="md-ellipsis">
LXC / VM guests
</span>
</a>
<nav class="md-nav" aria-label="LXC / VM guests">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#vm-100-haos-home-assistant-os" class="md-nav__link">
<span class="md-ellipsis">
VM 100 — haos (Home Assistant OS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-101-shepard" class="md-nav__link">
<span class="md-ellipsis">
CT 101 — shepard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-102-dns-adguard-home" class="md-nav__link">
<span class="md-ellipsis">
CT 102 — dns (AdGuard Home)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-103-backrest" class="md-nav__link">
<span class="md-ellipsis">
CT 103 — backrest
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-104-docker-main-docker-host" class="md-nav__link">
<span class="md-ellipsis">
CT 104 — docker (main Docker host)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-105-nextcloud" class="md-nav__link">
<span class="md-ellipsis">
CT 105 — nextcloud
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-108-zoraxy-reverse-proxy" class="md-nav__link">
<span class="md-ellipsis">
CT 108 — zoraxy (reverse proxy)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-110-id-pocket-id-oidc" class="md-nav__link">
<span class="md-ellipsis">
CT 110 — id (Pocket-ID OIDC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-111-dev-coder-gitea" class="md-nav__link">
<span class="md-ellipsis">
CT 111 — dev (Coder + Gitea)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-112-secrets-infisical" class="md-nav__link">
<span class="md-ellipsis">
CT 112 — secrets (Infisical)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-113-db-shared-postgres" class="md-nav__link">
<span class="md-ellipsis">
CT 113 — db (shared Postgres)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docker-services-ct-104" class="md-nav__link">
<span class="md-ellipsis">
Docker services — CT 104
</span>
</a>
<nav class="md-nav" aria-label="Docker services — CT 104">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#infrastructure-1000010999" class="md-nav__link">
<span class="md-ellipsis">
Infrastructure (1000010999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#security-auth-1100011999" class="md-nav__link">
<span class="md-ellipsis">
Security &amp; Auth (1100011999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#media-immich-1200012999" class="md-nav__link">
<span class="md-ellipsis">
Media — Immich (1200012999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#media-downloads-arr-1300013999" class="md-nav__link">
<span class="md-ellipsis">
Media — Downloads / Arr (1300013999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ai-stack-1400014999-8080-18xxx" class="md-nav__link">
<span class="md-ellipsis">
AI Stack (1400014999, 8080, 18xxx)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#documents-1500015999" class="md-nav__link">
<span class="md-ellipsis">
Documents (1500015999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#automation-1600016999" class="md-nav__link">
<span class="md-ellipsis">
Automation (1600016999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#notes-bookmarks-1700017999" class="md-nav__link">
<span class="md-ellipsis">
Notes &amp; Bookmarks (1700017999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#storage-admin-2000020999" class="md-nav__link">
<span class="md-ellipsis">
Storage Admin (2000020999)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#external-hardware" class="md-nav__link">
<span class="md-ellipsis">
External hardware
</span>
</a>
<nav class="md-nav" aria-label="External hardware">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#qnap-unas-pro-nfssmb-server" class="md-nav__link">
<span class="md-ellipsis">
QNAP UNAS Pro — NFS/SMB server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#qnap-ts-251d-klipper-3d-printer-host" class="md-nav__link">
<span class="md-ellipsis">
QNAP TS-251D — Klipper 3D printer host
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#oidc-clients-pocket-id-idnuclidesystems" class="md-nav__link">
<span class="md-ellipsis">
OIDC clients — Pocket-ID (id.nuclide.systems)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference-all-public-urls" class="md-nav__link">
<span class="md-ellipsis">
Quick-reference — all public URLs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ssh-cheat-sheet" class="md-nav__link">
<span class="md-ellipsis">
SSH cheat-sheet
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../proxmox-memory-audit/" class="md-nav__link">
<span class="md-ellipsis">
Memory audit
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Services
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Services
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../services/homelab-architecture/" class="md-nav__link">
<span class="md-ellipsis">
Homelab architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/dev-environment/" class="md-nav__link">
<span class="md-ellipsis">
Dev environment (Coder + Gitea)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/mcp-gateway/" class="md-nav__link">
<span class="md-ellipsis">
MCP gateway
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/mcp-servers/" class="md-nav__link">
<span class="md-ellipsis">
MCP servers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/pocket-id/" class="md-nav__link">
<span class="md-ellipsis">
Pocket-ID (OIDC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/backrest/" class="md-nav__link">
<span class="md-ellipsis">
Backrest (backups)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/databases/" class="md-nav__link">
<span class="md-ellipsis">
Databases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/secrets-manager/" class="md-nav__link">
<span class="md-ellipsis">
Secrets manager
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/comfyui/" class="md-nav__link">
<span class="md-ellipsis">
ComfyUI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/zoraxy/" class="md-nav__link">
<span class="md-ellipsis">
Zoraxy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/adguard-dns/" class="md-nav__link">
<span class="md-ellipsis">
AdGuard DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/cloud-gpu/" class="md-nav__link">
<span class="md-ellipsis">
Cloud GPU
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/arcane/" class="md-nav__link">
<span class="md-ellipsis">
Arcane
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/doc-ingestion/" class="md-nav__link">
<span class="md-ellipsis">
Doc ingestion pipeline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../services/llm-benchmark/" class="md-nav__link">
<span class="md-ellipsis">
LLM benchmark
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Security & audits
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Security & audits
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-comparison/" class="md-nav__link">
<span class="md-ellipsis">
Comparison
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-2026-05-20-tr004-cloud-sandbox/" class="md-nav__link">
<span class="md-ellipsis">
2026-05-20 · cloud-sandbox breach
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-2026-05-21-tr004-artifacts/" class="md-nav__link">
<span class="md-ellipsis">
2026-05-21 · artifacts (clean)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/audit-claude-code-meta/" class="md-nav__link">
<span class="md-ellipsis">
Self-audit (Claude Code)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/transcripts/audit-chat-2026-05-21/" class="md-nav__link">
<span class="md-ellipsis">
Transcript (audit session)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Ideas
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Ideas
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../ideas/stack-ideas/" class="md-nav__link">
<span class="md-ellipsis">
Stack ideas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
History
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
History
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../history/traefik-migration/" class="md-nav__link">
<span class="md-ellipsis">
Traefik (abandoned 2026-05-16)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/traefik-migration-docker-labels/" class="md-nav__link">
<span class="md-ellipsis">
Traefik labels (abandoned)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/mcp-gateway-requirements/" class="md-nav__link">
<span class="md-ellipsis">
MCP gateway requirements (superseded)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/scrubbing-list-2026-05-17/" class="md-nav__link">
<span class="md-ellipsis">
Scrubbing list (2026-05-17)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/case-study/" class="md-nav__link">
<span class="md-ellipsis">
Case study
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#network-infrastructure" class="md-nav__link">
<span class="md-ellipsis">
Network infrastructure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-ve-host-nuc" class="md-nav__link">
<span class="md-ellipsis">
Proxmox VE host — nuc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lxc-vm-guests" class="md-nav__link">
<span class="md-ellipsis">
LXC / VM guests
</span>
</a>
<nav class="md-nav" aria-label="LXC / VM guests">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#vm-100-haos-home-assistant-os" class="md-nav__link">
<span class="md-ellipsis">
VM 100 — haos (Home Assistant OS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-101-shepard" class="md-nav__link">
<span class="md-ellipsis">
CT 101 — shepard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-102-dns-adguard-home" class="md-nav__link">
<span class="md-ellipsis">
CT 102 — dns (AdGuard Home)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-103-backrest" class="md-nav__link">
<span class="md-ellipsis">
CT 103 — backrest
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-104-docker-main-docker-host" class="md-nav__link">
<span class="md-ellipsis">
CT 104 — docker (main Docker host)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-105-nextcloud" class="md-nav__link">
<span class="md-ellipsis">
CT 105 — nextcloud
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-108-zoraxy-reverse-proxy" class="md-nav__link">
<span class="md-ellipsis">
CT 108 — zoraxy (reverse proxy)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-110-id-pocket-id-oidc" class="md-nav__link">
<span class="md-ellipsis">
CT 110 — id (Pocket-ID OIDC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-111-dev-coder-gitea" class="md-nav__link">
<span class="md-ellipsis">
CT 111 — dev (Coder + Gitea)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-112-secrets-infisical" class="md-nav__link">
<span class="md-ellipsis">
CT 112 — secrets (Infisical)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ct-113-db-shared-postgres" class="md-nav__link">
<span class="md-ellipsis">
CT 113 — db (shared Postgres)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docker-services-ct-104" class="md-nav__link">
<span class="md-ellipsis">
Docker services — CT 104
</span>
</a>
<nav class="md-nav" aria-label="Docker services — CT 104">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#infrastructure-1000010999" class="md-nav__link">
<span class="md-ellipsis">
Infrastructure (1000010999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#security-auth-1100011999" class="md-nav__link">
<span class="md-ellipsis">
Security &amp; Auth (1100011999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#media-immich-1200012999" class="md-nav__link">
<span class="md-ellipsis">
Media — Immich (1200012999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#media-downloads-arr-1300013999" class="md-nav__link">
<span class="md-ellipsis">
Media — Downloads / Arr (1300013999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ai-stack-1400014999-8080-18xxx" class="md-nav__link">
<span class="md-ellipsis">
AI Stack (1400014999, 8080, 18xxx)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#documents-1500015999" class="md-nav__link">
<span class="md-ellipsis">
Documents (1500015999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#automation-1600016999" class="md-nav__link">
<span class="md-ellipsis">
Automation (1600016999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#notes-bookmarks-1700017999" class="md-nav__link">
<span class="md-ellipsis">
Notes &amp; Bookmarks (1700017999)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#storage-admin-2000020999" class="md-nav__link">
<span class="md-ellipsis">
Storage Admin (2000020999)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#external-hardware" class="md-nav__link">
<span class="md-ellipsis">
External hardware
</span>
</a>
<nav class="md-nav" aria-label="External hardware">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#qnap-unas-pro-nfssmb-server" class="md-nav__link">
<span class="md-ellipsis">
QNAP UNAS Pro — NFS/SMB server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#qnap-ts-251d-klipper-3d-printer-host" class="md-nav__link">
<span class="md-ellipsis">
QNAP TS-251D — Klipper 3D printer host
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#oidc-clients-pocket-id-idnuclidesystems" class="md-nav__link">
<span class="md-ellipsis">
OIDC clients — Pocket-ID (id.nuclide.systems)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference-all-public-urls" class="md-nav__link">
<span class="md-ellipsis">
Quick-reference — all public URLs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ssh-cheat-sheet" class="md-nav__link">
<span class="md-ellipsis">
SSH cheat-sheet
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="connection-hosts-nuclidesystems">Connection Hosts — nuclide.systems<a class="headerlink" href="#connection-hosts-nuclidesystems" title="Permanent link">&para;</a></h1>
<p>Maintained reference for every host, LAN address, port, and public URL.
<strong>Last verified: 2026-05-23.</strong></p>
<blockquote>
<p>Source of truth: <a href="../../ct-inventory/"><code>ct-inventory.md</code></a> (guests) · <a href="../portmap/"><code>portmap.md</code></a> (Docker ports) · <a href="../../services/homelab-architecture/"><code>homelab-architecture.md</code></a> (topology).</p>
</blockquote>
<hr />
<h2 id="network-infrastructure">Network infrastructure<a class="headerlink" href="#network-infrastructure" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Device</th>
<th>LAN IP</th>
<th>Admin UI</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>UDM Home</strong> (UCG Fiber, UniFi OS 5.0.16)</td>
<td><code>192.168.1.1</code></td>
<td><code>https://192.168.1.1</code> (SSO + MFA)</td>
<td>Gateway, DNS forwarder → AdGuard; port-forwards 80/443 → Zoraxy (<code>.4</code>), 15001 TCP/UDP → CT 104</td>
</tr>
<tr>
<td><strong>D-Link DGS-1210-28P</strong></td>
<td><code>192.168.1.10</code></td>
<td><code>http://192.168.1.10</code> (HTTP-only, pw: <code>tapirnase</code>)</td>
<td>28-port PoE switch — physical core. UDM on port 26, CT 104 cluster on port 10, APs on ports 3 &amp; 16. SNTP fixed 2026-05-19.</td>
</tr>
<tr>
<td><strong>UNAS Pro</strong> (NFS server)</td>
<td><code>192.168.1.31</code></td>
<td><code>http://192.168.1.31</code></td>
<td>NFSv3 export: <code>192.168.1.31:/var/nfs/shared/storage</code> (→ <code>/mnt/pve/unas</code>). ~19 T bulk storage.</td>
</tr>
<tr>
<td><strong>UniFi U7 APs</strong></td>
<td><code>.50</code> <code>.51</code> <code>.52</code> <code>.53</code></td>
<td>via UDM</td>
<td>Hallway, In-wall, Bedroom (Schlafzimmer), Dining (Esszimmer). SSID: <code>nuclide</code>, WPA2/WPA3.</td>
</tr>
<tr>
<td><strong>TP-Link RE700X</strong></td>
<td><code>192.168.1.187</code></td>
<td><code>http://192.168.1.187</code></td>
<td>WiFi extender — NATs devices behind it (3D printer <code>.189</code> invisible to UniFi).</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="proxmox-ve-host-nuc">Proxmox VE host — <code>nuc</code><a class="headerlink" href="#proxmox-ve-host-nuc" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.20</code></td>
</tr>
<tr>
<td><strong>Admin UI</strong></td>
<td><code>https://192.168.1.20:8006</code> (OIDC via Pocket-ID client <code>38469e7e</code>)</td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.20</code> (key auth)</td>
</tr>
<tr>
<td><strong>Hardware</strong></td>
<td>Intel Core Ultra 7 155H · 22 threads · 64 GiB RAM · PVE 9.1.11</td>
</tr>
<tr>
<td><strong>Storage</strong></td>
<td><code>local-zfs</code> ~1.9 T (NVMe), <code>local</code> (dir), <code>unas</code> (NFS ~19 T)</td>
</tr>
<tr>
<td><strong>API token</strong></td>
<td><code>root@pam!mcp</code> (PVEAuditor role, read-only)</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="lxc-vm-guests">LXC / VM guests<a class="headerlink" href="#lxc-vm-guests" title="Permanent link">&para;</a></h2>
<h3 id="vm-100-haos-home-assistant-os">VM 100 — <code>haos</code> (Home Assistant OS)<a class="headerlink" href="#vm-100-haos-home-assistant-os" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.60</code> (DHCP, stable)</td>
</tr>
<tr>
<td><strong>HA UI</strong></td>
<td><code>https://ha.nuclide.systems</code><code>192.168.1.60:8123</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.60</code> (key installed manually in HA terminal)</td>
</tr>
<tr>
<td><strong>OCPP</strong></td>
<td><code>https://ocpp.nuclide.systems</code><code>192.168.1.60:8887</code></td>
</tr>
<tr>
<td><strong>HA-MCP add-on</strong></td>
<td><code>http://192.168.1.60:9583/private_ehnWeRl2G3De6NnbcN7teQ</code> (gateway upstream, no TLS)</td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>4c / 16 GiB (balloon 4 GiB) / 32 GiB; USB Zigbee dongle passed through</td>
</tr>
</tbody>
</table>
<h3 id="ct-101-shepard">CT 101 — <code>shepard</code><a class="headerlink" href="#ct-101-shepard" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.49</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.49</code></td>
</tr>
<tr>
<td><strong>Public</strong></td>
<td><code>https://shepard.nuclide.systems</code> (Caddy → <code>:80</code>) · <code>https://shepard-api.nuclide.systems</code> (→ <code>:8080</code>)</td>
</tr>
<tr>
<td><strong>MCP</strong></td>
<td><code>https://shepard.nuclide.systems/v2/mcp</code> (Bearer <code>${SHEPARD_API_KEY}</code>)</td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>12c / 32 GiB / 500 GiB + NFS; Intel iGPU (card+render)</td>
</tr>
<tr>
<td><strong>Stack</strong></td>
<td>Caddy, Shepard frontend/backend, Keycloak, Mongo, Neo4j, TimescaleDB</td>
</tr>
</tbody>
</table>
<h3 id="ct-102-dns-adguard-home">CT 102 — <code>dns</code> (AdGuard Home)<a class="headerlink" href="#ct-102-dns-adguard-home" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.2</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.2</code></td>
</tr>
<tr>
<td><strong>Admin UI</strong></td>
<td><code>http://192.168.1.2</code> (port 80)</td>
</tr>
<tr>
<td><strong>DNS</strong></td>
<td><code>192.168.1.2:53</code> — LAN resolver (UDM forwards all DNS here)</td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>2c / 1 GiB / 4 GiB</td>
</tr>
</tbody>
</table>
<h3 id="ct-103-backrest">CT 103 — <code>backrest</code><a class="headerlink" href="#ct-103-backrest" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.3</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.3</code></td>
</tr>
<tr>
<td><strong>UI</strong></td>
<td><code>http://192.168.1.3:9898</code> (LAN-only, no auth)</td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>1c / 512 MiB / 8 GiB + NFS (<code>/mnt/pve/unas</code>)</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>JottaCloud offsite via rclone; repos <code>services-repo</code> + <code>media-repo</code></td>
</tr>
</tbody>
</table>
<h3 id="ct-104-docker-main-docker-host">CT 104 — <code>docker</code> (main Docker host)<a class="headerlink" href="#ct-104-docker-main-docker-host" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.40</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.40</code></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>16c / 48 GiB / 200 GiB + NFS; Intel Arc iGPU (card+render)</td>
</tr>
<tr>
<td><strong>Role</strong></td>
<td>~65 containers across ~23 compose stacks in <code>/opt/stacks/</code></td>
</tr>
</tbody>
</table>
<p>See <a href="#docker-services--ct-104">Docker services table</a> below for all ports.</p>
<h3 id="ct-105-nextcloud">CT 105 — <code>nextcloud</code><a class="headerlink" href="#ct-105-nextcloud" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.41</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.41</code></td>
</tr>
<tr>
<td><strong>Public</strong></td>
<td><code>https://nc.nuclide.systems</code><code>192.168.1.41:11000</code></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>4c / 8 GiB / 100 GiB + NFS (migrated to NFSv3 2026-05-22)</td>
</tr>
<tr>
<td><strong>Auth</strong></td>
<td>Pocket-ID OIDC (client <code>a14b8076</code>)</td>
</tr>
</tbody>
</table>
<h3 id="ct-108-zoraxy-reverse-proxy">CT 108 — <code>zoraxy</code> (reverse proxy)<a class="headerlink" href="#ct-108-zoraxy-reverse-proxy" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.4</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.4</code></td>
</tr>
<tr>
<td><strong>Admin UI</strong></td>
<td><code>http://192.168.1.4:8000</code> (LAN only)</td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>2c / 2 GiB / 6 GiB</td>
</tr>
<tr>
<td><strong>Cert</strong></td>
<td>Wildcard <code>*.nuclide.systems</code> (ACME via Let's Encrypt)</td>
</tr>
<tr>
<td><strong>Config</strong></td>
<td><code>proxy/zoraxy/routes.json</code><code>scripts/zoraxy_sync.py --apply</code></td>
</tr>
</tbody>
</table>
<h3 id="ct-110-id-pocket-id-oidc">CT 110 — <code>id</code> (Pocket-ID OIDC)<a class="headerlink" href="#ct-110-id-pocket-id-oidc" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.5</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.5</code></td>
</tr>
<tr>
<td><strong>Public</strong></td>
<td><code>https://id.nuclide.systems</code><code>192.168.1.5:11000</code></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>1c / 1 GiB / 4 GiB</td>
</tr>
<tr>
<td><strong>OIDC endpoints</strong></td>
<td>Authorization: <code>https://id.nuclide.systems/authorize</code> · Token: <code>https://id.nuclide.systems/api/oidc/token</code> · Userinfo: <code>https://id.nuclide.systems/api/oidc/userinfo</code> · Discovery: <code>https://id.nuclide.systems/.well-known/openid-configuration</code></td>
</tr>
</tbody>
</table>
<h3 id="ct-111-dev-coder-gitea">CT 111 — <code>dev</code> (Coder + Gitea)<a class="headerlink" href="#ct-111-dev-coder-gitea" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.42</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.42</code></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>12c / 32 GiB / 60 GiB + NFS; Intel Arc iGPU (render)</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Port</th>
<th>Service</th>
<th>Public URL</th>
</tr>
</thead>
<tbody>
<tr>
<td>7080</td>
<td>Coder</td>
<td><code>https://dev.nuclide.systems</code></td>
</tr>
<tr>
<td>3000</td>
<td>Gitea</td>
<td><code>https://git.nuclide.systems</code></td>
</tr>
<tr>
<td>222</td>
<td>Gitea SSH</td>
<td><code>ssh -p 222 git@git.nuclide.systems</code></td>
</tr>
<tr>
<td>13080</td>
<td>docs site</td>
<td><code>http://192.168.1.42:13080</code> (LAN; mkdocs Material, auto-rebuild every 5 min)</td>
</tr>
<tr>
<td>internal</td>
<td>act-runner</td>
<td>— (<code>ct111-runner</code> Gitea Actions)</td>
</tr>
</tbody>
</table>
<h3 id="ct-112-secrets-infisical">CT 112 — <code>secrets</code> (Infisical)<a class="headerlink" href="#ct-112-secrets-infisical" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.7</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.7</code></td>
</tr>
<tr>
<td><strong>UI + API</strong></td>
<td><code>http://192.168.1.7:8200</code> <strong>(LAN-only — no Zoraxy route; must not be internet-exposed)</strong></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>2c / 4 GiB / 20 GiB</td>
</tr>
<tr>
<td><strong>Stack</strong></td>
<td><code>/opt/stacks/infisical/</code> — Infisical + Postgres 16 + Redis 7 (all internal, no external ports)</td>
</tr>
</tbody>
</table>
<h3 id="ct-113-db-shared-postgres">CT 113 — <code>db</code> (shared Postgres)<a class="headerlink" href="#ct-113-db-shared-postgres" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.6</code></td>
</tr>
<tr>
<td><strong>SSH</strong></td>
<td><code>ssh root@192.168.1.6</code></td>
</tr>
<tr>
<td><strong>Specs</strong></td>
<td>2c / 4 GiB / 40 GiB</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Port</th>
<th>Service</th>
<th>Access</th>
</tr>
</thead>
<tbody>
<tr>
<td>5432</td>
<td>Postgres 17</td>
<td>LAN: <code>192.168.1.6:5432</code> — tenants: LiteLLM, paperless, memos, n8n (reverted), Vaultwarden</td>
</tr>
<tr>
<td>5050</td>
<td>pgAdmin 4</td>
<td><code>http://192.168.1.6:5050</code> (LAN only, no Zoraxy route)</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="docker-services-ct-104">Docker services — CT 104<a class="headerlink" href="#docker-services-ct-104" title="Permanent link">&para;</a></h2>
<p>All on <code>192.168.1.40</code> unless noted. Zoraxy (<code>192.168.1.4</code>) terminates TLS for public URLs.</p>
<h3 id="infrastructure-1000010999">Infrastructure (1000010999)<a class="headerlink" href="#infrastructure-1000010999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>10000</td>
<td><code>homepage</code></td>
<td></td>
<td>Dashboard (LAN only)</td>
</tr>
<tr>
<td>10001</td>
<td><code>dozzle</code></td>
<td><code>https://dozzle.nuclide.systems</code></td>
<td>Log viewer</td>
</tr>
<tr>
<td>10002</td>
<td><code>arcane</code></td>
<td><code>https://arcane.nuclide.systems</code></td>
<td>Web IDE (OIDC <code>81cf4ed0</code>)</td>
</tr>
<tr>
<td>10003</td>
<td><code>gotify</code></td>
<td><code>https://gotify.nuclide.systems</code></td>
<td>Push notifications</td>
</tr>
<tr>
<td>10004</td>
<td><code>garage</code></td>
<td><code>https://s3.nuclide.systems</code></td>
<td>S3 API (Garage); internal: <code>http://garage:3900</code></td>
</tr>
<tr>
<td>10005 (localhost)</td>
<td><code>garage</code> admin</td>
<td></td>
<td>Localhost only</td>
</tr>
</tbody>
</table>
<h3 id="security-auth-1100011999">Security &amp; Auth (1100011999)<a class="headerlink" href="#security-auth-1100011999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>11001</td>
<td><code>vaultwarden</code></td>
<td><code>https://vault.nuclide.systems</code></td>
<td>Password manager (OIDC client created, SSO not yet wired)</td>
</tr>
</tbody>
</table>
<h3 id="media-immich-1200012999">Media — Immich (1200012999)<a class="headerlink" href="#media-immich-1200012999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>12000</td>
<td><code>immich_server</code></td>
<td><code>https://immich.nuclide.systems</code></td>
<td>Photos/videos (OIDC <code>9c91c18b</code>)</td>
</tr>
<tr>
<td>internal</td>
<td><code>immich_power_tools</code></td>
<td><code>https://immich-tools.nuclide.systems</code></td>
<td>Container-internal :3000, Zoraxy proxy</td>
</tr>
</tbody>
</table>
<h3 id="media-downloads-arr-1300013999">Media — Downloads / Arr (1300013999)<a class="headerlink" href="#media-downloads-arr-1300013999" title="Permanent link">&para;</a></h3>
<p>All behind <code>vpn_gluetun</code> container network.</p>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>13001</td>
<td><code>rdtclient</code></td>
<td></td>
<td>LAN only</td>
</tr>
<tr>
<td>13002</td>
<td><code>prowlarr</code></td>
<td></td>
<td>LAN only</td>
</tr>
<tr>
<td>13003</td>
<td><code>audiobookshelf</code></td>
<td><code>https://abs.nuclide.systems</code></td>
<td>OIDC <code>cbbf20d5</code></td>
</tr>
<tr>
<td>13004</td>
<td><code>shelfarr</code></td>
<td></td>
<td>LAN only (OIDC <code>d8733fcc</code>)</td>
</tr>
<tr>
<td>13005</td>
<td><code>flaresolverr</code></td>
<td></td>
<td>Internal only</td>
</tr>
<tr>
<td>30000</td>
<td><code>vpn_gluetun</code></td>
<td></td>
<td>VPN HTTP control API</td>
</tr>
</tbody>
</table>
<h3 id="ai-stack-1400014999-8080-18xxx">AI Stack (1400014999, 8080, 18xxx)<a class="headerlink" href="#ai-stack-1400014999-8080-18xxx" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>14000</td>
<td><code>litellm</code></td>
<td></td>
<td>LLM proxy (internal only: <code>http://litellm:4000</code>); master key: <code>sk-tapirnase</code></td>
</tr>
<tr>
<td>14001</td>
<td><code>lobehub</code></td>
<td><code>https://chat.nuclide.systems</code></td>
<td>Chat UI (OIDC <code>26f3c26b</code>)</td>
</tr>
<tr>
<td>14002</td>
<td><code>qdrant_scientific</code></td>
<td></td>
<td>Vector DB (LAN/internal only)</td>
</tr>
<tr>
<td>14003</td>
<td><code>bifrost</code></td>
<td><code>https://ai.nuclide.systems</code></td>
<td>LLM+MCP gateway; <code>/mcp</code> = MCP endpoint (29 clients, ~760 tools); master key: <code>sk-tapirnase</code></td>
</tr>
<tr>
<td>~~8080~~</td>
<td>~~<code>mcp-gateway</code>~~</td>
<td>~~<code>https://mcp.nuclide.systems</code>~~</td>
<td><strong>DECOMMISSIONED 2026-05-26</strong> — see <a href="../../services/mcp-gateway/">mcp-gateway.md</a></td>
</tr>
<tr>
<td>18002</td>
<td><code>comfyui</code></td>
<td></td>
<td>Image gen (Intel Arc); LAN only</td>
</tr>
<tr>
<td>18003</td>
<td><code>comfyui-mcp</code></td>
<td>via Bifrost <code>comfyui</code> client</td>
<td>FastMCP</td>
</tr>
<tr>
<td>18005</td>
<td><code>docling-mcp</code></td>
<td>via Bifrost <code>docling</code> client</td>
<td>PDF→Markdown</td>
</tr>
<tr>
<td>18007</td>
<td><code>kroki-mcp</code></td>
<td>via Bifrost <code>kroki</code> client</td>
<td>Diagram rendering</td>
</tr>
<tr>
<td>18009</td>
<td><code>speaches</code></td>
<td></td>
<td>TTS/STT; LAN only</td>
</tr>
<tr>
<td>18011</td>
<td><code>upload-artifact-mcp</code></td>
<td>via Bifrost <code>upload_artifact</code> client</td>
<td>S3 artifact upload</td>
</tr>
<tr>
<td>internal</td>
<td><code>searxng</code></td>
<td></td>
<td><code>shared_backend</code>; used by LobeChat</td>
</tr>
</tbody>
</table>
<h3 id="documents-1500015999">Documents (1500015999)<a class="headerlink" href="#documents-1500015999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>15000</td>
<td><code>traccar</code></td>
<td><code>https://traccar.nuclide.systems</code></td>
<td>GPS tracking UI</td>
</tr>
<tr>
<td>15001</td>
<td><code>traccar</code></td>
<td></td>
<td>TCP+UDP watch protocol (forwarded at UDM level)</td>
</tr>
<tr>
<td>15002</td>
<td><code>paperless-ai</code></td>
<td><code>https://paperless-ai.nuclide.systems</code></td>
<td>Internal-only Zoraxy policy</td>
</tr>
<tr>
<td>15003</td>
<td><code>paperless-ngx-webserver-1</code></td>
<td><code>https://paperless.nuclide.systems</code></td>
<td>Internal-only Zoraxy policy</td>
</tr>
</tbody>
</table>
<h3 id="automation-1600016999">Automation (1600016999)<a class="headerlink" href="#automation-1600016999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>16000</td>
<td><code>n8n</code></td>
<td><code>https://n8n.nuclide.systems</code></td>
<td>Workflow automation (OIDC <code>33135ad4</code>); SQLite local disk</td>
</tr>
</tbody>
</table>
<h3 id="notes-bookmarks-1700017999">Notes &amp; Bookmarks (1700017999)<a class="headerlink" href="#notes-bookmarks-1700017999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Public URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>17000</td>
<td><code>memos</code></td>
<td><code>https://memos.nuclide.systems</code></td>
<td>Notes (OIDC <code>62bf4e0d</code>)</td>
</tr>
<tr>
<td>17001</td>
<td><code>karakeep</code></td>
<td><code>https://hoarder.nuclide.systems</code></td>
<td>Bookmarks (OIDC <code>d92f82b0</code>)</td>
</tr>
</tbody>
</table>
<h3 id="storage-admin-2000020999">Storage Admin (2000020999)<a class="headerlink" href="#storage-admin-2000020999" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Port</th>
<th>Container</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>20010 (localhost)</td>
<td><code>pgadmin</code></td>
<td>shared-db pgAdmin, localhost only on CT 104</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="external-hardware">External hardware<a class="headerlink" href="#external-hardware" title="Permanent link">&para;</a></h2>
<h3 id="qnap-unas-pro-nfssmb-server">QNAP UNAS Pro — NFS/SMB server<a class="headerlink" href="#qnap-unas-pro-nfssmb-server" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.31</code></td>
</tr>
<tr>
<td><strong>Admin UI</strong></td>
<td><code>http://192.168.1.31</code></td>
</tr>
<tr>
<td><strong>NFS export</strong></td>
<td><code>192.168.1.31:/var/nfs/shared/storage</code> (NFSv3 only; v4 not available)</td>
</tr>
<tr>
<td><strong>CIFS</strong></td>
<td><code>//192.168.1.31/storage</code> (used by Nextcloud CT 105 only)</td>
</tr>
</tbody>
</table>
<h3 id="qnap-ts-251d-klipper-3d-printer-host">QNAP TS-251D — Klipper 3D printer host<a class="headerlink" href="#qnap-ts-251d-klipper-3d-printer-host" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP</strong></td>
<td><code>192.168.1.189</code> (behind TP-Link RE700X at <code>.187</code>)</td>
</tr>
<tr>
<td><strong>Mainsail</strong></td>
<td><code>http://192.168.1.189:80</code></td>
</tr>
<tr>
<td><strong>Moonraker</strong></td>
<td><code>http://192.168.1.189:7125</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Klipper config backed up daily to <code>git.nuclide.systems/fkrebs/klipper-config</code> via cron</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="oidc-clients-pocket-id-idnuclidesystems">OIDC clients — Pocket-ID (<code>id.nuclide.systems</code>)<a class="headerlink" href="#oidc-clients-pocket-id-idnuclidesystems" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Client ID</th>
<th>Service</th>
<th>Redirect URI</th>
</tr>
</thead>
<tbody>
<tr>
<td>~~<code>e73bb7b9</code>~~</td>
<td>~~litellm / mcp-gateway~~</td>
<td><strong>DELETED 2026-05-26</strong></td>
</tr>
<tr>
<td><code>26f3c26b</code></td>
<td>lobehub</td>
<td><code>https://chat.nuclide.systems/api/auth/callback/generic-oidc</code></td>
</tr>
<tr>
<td><code>81cf4ed0</code></td>
<td>arcane</td>
<td><code>https://arcane.nuclide.systems/auth/oidc/callback</code></td>
</tr>
<tr>
<td><code>33135ad4</code></td>
<td>n8n</td>
<td><code>https://n8n.nuclide.systems/auth/oidc/callback</code></td>
</tr>
<tr>
<td><code>9c91c18b</code></td>
<td>immich</td>
<td><code>https://immich.nuclide.systems/auth/login</code> + mobile</td>
</tr>
<tr>
<td><code>62bf4e0d</code></td>
<td>memos</td>
<td><code>https://memos.nuclide.systems/auth/callback</code></td>
</tr>
<tr>
<td><code>d92f82b0</code></td>
<td>karakeep</td>
<td><code>https://hoarder.nuclide.systems/api/auth/callback/custom</code></td>
</tr>
<tr>
<td><code>a14b8076</code></td>
<td>nextcloud</td>
<td><code>https://nc.nuclide.systems/apps/user_oidc/code</code></td>
</tr>
<tr>
<td><code>0aee4280</code></td>
<td>Coder</td>
<td><code>https://dev.nuclide.systems/api/v2/users/oidc/callback</code></td>
</tr>
<tr>
<td><code>9444609e</code></td>
<td>Gitea</td>
<td><code>https://git.nuclide.systems/user/oauth2/pocket-id/callback</code></td>
</tr>
<tr>
<td><code>38469e7e</code></td>
<td>Proxmox VE</td>
<td><code>https://192.168.1.20:8006</code></td>
</tr>
<tr>
<td><code>cbbf20d5</code></td>
<td>Audiobookshelf</td>
<td><code>https://abs.nuclide.systems/…</code> + <code>*</code></td>
</tr>
<tr>
<td><code>d8733fcc</code></td>
<td>shelfarr</td>
<td><code>*</code></td>
</tr>
<tr>
<td>~~<code>78c78998</code>~~</td>
<td>~~Claude MCP (legacy)~~</td>
<td><strong>DELETED 2026-05-26</strong></td>
</tr>
<tr>
<td><code>82ca2d53</code></td>
<td>nuc-ai (MCP spawned servers)</td>
<td>(empty)</td>
</tr>
<tr>
<td><code>7fe1a14b</code></td>
<td>zoraxy</td>
<td>(empty)</td>
</tr>
<tr>
<td>(new)</td>
<td>vaultwarden</td>
<td><code>https://vault.nuclide.systems/auth/callback</code> — SSO not yet wired</td>
</tr>
<tr>
<td>~~798a367f~~</td>
<td>~~daytona~~</td>
<td><strong>DECOMMISSIONED — remove from Pocket-ID</strong></td>
</tr>
</tbody>
</table>
<hr />
<h2 id="quick-reference-all-public-urls">Quick-reference — all public URLs<a class="headerlink" href="#quick-reference-all-public-urls" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>URL</th>
<th>Backend</th>
<th>Service</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>https://ai.nuclide.systems</code></td>
<td><code>192.168.1.40:14003</code></td>
<td>Bifrost (LLM+MCP gateway) — <code>/mcp</code> for MCP tools</td>
</tr>
<tr>
<td><code>https://chat.nuclide.systems</code></td>
<td><code>192.168.1.40:14001</code></td>
<td>LobeChat</td>
</tr>
<tr>
<td>~~<code>https://mcp.nuclide.systems</code>~~</td>
<td>~~<code>192.168.1.40:8080</code>~~</td>
<td><strong>DECOMMISSIONED 2026-05-26</strong></td>
</tr>
<tr>
<td><code>https://id.nuclide.systems</code></td>
<td><code>192.168.1.5:11000</code></td>
<td>Pocket-ID (OIDC)</td>
</tr>
<tr>
<td><code>https://nc.nuclide.systems</code></td>
<td><code>192.168.1.41:11000</code></td>
<td>Nextcloud</td>
</tr>
<tr>
<td><code>https://ha.nuclide.systems</code></td>
<td><code>192.168.1.60:8123</code></td>
<td>Home Assistant</td>
</tr>
<tr>
<td><code>https://ocpp.nuclide.systems</code></td>
<td><code>192.168.1.60:8887</code></td>
<td>EV charger OCPP</td>
</tr>
<tr>
<td><code>https://shepard.nuclide.systems</code></td>
<td><code>192.168.1.49:80</code></td>
<td>Shepard</td>
</tr>
<tr>
<td><code>https://shepard-api.nuclide.systems</code></td>
<td><code>192.168.1.49:8080</code></td>
<td>Shepard API</td>
</tr>
<tr>
<td><code>https://dev.nuclide.systems</code></td>
<td><code>192.168.1.42:7080</code></td>
<td>Coder</td>
</tr>
<tr>
<td><code>https://git.nuclide.systems</code></td>
<td><code>192.168.1.42:3000</code></td>
<td>Gitea</td>
</tr>
<tr>
<td><code>https://arcane.nuclide.systems</code></td>
<td><code>192.168.1.40:10002</code></td>
<td>Arcane</td>
</tr>
<tr>
<td><code>https://dozzle.nuclide.systems</code></td>
<td><code>192.168.1.40:10001</code></td>
<td>Dozzle (logs)</td>
</tr>
<tr>
<td><code>https://gotify.nuclide.systems</code></td>
<td><code>192.168.1.40:10003</code></td>
<td>Gotify</td>
</tr>
<tr>
<td><code>https://s3.nuclide.systems</code></td>
<td><code>192.168.1.40:10004</code></td>
<td>Garage S3</td>
</tr>
<tr>
<td><code>https://vault.nuclide.systems</code></td>
<td><code>192.168.1.40:11001</code></td>
<td>Vaultwarden</td>
</tr>
<tr>
<td><code>https://immich.nuclide.systems</code></td>
<td><code>192.168.1.40:12000</code></td>
<td>Immich</td>
</tr>
<tr>
<td><code>https://immich-tools.nuclide.systems</code></td>
<td><code>192.168.1.40</code> (internal)</td>
<td>Immich Power Tools</td>
</tr>
<tr>
<td><code>https://abs.nuclide.systems</code></td>
<td><code>192.168.1.40:13003</code></td>
<td>Audiobookshelf</td>
</tr>
<tr>
<td><code>https://n8n.nuclide.systems</code></td>
<td><code>192.168.1.40:16000</code></td>
<td>n8n</td>
</tr>
<tr>
<td><code>https://memos.nuclide.systems</code></td>
<td><code>192.168.1.40:17000</code></td>
<td>Memos</td>
</tr>
<tr>
<td><code>https://hoarder.nuclide.systems</code></td>
<td><code>192.168.1.40:17001</code></td>
<td>Karakeep</td>
</tr>
<tr>
<td><code>https://traccar.nuclide.systems</code></td>
<td><code>192.168.1.40:15000</code></td>
<td>Traccar</td>
</tr>
<tr>
<td><code>https://paperless.nuclide.systems</code></td>
<td><code>192.168.1.40:15003</code></td>
<td>Paperless-ngx (internal-only policy)</td>
</tr>
<tr>
<td><code>https://paperless-ai.nuclide.systems</code></td>
<td><code>192.168.1.40:15002</code></td>
<td>Paperless AI (internal-only policy)</td>
</tr>
</tbody>
</table>
<p><strong>Not publicly proxied</strong> (LAN/localhost only): pgAdmin, ComfyUI, Qdrant, RDTClient, Prowlarr, ShelfArr, Flaresolverr, Speaches, AdGuard admin, Backrest UI, Infisical.</p>
<hr />
<h2 id="ssh-cheat-sheet">SSH cheat-sheet<a class="headerlink" href="#ssh-cheat-sheet" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>ssh<span class="w"> </span>root@192.168.1.20<span class="w"> </span><span class="c1"># PVE host (nuc)</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>ssh<span class="w"> </span>root@192.168.1.40<span class="w"> </span><span class="c1"># CT 104 docker</span>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>ssh<span class="w"> </span>root@192.168.1.41<span class="w"> </span><span class="c1"># CT 105 nextcloud</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>ssh<span class="w"> </span>root@192.168.1.42<span class="w"> </span><span class="c1"># CT 111 dev</span>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>ssh<span class="w"> </span>root@192.168.1.49<span class="w"> </span><span class="c1"># CT 101 shepard</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>ssh<span class="w"> </span>root@192.168.1.2<span class="w"> </span><span class="c1"># CT 102 dns (AdGuard)</span>
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>ssh<span class="w"> </span>root@192.168.1.3<span class="w"> </span><span class="c1"># CT 103 backrest</span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a>ssh<span class="w"> </span>root@192.168.1.4<span class="w"> </span><span class="c1"># CT 108 zoraxy</span>
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>ssh<span class="w"> </span>root@192.168.1.5<span class="w"> </span><span class="c1"># CT 110 id (Pocket-ID)</span>
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a>ssh<span class="w"> </span>root@192.168.1.6<span class="w"> </span><span class="c1"># CT 113 db (Postgres)</span>
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a>ssh<span class="w"> </span>root@192.168.1.7<span class="w"> </span><span class="c1"># CT 112 secrets (Infisical)</span>
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a>ssh<span class="w"> </span>root@192.168.1.60<span class="w"> </span><span class="c1"># VM 100 haos (Home Assistant — key must be installed manually)</span>
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a>ssh<span class="w"> </span>-p<span class="w"> </span><span class="m">222</span><span class="w"> </span>git@git.nuclide.systems<span class="w"> </span><span class="c1"># Gitea SSH</span>
</code></pre></div>
<p>All LXCs reachable from <code>nuc</code> host via root key. Use <code>pct exec &lt;id&gt; -- bash</code> for console access without SSH.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.highlight", "search.suggest", "content.code.copy"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>