yakmesh 2.8.2 → 3.0.0
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/CHANGELOG.md +637 -0
- package/CONTRIBUTING.md +42 -0
- package/Caddyfile +77 -0
- package/README.md +119 -29
- package/adapters/adapter-mlv-bible/README.md +124 -0
- package/adapters/adapter-mlv-bible/index.js +400 -0
- package/adapters/chat-mod-adapter.js +532 -0
- package/adapters/content-adapter.js +273 -0
- package/content/api.js +50 -41
- package/content/index.js +2 -2
- package/content/store.js +355 -173
- package/dashboard/index.html +19 -3
- package/database/replication.js +117 -37
- package/docs/CRYPTO-AGILITY.md +204 -0
- package/docs/MTLS-RESEARCH.md +367 -0
- package/docs/NAMCHE-SPEC.md +681 -0
- package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
- package/docs/PRECISION-DISCLOSURE.md +96 -0
- package/docs/README.md +76 -0
- package/docs/ROADMAP-2.4.0.md +447 -0
- package/docs/ROADMAP-2.5.0.md +244 -0
- package/docs/SECURITY-AUDIT-REPORT.md +306 -0
- package/docs/SST-INTEGRATION.md +712 -0
- package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
- package/docs/TERNARY-AUDIT-REPORT.md +247 -0
- package/docs/TME-FAQ.md +221 -0
- package/docs/WHITEPAPER.md +623 -0
- package/docs/adapters.html +1001 -0
- package/docs/advanced-systems.html +1045 -0
- package/docs/annex.html +1046 -0
- package/docs/api.html +970 -0
- package/docs/business/response-templates.md +160 -0
- package/docs/c2c.html +1225 -0
- package/docs/cli.html +1332 -0
- package/docs/configuration.html +1248 -0
- package/docs/darshan.html +1085 -0
- package/docs/dharma.html +966 -0
- package/docs/docs-bundle.html +1075 -0
- package/docs/docs.css +3120 -0
- package/docs/docs.js +556 -0
- package/docs/doko.html +969 -0
- package/docs/geo-proof.html +858 -0
- package/docs/getting-started.html +840 -0
- package/docs/gumba-tutorial.html +1144 -0
- package/docs/gumba.html +1098 -0
- package/docs/index.html +914 -0
- package/docs/jhilke.html +1312 -0
- package/docs/karma.html +1100 -0
- package/docs/katha.html +1037 -0
- package/docs/lama.html +978 -0
- package/docs/mandala.html +1067 -0
- package/docs/mani.html +964 -0
- package/docs/mantra.html +967 -0
- package/docs/mesh.html +1409 -0
- package/docs/nakpak.html +869 -0
- package/docs/namche.html +928 -0
- package/docs/nav-order.json +53 -0
- package/docs/prahari.html +1043 -0
- package/docs/prism-bash.min.js +1 -0
- package/docs/prism-javascript.min.js +1 -0
- package/docs/prism-json.min.js +1 -0
- package/docs/prism-tomorrow.min.css +1 -0
- package/docs/prism.min.js +1 -0
- package/docs/privacy.html +699 -0
- package/docs/quick-reference.html +1181 -0
- package/docs/sakshi.html +1402 -0
- package/docs/sandboxing.md +386 -0
- package/docs/seva.html +911 -0
- package/docs/sherpa.html +871 -0
- package/docs/studio.html +860 -0
- package/docs/stupa.html +995 -0
- package/docs/tailwind.min.css +2 -0
- package/docs/tattva.html +1332 -0
- package/docs/terms.html +686 -0
- package/docs/time-server-deployment.md +166 -0
- package/docs/time-sources.html +1392 -0
- package/docs/tivra.html +1127 -0
- package/docs/trademark-policy.html +686 -0
- package/docs/tribhuj.html +1183 -0
- package/docs/trust-security.html +1029 -0
- package/docs/tutorials/backup-recovery.html +654 -0
- package/docs/tutorials/dashboard.html +604 -0
- package/docs/tutorials/domain-setup.html +605 -0
- package/docs/tutorials/host-website.html +456 -0
- package/docs/tutorials/mesh-network.html +505 -0
- package/docs/tutorials/mobile-access.html +445 -0
- package/docs/tutorials/privacy.html +467 -0
- package/docs/tutorials/raspberry-pi.html +600 -0
- package/docs/tutorials/security-basics.html +539 -0
- package/docs/tutorials/share-files.html +431 -0
- package/docs/tutorials/troubleshooting.html +637 -0
- package/docs/tutorials/trust-karma.html +419 -0
- package/docs/tutorials/yak-protocol.html +456 -0
- package/docs/tutorials.html +1034 -0
- package/docs/vani.html +1270 -0
- package/docs/webserver.html +809 -0
- package/docs/yak-protocol.html +940 -0
- package/docs/yak-timeserver-design.md +475 -0
- package/docs/yakapp.html +1015 -0
- package/docs/ypc27.html +1069 -0
- package/docs/yurt.html +1344 -0
- package/embedded-docs/bundle.js +334 -74
- package/gossip/protocol.js +247 -27
- package/identity/key-resolver.js +262 -0
- package/identity/machine-seed.js +632 -0
- package/identity/node-key.js +669 -368
- package/identity/tribhuj-ratchet.js +506 -0
- package/knowledge-base.js +37 -8
- package/launcher/yakmesh.bat +62 -0
- package/launcher/yakmesh.sh +70 -0
- package/mesh/annex.js +462 -108
- package/mesh/beacon-broadcast.js +113 -1
- package/mesh/darshan.js +1718 -0
- package/mesh/gumba.js +1567 -0
- package/mesh/jhilke.js +651 -0
- package/mesh/katha.js +1012 -0
- package/mesh/nakpak-routing.js +8 -5
- package/mesh/network.js +724 -34
- package/mesh/pulse-sync.js +4 -1
- package/mesh/rate-limiter.js +127 -15
- package/mesh/seva.js +526 -0
- package/mesh/sherpa-discovery.js +89 -8
- package/mesh/sybil-defense.js +19 -5
- package/mesh/temporal-encoder.js +4 -3
- package/mesh/vani.js +1364 -0
- package/mesh/yurt.js +1340 -0
- package/models/entropy-sentinel.onnx +0 -0
- package/models/karma-trust.onnx +0 -0
- package/models/manifest.json +43 -0
- package/models/sakshi-anomaly.onnx +0 -0
- package/oracle/code-proof-protocol.js +7 -6
- package/oracle/codebase-lock.js +257 -28
- package/oracle/index.js +74 -15
- package/oracle/ma902-snmp.js +678 -0
- package/oracle/module-sealer.js +5 -3
- package/oracle/network-identity.js +16 -0
- package/oracle/packet-checksum.js +201 -0
- package/oracle/sst.js +579 -0
- package/oracle/ternary-144t.js +714 -0
- package/oracle/ternary-ml.js +481 -0
- package/oracle/time-api.js +239 -0
- package/oracle/time-source.js +137 -47
- package/oracle/validation-oracle-hardened.js +1111 -1071
- package/oracle/validation-oracle.js +4 -2
- package/oracle/ypc27.js +211 -0
- package/package.json +20 -3
- package/protocol/yak-handler.js +35 -9
- package/protocol/yak-protocol.js +28 -13
- package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
- package/reference/cpp/yakmesh_ypc27.cpp +179 -0
- package/sbom.json +87 -0
- package/scripts/security-audit.mjs +264 -0
- package/scripts/update-docs-nav.js +194 -0
- package/scripts/update-docs-sidebar.cjs +164 -0
- package/security/crypto-config.js +4 -3
- package/security/dharma-moderation.js +517 -0
- package/security/doko-identity.js +193 -143
- package/security/domain-consensus.js +86 -85
- package/security/fs-hardening.js +620 -0
- package/security/hardware-attestation.js +5 -3
- package/security/hybrid-trust.js +227 -87
- package/security/karma-rate-limiter.js +692 -0
- package/security/khata-protocol.js +22 -21
- package/security/khata-trust-integration.js +277 -150
- package/security/memory-safety.js +635 -0
- package/security/mesh-auth.js +11 -10
- package/security/mesh-revocation.js +373 -5
- package/security/namche-gateway.js +298 -69
- package/security/sakshi.js +460 -3
- package/security/sangha.js +770 -0
- package/security/secure-config.js +473 -0
- package/security/silicon-parity.js +13 -10
- package/security/steadywatch.js +1142 -0
- package/security/strike-system.js +32 -3
- package/security/temporal-signing.js +488 -0
- package/security/trit-commitment.js +464 -0
- package/server/crypto/annex.js +247 -0
- package/server/darshan-api.js +343 -0
- package/server/index.js +3259 -362
- package/server/komm-api.js +668 -0
- package/utils/accel.js +2273 -0
- package/utils/ternary-id.js +79 -0
- package/utils/verify-worker.js +57 -0
- package/webserver/index.js +95 -5
- package/assets/yakmesh-logo.png +0 -0
- package/assets/yakmesh-logo.svg +0 -80
- package/assets/yakmesh-logo2.png +0 -0
- package/assets/yakmesh-logo2sm.png +0 -0
- package/assets/ymsm.png +0 -0
- package/website/assets/silhouettes/adapters.svg +0 -107
- package/website/assets/silhouettes/api-endpoints.svg +0 -115
- package/website/assets/silhouettes/atomic-clock.svg +0 -83
- package/website/assets/silhouettes/base-camp.svg +0 -81
- package/website/assets/silhouettes/bridge.svg +0 -69
- package/website/assets/silhouettes/docs-bundle.svg +0 -113
- package/website/assets/silhouettes/doko-basket.svg +0 -70
- package/website/assets/silhouettes/fortress.svg +0 -93
- package/website/assets/silhouettes/gateway.svg +0 -54
- package/website/assets/silhouettes/gears.svg +0 -93
- package/website/assets/silhouettes/globe-satellite.svg +0 -67
- package/website/assets/silhouettes/karma-wheel.svg +0 -137
- package/website/assets/silhouettes/lama-council.svg +0 -141
- package/website/assets/silhouettes/mandala-network.svg +0 -169
- package/website/assets/silhouettes/mani-stones.svg +0 -149
- package/website/assets/silhouettes/mantra-wheel.svg +0 -116
- package/website/assets/silhouettes/mesh-nodes.svg +0 -113
- package/website/assets/silhouettes/nakpak.svg +0 -56
- package/website/assets/silhouettes/peak-lightning.svg +0 -73
- package/website/assets/silhouettes/sherpa.svg +0 -69
- package/website/assets/silhouettes/stupa-tower.svg +0 -119
- package/website/assets/silhouettes/tattva-eye.svg +0 -78
- package/website/assets/silhouettes/terminal.svg +0 -74
- package/website/assets/silhouettes/webserver.svg +0 -145
- package/website/assets/silhouettes/yak.svg +0 -78
- package/website/assets/yakmesh-logo.png +0 -0
- package/website/assets/yakmesh-logo.webp +0 -0
- package/website/assets/yakmesh-logo128x140.webp +0 -0
- package/website/assets/yakmesh-logo2.png +0 -0
- package/website/assets/yakmesh-logo2.svg +0 -51
- package/website/assets/yakmesh-logo40x44.webp +0 -0
- package/website/assets/yakmesh.gif +0 -0
- package/website/assets/yakmesh.ico +0 -0
- package/website/assets/yakmesh.jpg +0 -0
- package/website/assets/yakmesh.pdf +0 -0
- package/website/assets/yakmesh.png +0 -0
- package/website/assets/yakmesh.svg +0 -70
- package/website/assets/yakmesh128.webp +0 -0
- package/website/assets/yakmesh32.png +0 -0
- package/website/assets/yakmesh32.svg +0 -65
- package/website/assets/yakmesh32o.ico +0 -2
- package/website/assets/yakmesh32o.svg +0 -65
- package/website/assets/yakmesh32o.svgz +0 -0
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="tutorials">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<link rel="icon" href="../favicon.ico" sizes="32x32">
|
|
7
|
+
<link rel="icon" href="../icon.svg" type="image/svg+xml">
|
|
8
|
+
<link rel="apple-touch-icon" href="../apple-touch-icon.png">
|
|
9
|
+
<title>Host a Website - YAKMESH Tutorials</title>
|
|
10
|
+
<meta name="description" content="Complete guide to hosting a static website with YAKMESH. From installation to exposing your site to the internet.">
|
|
11
|
+
|
|
12
|
+
<link rel="stylesheet" href="../tailwind.min.css">
|
|
13
|
+
<link rel="stylesheet" href="../prism-tomorrow.min.css">
|
|
14
|
+
<link rel="stylesheet" href="../docs.css">
|
|
15
|
+
<style>
|
|
16
|
+
.theme-accent { color: #10b981; }
|
|
17
|
+
.theme-badge { background: rgba(16, 185, 129, 0.2); color: #34d399; }
|
|
18
|
+
.tutorial-card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; }
|
|
19
|
+
.tutorial-card:hover { border-color: #10b981; }
|
|
20
|
+
.step-number { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; background: #10b981; color: white; border-radius: 50%; font-weight: bold; margin-right: 0.75rem; }
|
|
21
|
+
.theme-callout { background: rgba(16, 185, 129, 0.1); border: 1px solid #059669; border-radius: 0.75rem; padding: 1.5rem; margin: 1.5rem 0; }
|
|
22
|
+
.warning-callout { background: rgba(245, 158, 11, 0.1); border: 1px solid #d97706; border-radius: 0.75rem; padding: 1.5rem; margin: 1.5rem 0; }
|
|
23
|
+
</style>
|
|
24
|
+
</head>
|
|
25
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
26
|
+
|
|
27
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
28
|
+
<a href="../index.html" class="sidebar-logo">
|
|
29
|
+
<span class="logo-icon">🏔️</span>
|
|
30
|
+
<span class="logo-text">Yakmesh</span>
|
|
31
|
+
</a>
|
|
32
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
|
|
33
|
+
<ul class="sidebar-nav">
|
|
34
|
+
<li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
|
|
35
|
+
<li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
|
|
36
|
+
<li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
|
|
37
|
+
<li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
|
|
38
|
+
<li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
|
|
39
|
+
<li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
|
|
40
|
+
<li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
|
|
41
|
+
<li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
|
|
42
|
+
<li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
|
|
43
|
+
<li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
|
|
44
|
+
<li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
|
|
45
|
+
<li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
|
|
46
|
+
<li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
|
|
47
|
+
<li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
|
|
48
|
+
<li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
|
|
49
|
+
<li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
|
|
50
|
+
<li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
|
|
51
|
+
<li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
|
|
52
|
+
<li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
|
|
53
|
+
<li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
|
|
54
|
+
<li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
|
|
55
|
+
<li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
|
|
56
|
+
<li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
|
|
57
|
+
<li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
|
|
58
|
+
<li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
|
|
59
|
+
<li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
|
|
60
|
+
<li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
|
|
61
|
+
<li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
|
|
62
|
+
<li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
|
|
63
|
+
<li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
|
|
64
|
+
<li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
|
|
65
|
+
</ul>
|
|
66
|
+
</nav>
|
|
67
|
+
|
|
68
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
|
|
69
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
70
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
|
|
71
|
+
</svg>
|
|
72
|
+
</button>
|
|
73
|
+
|
|
74
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
75
|
+
|
|
76
|
+
<main class="docs-main" id="mainContent">
|
|
77
|
+
<div class="docs-content">
|
|
78
|
+
|
|
79
|
+
<!-- Breadcrumb -->
|
|
80
|
+
<div class="mb-6">
|
|
81
|
+
<a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<!-- Page Header -->
|
|
85
|
+
<div class="mb-8">
|
|
86
|
+
<div class="flex items-center gap-3 mb-2">
|
|
87
|
+
<span class="text-4xl">🌐</span>
|
|
88
|
+
<h1 class="text-4xl font-bold">Host a Website</h1>
|
|
89
|
+
<span class="theme-badge text-xs px-2 py-1 rounded-full">15 min</span>
|
|
90
|
+
</div>
|
|
91
|
+
<p class="theme-accent text-lg">Serve your site locally and expose it to the internet</p>
|
|
92
|
+
<p class="text-mountain-300 mt-2">
|
|
93
|
+
This tutorial walks you through hosting a complete static website using YAKMESH — from installation
|
|
94
|
+
to making your site accessible worldwide, no cloud providers needed.
|
|
95
|
+
</p>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<!-- What You'll Learn -->
|
|
99
|
+
<div class="theme-callout mb-8">
|
|
100
|
+
<h3 class="font-bold text-lg mb-3">📚 What You'll Learn</h3>
|
|
101
|
+
<ul class="text-mountain-300 space-y-2">
|
|
102
|
+
<li>• Install and initialize YAKMESH on your computer</li>
|
|
103
|
+
<li>• Understand the htdocs folder structure</li>
|
|
104
|
+
<li>• Create and configure your website</li>
|
|
105
|
+
<li>• Start the YAKMESH server</li>
|
|
106
|
+
<li>• Access your site locally and expose it to the internet</li>
|
|
107
|
+
</ul>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<!-- Prerequisites -->
|
|
111
|
+
<div class="tutorial-card">
|
|
112
|
+
<h3 class="font-bold text-lg mb-3">Prerequisites</h3>
|
|
113
|
+
<ul class="text-mountain-300 space-y-2">
|
|
114
|
+
<li>✓ Node.js 20 or later (22 LTS recommended)</li>
|
|
115
|
+
<li>✓ npm package manager</li>
|
|
116
|
+
<li>✓ A text editor (VS Code, Sublime, etc.)</li>
|
|
117
|
+
<li>✓ Basic understanding of HTML/CSS (helpful but not required)</li>
|
|
118
|
+
</ul>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
<!-- Step 1: Install YAKMESH -->
|
|
122
|
+
<div class="tutorial-card">
|
|
123
|
+
<h3 class="font-bold text-xl mb-4">
|
|
124
|
+
<span class="step-number">1</span>
|
|
125
|
+
Install YAKMESH
|
|
126
|
+
</h3>
|
|
127
|
+
<p class="text-mountain-300 mb-4">
|
|
128
|
+
Open your terminal and install YAKMESH globally from npm. This gives you access to the
|
|
129
|
+
<code class="bg-mountain-800 px-2 py-1 rounded">yakmesh</code> command from anywhere.
|
|
130
|
+
</p>
|
|
131
|
+
<pre class="language-bash"><code>npm install -g yakmesh</code></pre>
|
|
132
|
+
<p class="text-mountain-400 text-sm mt-4">
|
|
133
|
+
Alternatively, you can use npx to run commands without global installation:
|
|
134
|
+
</p>
|
|
135
|
+
<pre class="language-bash"><code>npx yakmesh --version</code></pre>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<!-- Step 2: Initialize Your Node -->
|
|
139
|
+
<div class="tutorial-card">
|
|
140
|
+
<h3 class="font-bold text-xl mb-4">
|
|
141
|
+
<span class="step-number">2</span>
|
|
142
|
+
Initialize Your Node
|
|
143
|
+
</h3>
|
|
144
|
+
<p class="text-mountain-300 mb-4">
|
|
145
|
+
Create a new directory for your project and initialize YAKMESH inside it:
|
|
146
|
+
</p>
|
|
147
|
+
<pre class="language-bash"><code>mkdir my-website
|
|
148
|
+
cd my-website
|
|
149
|
+
yakmesh init</code></pre>
|
|
150
|
+
<p class="text-mountain-300 mt-4 mb-2">
|
|
151
|
+
This creates the following structure:
|
|
152
|
+
</p>
|
|
153
|
+
<pre class="language-text"><code>my-website/
|
|
154
|
+
├── yakmesh.config.js # Node configuration
|
|
155
|
+
├── data/ # Node data (identity, logs, etc.)
|
|
156
|
+
└── htdocs/ # Your website files go here!</code></pre>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<!-- Step 3: Understand the htdocs Folder -->
|
|
160
|
+
<div class="tutorial-card">
|
|
161
|
+
<h3 class="font-bold text-xl mb-4">
|
|
162
|
+
<span class="step-number">3</span>
|
|
163
|
+
Understand the htdocs Folder
|
|
164
|
+
</h3>
|
|
165
|
+
<p class="text-mountain-300 mb-4">
|
|
166
|
+
The <code class="bg-mountain-800 px-2 py-1 rounded theme-accent">htdocs/</code> folder is your
|
|
167
|
+
web root — everything inside this folder is served by YAKMESH. Think of it like a traditional
|
|
168
|
+
Apache htdocs or Nginx html folder.
|
|
169
|
+
</p>
|
|
170
|
+
<div class="bg-mountain-800 rounded-lg p-4 mb-4">
|
|
171
|
+
<p class="text-sm text-mountain-400 mb-2">How URLs map to files:</p>
|
|
172
|
+
<ul class="text-mountain-300 text-sm space-y-1 font-mono">
|
|
173
|
+
<li>http://localhost:3000/ → htdocs/index.html</li>
|
|
174
|
+
<li>http://localhost:3000/about → htdocs/about.html</li>
|
|
175
|
+
<li>http://localhost:3000/css/style.css → htdocs/css/style.css</li>
|
|
176
|
+
<li>http://localhost:3000/images/logo.png → htdocs/images/logo.png</li>
|
|
177
|
+
</ul>
|
|
178
|
+
</div>
|
|
179
|
+
<p class="text-mountain-400 text-sm">
|
|
180
|
+
<strong>Tip:</strong> You can change the web root directory in <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh.config.js</code>
|
|
181
|
+
if you prefer a different folder name.
|
|
182
|
+
</p>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<!-- Step 4: Create Your Website -->
|
|
186
|
+
<div class="tutorial-card">
|
|
187
|
+
<h3 class="font-bold text-xl mb-4">
|
|
188
|
+
<span class="step-number">4</span>
|
|
189
|
+
Create Your Website
|
|
190
|
+
</h3>
|
|
191
|
+
<p class="text-mountain-300 mb-4">
|
|
192
|
+
Let's create a simple website. Create an <code class="bg-mountain-800 px-2 py-1 rounded">index.html</code>
|
|
193
|
+
file inside the htdocs folder:
|
|
194
|
+
</p>
|
|
195
|
+
<pre class="language-bash"><code># Create the file (or use your text editor)
|
|
196
|
+
touch htdocs/index.html</code></pre>
|
|
197
|
+
<p class="text-mountain-300 mt-4 mb-4">
|
|
198
|
+
Add this content to <code class="bg-mountain-800 px-2 py-1 rounded">htdocs/index.html</code>:
|
|
199
|
+
</p>
|
|
200
|
+
<pre class="language-html"><code><!DOCTYPE html>
|
|
201
|
+
<html lang="en">
|
|
202
|
+
<head>
|
|
203
|
+
<meta charset="UTF-8">
|
|
204
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
205
|
+
<title>My YAKMESH Site</title>
|
|
206
|
+
<style>
|
|
207
|
+
body {
|
|
208
|
+
font-family: system-ui, sans-serif;
|
|
209
|
+
max-width: 800px;
|
|
210
|
+
margin: 0 auto;
|
|
211
|
+
padding: 2rem;
|
|
212
|
+
background: #1e293b;
|
|
213
|
+
color: #f1f5f9;
|
|
214
|
+
}
|
|
215
|
+
h1 { color: #10b981; }
|
|
216
|
+
a { color: #34d399; }
|
|
217
|
+
</style>
|
|
218
|
+
</head>
|
|
219
|
+
<body>
|
|
220
|
+
<h1>Welcome to My Site!</h1>
|
|
221
|
+
<p>This website is hosted on YAKMESH — a post-quantum secure mesh network.</p>
|
|
222
|
+
<p>No cloud providers. No central servers. Just you and the mesh.</p>
|
|
223
|
+
</body>
|
|
224
|
+
</html></code></pre>
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
<!-- Step 5: Configure Your Server -->
|
|
228
|
+
<div class="tutorial-card">
|
|
229
|
+
<h3 class="font-bold text-xl mb-4">
|
|
230
|
+
<span class="step-number">5</span>
|
|
231
|
+
Configure Your Server (Optional)
|
|
232
|
+
</h3>
|
|
233
|
+
<p class="text-mountain-300 mb-4">
|
|
234
|
+
Open <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh.config.js</code> to customize your server settings.
|
|
235
|
+
Here's what a typical web hosting configuration looks like:
|
|
236
|
+
</p>
|
|
237
|
+
<pre class="language-javascript"><code>// yakmesh.config.js
|
|
238
|
+
module.exports = {
|
|
239
|
+
// Server settings
|
|
240
|
+
port: 3000, // Web server port
|
|
241
|
+
host: '0.0.0.0', // Listen on all interfaces
|
|
242
|
+
|
|
243
|
+
// Web hosting settings
|
|
244
|
+
webRoot: './htdocs', // Web files directory
|
|
245
|
+
indexFile: 'index.html', // Default index file
|
|
246
|
+
|
|
247
|
+
// Security settings
|
|
248
|
+
enableCORS: true, // Allow cross-origin requests
|
|
249
|
+
maxRequestSize: '10mb', // Max upload size
|
|
250
|
+
|
|
251
|
+
// Mesh network settings
|
|
252
|
+
enableMesh: true, // Connect to YAKMESH network
|
|
253
|
+
enableAnnex: true, // Enable ANNEX gateway
|
|
254
|
+
|
|
255
|
+
// Logging
|
|
256
|
+
logLevel: 'info', // debug, info, warn, error
|
|
257
|
+
};</code></pre>
|
|
258
|
+
<p class="text-mountain-400 text-sm mt-4">
|
|
259
|
+
The defaults work for most cases. Only modify if you need specific behavior.
|
|
260
|
+
</p>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
<!-- Step 6: Start the Server -->
|
|
264
|
+
<div class="tutorial-card">
|
|
265
|
+
<h3 class="font-bold text-xl mb-4">
|
|
266
|
+
<span class="step-number">6</span>
|
|
267
|
+
Start the Server
|
|
268
|
+
</h3>
|
|
269
|
+
<p class="text-mountain-300 mb-4">
|
|
270
|
+
You're ready to launch! Start your YAKMESH server:
|
|
271
|
+
</p>
|
|
272
|
+
<pre class="language-bash"><code>yakmesh start</code></pre>
|
|
273
|
+
<p class="text-mountain-300 mt-4 mb-4">
|
|
274
|
+
You should see output like this:
|
|
275
|
+
</p>
|
|
276
|
+
<pre class="language-text"><code>🐃 Starting Yakmesh Node...
|
|
277
|
+
|
|
278
|
+
🔐 Securing codebase...
|
|
279
|
+
✓ Codebase locked: 65 files protected
|
|
280
|
+
🌐 Starting web server...
|
|
281
|
+
✓ Web server running at http://localhost:3000
|
|
282
|
+
✓ htdocs/ folder mounted as web root
|
|
283
|
+
✓ Yakmesh Node is running!
|
|
284
|
+
Dashboard: http://localhost:3000/dashboard</code></pre>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<!-- Step 7: Access Your Site -->
|
|
288
|
+
<div class="tutorial-card">
|
|
289
|
+
<h3 class="font-bold text-xl mb-4">
|
|
290
|
+
<span class="step-number">7</span>
|
|
291
|
+
Access Your Site
|
|
292
|
+
</h3>
|
|
293
|
+
<p class="text-mountain-300 mb-4">
|
|
294
|
+
Open your browser and navigate to:
|
|
295
|
+
</p>
|
|
296
|
+
<div class="bg-mountain-800 rounded-lg p-4 mb-4 text-center">
|
|
297
|
+
<a href="http://localhost:3000" class="theme-accent text-xl font-mono hover:underline" target="_blank">
|
|
298
|
+
http://localhost:3000
|
|
299
|
+
</a>
|
|
300
|
+
</div>
|
|
301
|
+
<p class="text-mountain-300 mb-4">
|
|
302
|
+
You should see your website! The dashboard is available at:
|
|
303
|
+
</p>
|
|
304
|
+
<div class="bg-mountain-800 rounded-lg p-4 text-center">
|
|
305
|
+
<a href="http://localhost:3000/dashboard" class="theme-accent text-xl font-mono hover:underline" target="_blank">
|
|
306
|
+
http://localhost:3000/dashboard
|
|
307
|
+
</a>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<!-- Step 8: Expose to the Internet -->
|
|
312
|
+
<div class="tutorial-card">
|
|
313
|
+
<h3 class="font-bold text-xl mb-4">
|
|
314
|
+
<span class="step-number">8</span>
|
|
315
|
+
Expose to the Internet
|
|
316
|
+
</h3>
|
|
317
|
+
<p class="text-mountain-300 mb-4">
|
|
318
|
+
To make your site accessible from anywhere, you have several options:
|
|
319
|
+
</p>
|
|
320
|
+
|
|
321
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Option A: ANNEX Gateway (Recommended)</h4>
|
|
322
|
+
<p class="text-mountain-300 mb-4">
|
|
323
|
+
ANNEX provides a built-in tunnel that gives your site a public URL without port forwarding:
|
|
324
|
+
</p>
|
|
325
|
+
<pre class="language-bash"><code># Enable ANNEX in your config, then restart
|
|
326
|
+
yakmesh restart
|
|
327
|
+
|
|
328
|
+
# Your site will be available at a .yak.link address
|
|
329
|
+
# Check the dashboard for your public URL</code></pre>
|
|
330
|
+
|
|
331
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Option B: YAK Protocol Link</h4>
|
|
332
|
+
<p class="text-mountain-300 mb-4">
|
|
333
|
+
Share content via the yak:// protocol — cryptographic links that identify your content globally:
|
|
334
|
+
</p>
|
|
335
|
+
<pre class="language-bash"><code># Register your htdocs folder
|
|
336
|
+
yakmesh yak register ./htdocs
|
|
337
|
+
|
|
338
|
+
# Output: yak://abc123...xyz/
|
|
339
|
+
# Anyone with YAKMESH can access this link</code></pre>
|
|
340
|
+
|
|
341
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Option C: Direct Port Forwarding</h4>
|
|
342
|
+
<p class="text-mountain-300 mb-4">
|
|
343
|
+
For advanced users, forward port 3000 on your router:
|
|
344
|
+
</p>
|
|
345
|
+
<ol class="text-mountain-300 space-y-2 ml-4">
|
|
346
|
+
<li>1. Log into your router's admin panel</li>
|
|
347
|
+
<li>2. Find "Port Forwarding" settings</li>
|
|
348
|
+
<li>3. Forward external port 80 → internal 3000</li>
|
|
349
|
+
<li>4. Your site is now at http://your-public-ip/</li>
|
|
350
|
+
</ol>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<!-- Using JavaScript -->
|
|
354
|
+
<div class="tutorial-card">
|
|
355
|
+
<h3 class="font-bold text-xl mb-4">
|
|
356
|
+
💻 Programmatic Hosting (JavaScript)
|
|
357
|
+
</h3>
|
|
358
|
+
<p class="text-mountain-300 mb-4">
|
|
359
|
+
You can also start a YAKMESH web server programmatically in your Node.js applications:
|
|
360
|
+
</p>
|
|
361
|
+
<pre class="language-javascript"><code>import { createNode } from 'yakmesh';
|
|
362
|
+
|
|
363
|
+
async function startWebsite() {
|
|
364
|
+
// Create and configure the node
|
|
365
|
+
const node = await createNode({
|
|
366
|
+
port: 3000,
|
|
367
|
+
webRoot: './htdocs',
|
|
368
|
+
enableMesh: true,
|
|
369
|
+
enableAnnex: true
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// Start the server
|
|
373
|
+
await node.start();
|
|
374
|
+
|
|
375
|
+
console.log('Website running at http://localhost:3000');
|
|
376
|
+
console.log('Dashboard at http://localhost:3000/dashboard');
|
|
377
|
+
|
|
378
|
+
// Get your public URL (if ANNEX is enabled)
|
|
379
|
+
const publicUrl = await node.getPublicUrl();
|
|
380
|
+
if (publicUrl) {
|
|
381
|
+
console.log('Public URL:', publicUrl);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
// Register content with the yak:// protocol
|
|
385
|
+
const yakLink = await node.yak.register('./htdocs');
|
|
386
|
+
console.log('YAK Link:', yakLink);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
startWebsite().catch(console.error);</code></pre>
|
|
390
|
+
</div>
|
|
391
|
+
|
|
392
|
+
<!-- Summary -->
|
|
393
|
+
<div class="theme-callout">
|
|
394
|
+
<h3 class="font-bold text-lg mb-3">✅ Summary</h3>
|
|
395
|
+
<p class="text-mountain-300 mb-4">
|
|
396
|
+
Congratulations! You've successfully hosted a website on YAKMESH. Here's what you accomplished:
|
|
397
|
+
</p>
|
|
398
|
+
<ul class="text-mountain-300 space-y-2">
|
|
399
|
+
<li>✓ Installed and initialized YAKMESH</li>
|
|
400
|
+
<li>✓ Created a static website in the htdocs folder</li>
|
|
401
|
+
<li>✓ Configured and started your server</li>
|
|
402
|
+
<li>✓ Made your site accessible locally and to the internet</li>
|
|
403
|
+
</ul>
|
|
404
|
+
<p class="text-mountain-400 text-sm mt-4">
|
|
405
|
+
<strong>Next:</strong> Learn how to share content using the yak:// protocol →
|
|
406
|
+
</p>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
<!-- Troubleshooting -->
|
|
410
|
+
<div class="warning-callout mt-8">
|
|
411
|
+
<h3 class="font-bold text-lg mb-3" style="color: #fbbf24;">🔧 Troubleshooting</h3>
|
|
412
|
+
<ul class="text-mountain-300 space-y-3">
|
|
413
|
+
<li>
|
|
414
|
+
<strong>Port 3000 already in use?</strong><br>
|
|
415
|
+
<span class="text-mountain-400">Change the port in yakmesh.config.js or use: <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh start --port 3001</code></span>
|
|
416
|
+
</li>
|
|
417
|
+
<li>
|
|
418
|
+
<strong>Site shows 404?</strong><br>
|
|
419
|
+
<span class="text-mountain-400">Make sure you have an index.html file in your htdocs folder.</span>
|
|
420
|
+
</li>
|
|
421
|
+
<li>
|
|
422
|
+
<strong>Can't access from other devices on LAN?</strong><br>
|
|
423
|
+
<span class="text-mountain-400">Ensure host is set to '0.0.0.0' in your config, and check your firewall settings.</span>
|
|
424
|
+
</li>
|
|
425
|
+
</ul>
|
|
426
|
+
</div>
|
|
427
|
+
|
|
428
|
+
<!-- Navigation Footer -->
|
|
429
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
430
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
431
|
+
<a href="../tutorials.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
432
|
+
<div class="text-xs text-mountain-400 mb-1">← Back to</div>
|
|
433
|
+
<div class="flex items-center gap-2">
|
|
434
|
+
<span class="text-xl">📖</span>
|
|
435
|
+
<span class="font-semibold group-hover:text-emerald-400">All Tutorials</span>
|
|
436
|
+
</div>
|
|
437
|
+
</a>
|
|
438
|
+
<a href="yak-protocol.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
439
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
440
|
+
<div class="flex items-center gap-2">
|
|
441
|
+
<span class="text-xl">🐃</span>
|
|
442
|
+
<span class="font-semibold group-hover:text-emerald-400">YAK:// Protocol</span>
|
|
443
|
+
</div>
|
|
444
|
+
</a>
|
|
445
|
+
</div>
|
|
446
|
+
</div>
|
|
447
|
+
|
|
448
|
+
</div>
|
|
449
|
+
</main>
|
|
450
|
+
|
|
451
|
+
<script src="../prism.min.js"></script>
|
|
452
|
+
<script src="../prism-javascript.min.js"></script>
|
|
453
|
+
<script src="../prism-bash.min.js"></script>
|
|
454
|
+
<script src="../docs.js"></script>
|
|
455
|
+
</body>
|
|
456
|
+
</html>
|