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.
Files changed (232) hide show
  1. package/CHANGELOG.md +637 -0
  2. package/CONTRIBUTING.md +42 -0
  3. package/Caddyfile +77 -0
  4. package/README.md +119 -29
  5. package/adapters/adapter-mlv-bible/README.md +124 -0
  6. package/adapters/adapter-mlv-bible/index.js +400 -0
  7. package/adapters/chat-mod-adapter.js +532 -0
  8. package/adapters/content-adapter.js +273 -0
  9. package/content/api.js +50 -41
  10. package/content/index.js +2 -2
  11. package/content/store.js +355 -173
  12. package/dashboard/index.html +19 -3
  13. package/database/replication.js +117 -37
  14. package/docs/CRYPTO-AGILITY.md +204 -0
  15. package/docs/MTLS-RESEARCH.md +367 -0
  16. package/docs/NAMCHE-SPEC.md +681 -0
  17. package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
  18. package/docs/PRECISION-DISCLOSURE.md +96 -0
  19. package/docs/README.md +76 -0
  20. package/docs/ROADMAP-2.4.0.md +447 -0
  21. package/docs/ROADMAP-2.5.0.md +244 -0
  22. package/docs/SECURITY-AUDIT-REPORT.md +306 -0
  23. package/docs/SST-INTEGRATION.md +712 -0
  24. package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
  25. package/docs/TERNARY-AUDIT-REPORT.md +247 -0
  26. package/docs/TME-FAQ.md +221 -0
  27. package/docs/WHITEPAPER.md +623 -0
  28. package/docs/adapters.html +1001 -0
  29. package/docs/advanced-systems.html +1045 -0
  30. package/docs/annex.html +1046 -0
  31. package/docs/api.html +970 -0
  32. package/docs/business/response-templates.md +160 -0
  33. package/docs/c2c.html +1225 -0
  34. package/docs/cli.html +1332 -0
  35. package/docs/configuration.html +1248 -0
  36. package/docs/darshan.html +1085 -0
  37. package/docs/dharma.html +966 -0
  38. package/docs/docs-bundle.html +1075 -0
  39. package/docs/docs.css +3120 -0
  40. package/docs/docs.js +556 -0
  41. package/docs/doko.html +969 -0
  42. package/docs/geo-proof.html +858 -0
  43. package/docs/getting-started.html +840 -0
  44. package/docs/gumba-tutorial.html +1144 -0
  45. package/docs/gumba.html +1098 -0
  46. package/docs/index.html +914 -0
  47. package/docs/jhilke.html +1312 -0
  48. package/docs/karma.html +1100 -0
  49. package/docs/katha.html +1037 -0
  50. package/docs/lama.html +978 -0
  51. package/docs/mandala.html +1067 -0
  52. package/docs/mani.html +964 -0
  53. package/docs/mantra.html +967 -0
  54. package/docs/mesh.html +1409 -0
  55. package/docs/nakpak.html +869 -0
  56. package/docs/namche.html +928 -0
  57. package/docs/nav-order.json +53 -0
  58. package/docs/prahari.html +1043 -0
  59. package/docs/prism-bash.min.js +1 -0
  60. package/docs/prism-javascript.min.js +1 -0
  61. package/docs/prism-json.min.js +1 -0
  62. package/docs/prism-tomorrow.min.css +1 -0
  63. package/docs/prism.min.js +1 -0
  64. package/docs/privacy.html +699 -0
  65. package/docs/quick-reference.html +1181 -0
  66. package/docs/sakshi.html +1402 -0
  67. package/docs/sandboxing.md +386 -0
  68. package/docs/seva.html +911 -0
  69. package/docs/sherpa.html +871 -0
  70. package/docs/studio.html +860 -0
  71. package/docs/stupa.html +995 -0
  72. package/docs/tailwind.min.css +2 -0
  73. package/docs/tattva.html +1332 -0
  74. package/docs/terms.html +686 -0
  75. package/docs/time-server-deployment.md +166 -0
  76. package/docs/time-sources.html +1392 -0
  77. package/docs/tivra.html +1127 -0
  78. package/docs/trademark-policy.html +686 -0
  79. package/docs/tribhuj.html +1183 -0
  80. package/docs/trust-security.html +1029 -0
  81. package/docs/tutorials/backup-recovery.html +654 -0
  82. package/docs/tutorials/dashboard.html +604 -0
  83. package/docs/tutorials/domain-setup.html +605 -0
  84. package/docs/tutorials/host-website.html +456 -0
  85. package/docs/tutorials/mesh-network.html +505 -0
  86. package/docs/tutorials/mobile-access.html +445 -0
  87. package/docs/tutorials/privacy.html +467 -0
  88. package/docs/tutorials/raspberry-pi.html +600 -0
  89. package/docs/tutorials/security-basics.html +539 -0
  90. package/docs/tutorials/share-files.html +431 -0
  91. package/docs/tutorials/troubleshooting.html +637 -0
  92. package/docs/tutorials/trust-karma.html +419 -0
  93. package/docs/tutorials/yak-protocol.html +456 -0
  94. package/docs/tutorials.html +1034 -0
  95. package/docs/vani.html +1270 -0
  96. package/docs/webserver.html +809 -0
  97. package/docs/yak-protocol.html +940 -0
  98. package/docs/yak-timeserver-design.md +475 -0
  99. package/docs/yakapp.html +1015 -0
  100. package/docs/ypc27.html +1069 -0
  101. package/docs/yurt.html +1344 -0
  102. package/embedded-docs/bundle.js +334 -74
  103. package/gossip/protocol.js +247 -27
  104. package/identity/key-resolver.js +262 -0
  105. package/identity/machine-seed.js +632 -0
  106. package/identity/node-key.js +669 -368
  107. package/identity/tribhuj-ratchet.js +506 -0
  108. package/knowledge-base.js +37 -8
  109. package/launcher/yakmesh.bat +62 -0
  110. package/launcher/yakmesh.sh +70 -0
  111. package/mesh/annex.js +462 -108
  112. package/mesh/beacon-broadcast.js +113 -1
  113. package/mesh/darshan.js +1718 -0
  114. package/mesh/gumba.js +1567 -0
  115. package/mesh/jhilke.js +651 -0
  116. package/mesh/katha.js +1012 -0
  117. package/mesh/nakpak-routing.js +8 -5
  118. package/mesh/network.js +724 -34
  119. package/mesh/pulse-sync.js +4 -1
  120. package/mesh/rate-limiter.js +127 -15
  121. package/mesh/seva.js +526 -0
  122. package/mesh/sherpa-discovery.js +89 -8
  123. package/mesh/sybil-defense.js +19 -5
  124. package/mesh/temporal-encoder.js +4 -3
  125. package/mesh/vani.js +1364 -0
  126. package/mesh/yurt.js +1340 -0
  127. package/models/entropy-sentinel.onnx +0 -0
  128. package/models/karma-trust.onnx +0 -0
  129. package/models/manifest.json +43 -0
  130. package/models/sakshi-anomaly.onnx +0 -0
  131. package/oracle/code-proof-protocol.js +7 -6
  132. package/oracle/codebase-lock.js +257 -28
  133. package/oracle/index.js +74 -15
  134. package/oracle/ma902-snmp.js +678 -0
  135. package/oracle/module-sealer.js +5 -3
  136. package/oracle/network-identity.js +16 -0
  137. package/oracle/packet-checksum.js +201 -0
  138. package/oracle/sst.js +579 -0
  139. package/oracle/ternary-144t.js +714 -0
  140. package/oracle/ternary-ml.js +481 -0
  141. package/oracle/time-api.js +239 -0
  142. package/oracle/time-source.js +137 -47
  143. package/oracle/validation-oracle-hardened.js +1111 -1071
  144. package/oracle/validation-oracle.js +4 -2
  145. package/oracle/ypc27.js +211 -0
  146. package/package.json +20 -3
  147. package/protocol/yak-handler.js +35 -9
  148. package/protocol/yak-protocol.js +28 -13
  149. package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
  150. package/reference/cpp/yakmesh_ypc27.cpp +179 -0
  151. package/sbom.json +87 -0
  152. package/scripts/security-audit.mjs +264 -0
  153. package/scripts/update-docs-nav.js +194 -0
  154. package/scripts/update-docs-sidebar.cjs +164 -0
  155. package/security/crypto-config.js +4 -3
  156. package/security/dharma-moderation.js +517 -0
  157. package/security/doko-identity.js +193 -143
  158. package/security/domain-consensus.js +86 -85
  159. package/security/fs-hardening.js +620 -0
  160. package/security/hardware-attestation.js +5 -3
  161. package/security/hybrid-trust.js +227 -87
  162. package/security/karma-rate-limiter.js +692 -0
  163. package/security/khata-protocol.js +22 -21
  164. package/security/khata-trust-integration.js +277 -150
  165. package/security/memory-safety.js +635 -0
  166. package/security/mesh-auth.js +11 -10
  167. package/security/mesh-revocation.js +373 -5
  168. package/security/namche-gateway.js +298 -69
  169. package/security/sakshi.js +460 -3
  170. package/security/sangha.js +770 -0
  171. package/security/secure-config.js +473 -0
  172. package/security/silicon-parity.js +13 -10
  173. package/security/steadywatch.js +1142 -0
  174. package/security/strike-system.js +32 -3
  175. package/security/temporal-signing.js +488 -0
  176. package/security/trit-commitment.js +464 -0
  177. package/server/crypto/annex.js +247 -0
  178. package/server/darshan-api.js +343 -0
  179. package/server/index.js +3259 -362
  180. package/server/komm-api.js +668 -0
  181. package/utils/accel.js +2273 -0
  182. package/utils/ternary-id.js +79 -0
  183. package/utils/verify-worker.js +57 -0
  184. package/webserver/index.js +95 -5
  185. package/assets/yakmesh-logo.png +0 -0
  186. package/assets/yakmesh-logo.svg +0 -80
  187. package/assets/yakmesh-logo2.png +0 -0
  188. package/assets/yakmesh-logo2sm.png +0 -0
  189. package/assets/ymsm.png +0 -0
  190. package/website/assets/silhouettes/adapters.svg +0 -107
  191. package/website/assets/silhouettes/api-endpoints.svg +0 -115
  192. package/website/assets/silhouettes/atomic-clock.svg +0 -83
  193. package/website/assets/silhouettes/base-camp.svg +0 -81
  194. package/website/assets/silhouettes/bridge.svg +0 -69
  195. package/website/assets/silhouettes/docs-bundle.svg +0 -113
  196. package/website/assets/silhouettes/doko-basket.svg +0 -70
  197. package/website/assets/silhouettes/fortress.svg +0 -93
  198. package/website/assets/silhouettes/gateway.svg +0 -54
  199. package/website/assets/silhouettes/gears.svg +0 -93
  200. package/website/assets/silhouettes/globe-satellite.svg +0 -67
  201. package/website/assets/silhouettes/karma-wheel.svg +0 -137
  202. package/website/assets/silhouettes/lama-council.svg +0 -141
  203. package/website/assets/silhouettes/mandala-network.svg +0 -169
  204. package/website/assets/silhouettes/mani-stones.svg +0 -149
  205. package/website/assets/silhouettes/mantra-wheel.svg +0 -116
  206. package/website/assets/silhouettes/mesh-nodes.svg +0 -113
  207. package/website/assets/silhouettes/nakpak.svg +0 -56
  208. package/website/assets/silhouettes/peak-lightning.svg +0 -73
  209. package/website/assets/silhouettes/sherpa.svg +0 -69
  210. package/website/assets/silhouettes/stupa-tower.svg +0 -119
  211. package/website/assets/silhouettes/tattva-eye.svg +0 -78
  212. package/website/assets/silhouettes/terminal.svg +0 -74
  213. package/website/assets/silhouettes/webserver.svg +0 -145
  214. package/website/assets/silhouettes/yak.svg +0 -78
  215. package/website/assets/yakmesh-logo.png +0 -0
  216. package/website/assets/yakmesh-logo.webp +0 -0
  217. package/website/assets/yakmesh-logo128x140.webp +0 -0
  218. package/website/assets/yakmesh-logo2.png +0 -0
  219. package/website/assets/yakmesh-logo2.svg +0 -51
  220. package/website/assets/yakmesh-logo40x44.webp +0 -0
  221. package/website/assets/yakmesh.gif +0 -0
  222. package/website/assets/yakmesh.ico +0 -0
  223. package/website/assets/yakmesh.jpg +0 -0
  224. package/website/assets/yakmesh.pdf +0 -0
  225. package/website/assets/yakmesh.png +0 -0
  226. package/website/assets/yakmesh.svg +0 -70
  227. package/website/assets/yakmesh128.webp +0 -0
  228. package/website/assets/yakmesh32.png +0 -0
  229. package/website/assets/yakmesh32.svg +0 -65
  230. package/website/assets/yakmesh32o.ico +0 -2
  231. package/website/assets/yakmesh32o.svg +0 -65
  232. 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>&lt;!DOCTYPE html&gt;
201
+ &lt;html lang="en"&gt;
202
+ &lt;head&gt;
203
+ &lt;meta charset="UTF-8"&gt;
204
+ &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
205
+ &lt;title&gt;My YAKMESH Site&lt;/title&gt;
206
+ &lt;style&gt;
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
+ &lt;/style&gt;
218
+ &lt;/head&gt;
219
+ &lt;body&gt;
220
+ &lt;h1&gt;Welcome to My Site!&lt;/h1&gt;
221
+ &lt;p&gt;This website is hosted on YAKMESH — a post-quantum secure mesh network.&lt;/p&gt;
222
+ &lt;p&gt;No cloud providers. No central servers. Just you and the mesh.&lt;/p&gt;
223
+ &lt;/body&gt;
224
+ &lt;/html&gt;</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>