@celilo/e2e 0.7.11 → 0.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.celilo-website-cache/_astro/docs.DwsUauWZ.css +1 -0
- package/.celilo-website-cache/_astro/network.BB0RR2mM.css +1 -0
- package/.celilo-website-cache/diagrams/physical.svg +1 -0
- package/.celilo-website-cache/diagrams/zone-topology.svg +1 -0
- package/.celilo-website-cache/docs/index.html +250 -0
- package/.celilo-website-cache/docs/network/index.html +300 -0
- package/.celilo-website-cache/favicon.svg +4 -0
- package/.celilo-website-cache/fonts/theia-300.otf +0 -0
- package/.celilo-website-cache/fonts/theia-400.otf +0 -0
- package/.celilo-website-cache/fonts/theia-500.otf +0 -0
- package/.celilo-website-cache/index.html +93 -0
- package/.celilo-website-cache/install.sh +330 -0
- package/.celilo-website-cache/modules/index.html +86 -0
- package/.celilo-website-cache/modules/view/index.html +69 -0
- package/.celilo-website-cache/vision/index.html +121 -0
- package/.npm-registry-cache/celilo-capabilities-0.1.10.tgz +0 -0
- package/.npm-registry-cache/celilo-cli-0.3.30.tgz +0 -0
- package/.npm-registry-cache/celilo-cli-display-0.1.9.tgz +0 -0
- package/.npm-registry-cache/celilo-e2e-0.7.12.tgz +0 -0
- package/.npm-registry-cache/celilo-event-bus-0.1.4.tgz +0 -0
- package/netapps/authentik.netapp +0 -0
- package/netapps/caddy.netapp +0 -0
- package/netapps/celilo-website.netapp +0 -0
- package/netapps/greenwave.netapp +0 -0
- package/netapps/homebridge.netapp +0 -0
- package/netapps/iptables.netapp +0 -0
- package/netapps/knot-unbound-internal.netapp +0 -0
- package/netapps/namecheap.netapp +0 -0
- package/netapps/technitium.netapp +0 -0
- package/package.json +4 -2
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en" data-astro-cid-5hce7sga> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="The philosophy behind Celilo — why home labs deserve the same rigor as production infrastructure."><title>Vision — Celilo</title><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script>
|
|
2
|
+
// Resolve theme BEFORE first paint to avoid the flash of wrong
|
|
3
|
+
// theme. Order: explicit user choice (localStorage) → system
|
|
4
|
+
// preference (prefers-color-scheme) → fallback dark. The
|
|
5
|
+
// resolved value lands on <html data-theme="...">; CSS variables
|
|
6
|
+
// below pick the matching palette.
|
|
7
|
+
(function () {
|
|
8
|
+
try {
|
|
9
|
+
const stored = localStorage.getItem('celilo-theme');
|
|
10
|
+
const sys =
|
|
11
|
+
window.matchMedia &&
|
|
12
|
+
window.matchMedia('(prefers-color-scheme: light)').matches
|
|
13
|
+
? 'light'
|
|
14
|
+
: 'dark';
|
|
15
|
+
const theme = stored === 'light' || stored === 'dark' ? stored : sys;
|
|
16
|
+
document.documentElement.setAttribute('data-theme', theme);
|
|
17
|
+
} catch (_e) {
|
|
18
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
19
|
+
}
|
|
20
|
+
})();
|
|
21
|
+
</script><link rel="stylesheet" href="/_astro/docs.DwsUauWZ.css">
|
|
22
|
+
<style>.page-header[data-astro-cid-ywlweo73]{padding:1.5rem 0;border-bottom:1px solid var(--border);margin-bottom:2rem}.page-header[data-astro-cid-ywlweo73] h1[data-astro-cid-ywlweo73]{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.75rem}.page-header[data-astro-cid-ywlweo73] p[data-astro-cid-ywlweo73]{color:var(--muted);font-size:1.05rem}.prose[data-astro-cid-ywlweo73]{max-width:44rem}.prose[data-astro-cid-ywlweo73] h2[data-astro-cid-ywlweo73]{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:2.5rem 0 1rem;padding-top:2.5rem;border-top:1px solid var(--border)}.prose[data-astro-cid-ywlweo73] h2[data-astro-cid-ywlweo73]:first-child{margin-top:0;padding-top:0;border-top:none}.prose[data-astro-cid-ywlweo73] p[data-astro-cid-ywlweo73]{color:var(--muted);line-height:1.8;margin-bottom:1.25rem}.prose[data-astro-cid-ywlweo73] strong[data-astro-cid-ywlweo73]{color:var(--text)}.prose[data-astro-cid-ywlweo73] ul[data-astro-cid-ywlweo73]{color:var(--muted);padding-left:1.5rem;margin-bottom:1.25rem;line-height:1.8}.prose[data-astro-cid-ywlweo73] li[data-astro-cid-ywlweo73]{margin-bottom:.375rem}.quote[data-astro-cid-ywlweo73]{border-left:3px solid var(--accent);padding:.75rem 0 .75rem 1.5rem;margin:2rem 0}.quote[data-astro-cid-ywlweo73] p[data-astro-cid-ywlweo73]{font-size:1.1rem;font-style:italic;color:var(--text)}.quote[data-astro-cid-ywlweo73] cite[data-astro-cid-ywlweo73]{display:block;margin-top:.5rem;font-size:.85rem;font-style:normal;color:var(--muted)}
|
|
23
|
+
</style></head> <body data-astro-cid-5hce7sga> <!--
|
|
24
|
+
Background pattern — vertical streams of falling water drawn in
|
|
25
|
+
the geometric vocabulary of a Greek meander. The <pattern>
|
|
26
|
+
tile (240×240) repeats seamlessly across the viewport. Strokes
|
|
27
|
+
use `currentColor` so the .bg-pattern CSS rule above can tint
|
|
28
|
+
them via `color: var(--bg-pattern-color)` without rebuilding
|
|
29
|
+
the SVG. To change the streams themselves, edit the four <path>
|
|
30
|
+
elements below.
|
|
31
|
+
--> <svg class="bg-pattern" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-5hce7sga> <defs data-astro-cid-5hce7sga> <pattern id="celilo-streams" width="240" height="240" patternUnits="userSpaceOnUse" data-astro-cid-5hce7sga> <!-- Streams flow downward — the patternTransform shifts the
|
|
32
|
+
pattern origin by one full tile (240px) over `dur`, then
|
|
33
|
+
loops seamlessly. Edit `dur` for speed; delete this
|
|
34
|
+
<animateTransform> to freeze the flow. --> <animateTransform attributeName="patternTransform" type="translate" from="0 0" to="0 240" dur="30s" repeatCount="indefinite" data-astro-cid-5hce7sga></animateTransform> <g fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" data-astro-cid-5hce7sga> <!-- Stroke color cycle — driven by SMIL inside the SVG
|
|
35
|
+
(not CSS `color`) because Chromium doesn't reliably
|
|
36
|
+
repaint strokes that resolve via currentColor when
|
|
37
|
+
the parent's CSS `color` is animated. Edit the
|
|
38
|
+
`values` list to pick your palette; semicolons
|
|
39
|
+
separate stops, last value should match first to
|
|
40
|
+
close the loop seamlessly. --> <animate attributeName="stroke" values="#818cf8;#f472b6;#4ade80;#22d3ee;#818cf8" dur="10s" repeatCount="indefinite" data-astro-cid-5hce7sga></animate> <!-- Stream A (x=40): big staircase cascade near top, single hook near bottom --> <path d="M 40,0 V 30 H 55 V 45 H 70 V 60 H 55 V 75 H 40 V 175 H 25 V 195 H 40 V 240" data-astro-cid-5hce7sga></path> <!-- Stream B (x=100): small step near top, three-tier cascade in middle --> <path d="M 100,0 V 60 H 85 V 80 H 100 V 130 H 115 V 145 H 130 V 160 H 115 V 175 H 100 V 240" data-astro-cid-5hce7sga></path> <!-- Stream C (x=160): three small hooks distributed top-to-bottom --> <path d="M 160,0 V 20 H 175 V 35 H 160 V 110 H 145 V 130 H 160 V 200 H 175 V 220 H 160 V 240" data-astro-cid-5hce7sga></path> <!-- Stream D (x=220): single deep cascade in the upper-middle --> <path d="M 220,0 V 85 H 205 V 100 H 190 V 115 H 220 V 240" data-astro-cid-5hce7sga></path> </g> </pattern> </defs> <rect width="100%" height="100%" fill="url(#celilo-streams)" data-astro-cid-5hce7sga></rect> </svg> <nav data-astro-cid-5hce7sga> <div class="nav-inner" data-astro-cid-5hce7sga> <a href="/" class="nav-logo" data-astro-cid-5hce7sga>celilo</a> <ul class="nav-links" data-astro-cid-5hce7sga> <li data-astro-cid-5hce7sga> <a href="/docs" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M4 5a2 2 0 0 1 2-2h11v18H6a2 2 0 0 1-2-2V5z" data-astro-cid-5hce7sga></path> <path d="M9 7h6M9 11h6M9 15h4" data-astro-cid-5hce7sga></path> </svg>
|
|
41
|
+
docs
|
|
42
|
+
</a> </li> <li data-astro-cid-5hce7sga> <a href="/modules" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <rect x="3" y="3" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="14" y="3" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="3" y="14" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="14" y="14" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> </svg>
|
|
43
|
+
modules
|
|
44
|
+
</a> </li> <li data-astro-cid-5hce7sga> <a href="/vision" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z" data-astro-cid-5hce7sga></path> <circle cx="12" cy="12" r="3" data-astro-cid-5hce7sga></circle> </svg>
|
|
45
|
+
vision
|
|
46
|
+
</a> </li> <li data-astro-cid-5hce7sga> <a href="https://github.com/celilo/celilo" target="_blank" rel="noopener" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21" data-astro-cid-5hce7sga></path> </svg>
|
|
47
|
+
github
|
|
48
|
+
</a> </li> <li data-astro-cid-5hce7sga> <button type="button" class="theme-toggle" id="theme-toggle" aria-label="Toggle light/dark theme" title="Toggle theme" data-astro-cid-5hce7sga> <svg class="icon-sun" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <circle cx="12" cy="12" r="4" data-astro-cid-5hce7sga></circle> <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" data-astro-cid-5hce7sga></path> </svg> <svg class="icon-moon" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" data-astro-cid-5hce7sga></path> </svg> </button> </li> </ul> </div> </nav> <script>
|
|
49
|
+
// Click handler for the toggle. Reads the current data-theme,
|
|
50
|
+
// flips it, persists to localStorage, applies to <html>. The
|
|
51
|
+
// resolution script in <head> already set the initial value
|
|
52
|
+
// (system-aware) before paint, so this only runs on user
|
|
53
|
+
// interaction.
|
|
54
|
+
(function () {
|
|
55
|
+
const btn = document.getElementById('theme-toggle');
|
|
56
|
+
if (!btn) return;
|
|
57
|
+
btn.addEventListener('click', function () {
|
|
58
|
+
const current = document.documentElement.getAttribute('data-theme');
|
|
59
|
+
const next = current === 'light' ? 'dark' : 'light';
|
|
60
|
+
document.documentElement.setAttribute('data-theme', next);
|
|
61
|
+
try {
|
|
62
|
+
localStorage.setItem('celilo-theme', next);
|
|
63
|
+
} catch (_e) {
|
|
64
|
+
// localStorage unavailable (private mode) — toggle still
|
|
65
|
+
// works for the session, just doesn't persist.
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
})();
|
|
69
|
+
</script> <main data-astro-cid-5hce7sga> <div class="page-header" data-astro-cid-ywlweo73> <h1 data-astro-cid-ywlweo73>Vision</h1> <p data-astro-cid-ywlweo73>Why home labs deserve the same rigor as production infrastructure.</p> </div> <div class="prose" data-astro-cid-ywlweo73> <h2 data-astro-cid-ywlweo73>The problem with home labs</h2> <p data-astro-cid-ywlweo73>
|
|
70
|
+
Home labs are fascinating machines — half museum, half chaos. A Raspberry Pi running Pi-hole.
|
|
71
|
+
A Proxmox cluster someone built from old workstations. A VPS with a reverse proxy configured
|
|
72
|
+
by hand six months ago, now unmaintainable.
|
|
73
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
74
|
+
The problem isn't that people don't know what they're doing. The problem is that <strong data-astro-cid-ywlweo73>no good
|
|
75
|
+
tooling exists for this scale</strong>. Kubernetes is designed for teams. Nomad needs a
|
|
76
|
+
cluster. Terraform alone doesn't know about your DNS provider. Ansible doesn't know what
|
|
77
|
+
services you have running. Each tool does one thing — and wiring them together is left as an
|
|
78
|
+
exercise for the reader.
|
|
79
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
80
|
+
The result: every home lab is unique, undocumented, and unmaintainable by anyone but its owner.
|
|
81
|
+
Most can't be rebuilt from scratch. Many drift from their intended state over years of ad-hoc
|
|
82
|
+
changes. And migrating to new hardware is a weekend project that stretches into a month.
|
|
83
|
+
</p> <h2 data-astro-cid-ywlweo73>The Celilo approach</h2> <div class="quote" data-astro-cid-ywlweo73> <p data-astro-cid-ywlweo73>Infrastructure should be a declaration, not a procedure.</p> </div> <p data-astro-cid-ywlweo73>
|
|
84
|
+
Celilo treats your home lab as a collection of <strong data-astro-cid-ywlweo73>modules</strong> — each one a
|
|
85
|
+
well-defined unit of infrastructure with clear inputs, outputs, and dependencies. A module
|
|
86
|
+
declares what it needs (a DNS registrar, a firewall, a container host) and what it provides
|
|
87
|
+
(a public web endpoint, an identity provider, a DNS server). Celilo wires them together.
|
|
88
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
89
|
+
This is the same principle that makes large-scale infrastructure manageable:
|
|
90
|
+
<strong data-astro-cid-ywlweo73>declarative state, dependency resolution, typed interfaces</strong>. Celilo brings
|
|
91
|
+
these ideas down to the scale of one person with a few machines and a domain name.
|
|
92
|
+
</p> <h2 data-astro-cid-ywlweo73>Capabilities, not configuration</h2> <p data-astro-cid-ywlweo73>
|
|
93
|
+
Celilo solves this with the <strong data-astro-cid-ywlweo73>capability system</strong>. Instead of configuring modules
|
|
94
|
+
with raw hostnames and IP addresses, modules declare what capability they need:
|
|
95
|
+
<code data-astro-cid-ywlweo73>dns_registrar</code>, <code data-astro-cid-ywlweo73>public_web</code>, <code data-astro-cid-ywlweo73>firewall</code>. Celilo resolves
|
|
96
|
+
those dependencies at deploy time, injecting the right implementation wherever it's needed.
|
|
97
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
98
|
+
This means:
|
|
99
|
+
</p> <ul data-astro-cid-ywlweo73> <li data-astro-cid-ywlweo73>You can swap your DNS provider without reconfiguring every module that uses DNS.</li> <li data-astro-cid-ywlweo73>You can add a second domain and it works everywhere automatically.</li> <li data-astro-cid-ywlweo73>Modules written by others work with your infrastructure — they don't need to know the specifics.</li> </ul> <p data-astro-cid-ywlweo73>
|
|
100
|
+
The capability system is what lets Celilo be both opinionated and flexible. Modules follow
|
|
101
|
+
conventions, but the implementations are pluggable.
|
|
102
|
+
</p> <h2 data-astro-cid-ywlweo73>Dogfooding as a design principle</h2> <p data-astro-cid-ywlweo73>
|
|
103
|
+
This website is a Celilo module. The registry that serves these modules is a Celilo module.
|
|
104
|
+
The DNS records for <code data-astro-cid-ywlweo73>celilo.computer</code> are managed by the Namecheap module.
|
|
105
|
+
The TLS certificates are handled by the Caddy module.
|
|
106
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
107
|
+
Every piece of infrastructure that runs Celilo itself was deployed using Celilo. This is
|
|
108
|
+
intentional. If something is painful to express as a module, that pain surfaces immediately
|
|
109
|
+
during development — not later, when real users hit it. The tool must be pleasant to use for
|
|
110
|
+
real work, not just in demos.
|
|
111
|
+
</p> <h2 data-astro-cid-ywlweo73>Where we're going</h2> <p data-astro-cid-ywlweo73>
|
|
112
|
+
Celilo v1 focuses on the core: module lifecycle, the capability system, and a registry of
|
|
113
|
+
well-crafted official modules. The goal is to make the common home lab scenarios — DNS,
|
|
114
|
+
reverse proxy, identity, smart home — genuinely pleasant to run.
|
|
115
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
116
|
+
From there, the module ecosystem grows. Community modules. Better observability. A declarative
|
|
117
|
+
"desired state" model that can detect and repair drift. Multi-user support for shared home labs.
|
|
118
|
+
</p> <p data-astro-cid-ywlweo73>
|
|
119
|
+
The north star: <strong data-astro-cid-ywlweo73>your home lab should be as easy to rebuild as it was to build the
|
|
120
|
+
first time</strong>. That's what Celilo is for.
|
|
121
|
+
</p> </div> </main> <footer data-astro-cid-5hce7sga> <p data-astro-cid-5hce7sga>Celilo — home lab orchestration. Built with care.</p> </footer> </body></html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/netapps/authentik.netapp
CHANGED
|
Binary file
|
package/netapps/caddy.netapp
CHANGED
|
Binary file
|
|
Binary file
|
package/netapps/greenwave.netapp
CHANGED
|
Binary file
|
|
Binary file
|
package/netapps/iptables.netapp
CHANGED
|
Binary file
|
|
Binary file
|
package/netapps/namecheap.netapp
CHANGED
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@celilo/e2e",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.12",
|
|
4
4
|
"description": "E2E test infrastructure for Celilo-deployed applications. Provides a simulated internet with DNS hierarchy, ACME server, firewalls, and target machines in Docker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -35,7 +35,9 @@
|
|
|
35
35
|
"scripts/",
|
|
36
36
|
"README.md",
|
|
37
37
|
"netapps/*.netapp",
|
|
38
|
-
"!netapps/celilo-registry.netapp"
|
|
38
|
+
"!netapps/celilo-registry.netapp",
|
|
39
|
+
".celilo-website-cache/",
|
|
40
|
+
".npm-registry-cache/"
|
|
39
41
|
],
|
|
40
42
|
"dependencies": {
|
|
41
43
|
"@celilo/cli-display": "^0.1.9",
|