yakmesh 2.9.0 → 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/Caddyfile +77 -0
- package/README.md +119 -29
- package/content/api.js +50 -41
- package/content/index.js +1 -2
- package/content/store.js +323 -177
- 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 +274 -114
- 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 +4 -1
- package/mesh/darshan.js +17 -5
- package/mesh/gumba.js +47 -13
- package/mesh/jhilke.js +651 -0
- package/mesh/katha.js +5 -2
- package/mesh/nakpak-routing.js +8 -5
- package/mesh/network.js +724 -34
- package/mesh/pulse-sync.js +4 -1
- 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/yurt.js +72 -17
- 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/packet-checksum.js +201 -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 +6 -5
- 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-sidebar.cjs +164 -0
- package/security/crypto-config.js +4 -3
- package/security/dharma-moderation.js +4 -3
- 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 +18 -5
- package/security/namche-gateway.js +298 -69
- package/security/sakshi.js +102 -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/scripts/update-docs-nav.cjs +0 -194
- package/update-docs-nav.cjs +0 -18
- package/update-nav.ps1 +0 -16
- 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,539 @@
|
|
|
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>Security for Non-Techies - YAKMESH Tutorials</title>
|
|
10
|
+
<meta name="description" content="Essential security guide for YAKMESH node operators. Firewall basics, safe exposure, quantum-resistant crypto explained simply.">
|
|
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-accent-hover:hover { color: #34d399; }
|
|
18
|
+
.theme-badge { background: rgba(16, 185, 129, 0.2); color: #34d399; }
|
|
19
|
+
.theme-border { border-color: #10b981; }
|
|
20
|
+
.theme-callout { background: rgba(16, 185, 129, 0.1); border-color: #059669; }
|
|
21
|
+
.active-link { background: rgba(16, 185, 129, 0.2) !important; color: #34d399 !important; }
|
|
22
|
+
.tutorial-card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; }
|
|
23
|
+
.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; flex-shrink: 0; }
|
|
24
|
+
.port-table { width: 100%; border-collapse: collapse; margin: 1rem 0; }
|
|
25
|
+
.port-table th, .port-table td { padding: 0.75rem; text-align: left; border-bottom: 1px solid #334155; }
|
|
26
|
+
.port-table th { color: #10b981; font-weight: 600; }
|
|
27
|
+
.safe { color: #10b981; }
|
|
28
|
+
.caution { color: #fbbf24; }
|
|
29
|
+
.danger { color: #ef4444; }
|
|
30
|
+
.analogy-box { background: rgba(245, 158, 11, 0.1); border: 1px solid rgba(245, 158, 11, 0.3); border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
31
|
+
.analogy-box::before { content: '💡 '; }
|
|
32
|
+
.warning-box { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
33
|
+
.warning-box::before { content: '⚠️ '; }
|
|
34
|
+
.success-box { background: rgba(16, 185, 129, 0.1); border: 1px solid rgba(16, 185, 129, 0.3); border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
35
|
+
.success-box::before { content: '✓ '; }
|
|
36
|
+
.trouble-sign { background: rgba(239, 68, 68, 0.05); border: 1px solid #334155; border-radius: 0.5rem; padding: 1rem; margin: 0.5rem 0; }
|
|
37
|
+
</style>
|
|
38
|
+
</head>
|
|
39
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
40
|
+
|
|
41
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
42
|
+
<a href="../index.html" class="sidebar-logo">
|
|
43
|
+
<span class="logo-icon">🏔️</span>
|
|
44
|
+
<span class="logo-text">Yakmesh</span>
|
|
45
|
+
</a>
|
|
46
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
|
|
47
|
+
<ul class="sidebar-nav">
|
|
48
|
+
<li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
|
|
49
|
+
<li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
|
|
50
|
+
<li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
|
|
51
|
+
<li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
|
|
52
|
+
<li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
|
|
53
|
+
<li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
|
|
54
|
+
<li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
|
|
55
|
+
<li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
|
|
56
|
+
<li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
|
|
57
|
+
<li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
|
|
58
|
+
<li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
|
|
59
|
+
<li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
|
|
60
|
+
<li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
|
|
61
|
+
<li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
|
|
62
|
+
<li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
|
|
63
|
+
<li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
|
|
64
|
+
<li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
|
|
65
|
+
<li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
|
|
66
|
+
<li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
|
|
67
|
+
<li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
|
|
68
|
+
<li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
|
|
69
|
+
<li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
|
|
70
|
+
<li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
|
|
71
|
+
<li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
|
|
72
|
+
<li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
|
|
73
|
+
<li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
|
|
74
|
+
<li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
|
|
75
|
+
<li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
|
|
76
|
+
<li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
|
|
77
|
+
<li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
|
|
78
|
+
<li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
|
|
79
|
+
</ul>
|
|
80
|
+
</nav>
|
|
81
|
+
|
|
82
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
|
|
83
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
84
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
|
|
85
|
+
</svg>
|
|
86
|
+
</button>
|
|
87
|
+
|
|
88
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
89
|
+
|
|
90
|
+
<main class="docs-main" id="mainContent">
|
|
91
|
+
<div class="docs-content">
|
|
92
|
+
|
|
93
|
+
<!-- Breadcrumb -->
|
|
94
|
+
<nav class="text-sm text-mountain-400 mb-6">
|
|
95
|
+
<a href="../tutorials.html" class="hover:text-white transition">Tutorials</a>
|
|
96
|
+
<span class="mx-2">/</span>
|
|
97
|
+
<span class="text-white">Security for Non-Techies</span>
|
|
98
|
+
</nav>
|
|
99
|
+
|
|
100
|
+
<!-- Page Header -->
|
|
101
|
+
<div class="mb-8">
|
|
102
|
+
<div class="flex items-center gap-3 mb-2">
|
|
103
|
+
<span class="text-4xl">🛡️</span>
|
|
104
|
+
<h1 class="text-4xl font-bold">Security for Non-Techies</h1>
|
|
105
|
+
<span class="theme-badge text-xs px-2 py-1 rounded-full">12 min read</span>
|
|
106
|
+
</div>
|
|
107
|
+
<p class="theme-accent text-lg">Keep your node safe without a computer science degree</p>
|
|
108
|
+
<p class="text-mountain-300 mt-2">
|
|
109
|
+
Practical security advice for running a YAKMESH node. We'll explain firewalls,
|
|
110
|
+
quantum-resistant crypto, and warning signs—all in plain English.
|
|
111
|
+
</p>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<!-- Section 1: Firewall Basics -->
|
|
115
|
+
<div class="tutorial-card">
|
|
116
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
117
|
+
<span class="step-number">1</span>
|
|
118
|
+
Firewall Basics: What Ports to Open
|
|
119
|
+
</h2>
|
|
120
|
+
|
|
121
|
+
<div class="analogy-box">
|
|
122
|
+
<strong>What's a firewall?</strong> Think of it as a bouncer at a club. It decides
|
|
123
|
+
which network traffic gets in and which gets blocked. Ports are like different doors—
|
|
124
|
+
each service uses a specific numbered door.
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<p class="text-mountain-300 mb-4 mt-4">
|
|
128
|
+
YAKMESH needs a few ports open to work. Here's what they do:
|
|
129
|
+
</p>
|
|
130
|
+
|
|
131
|
+
<table class="port-table">
|
|
132
|
+
<thead>
|
|
133
|
+
<tr>
|
|
134
|
+
<th>Port</th>
|
|
135
|
+
<th>Service</th>
|
|
136
|
+
<th>Required?</th>
|
|
137
|
+
<th>Notes</th>
|
|
138
|
+
</tr>
|
|
139
|
+
</thead>
|
|
140
|
+
<tbody>
|
|
141
|
+
<tr>
|
|
142
|
+
<td class="font-mono">9525</td>
|
|
143
|
+
<td class="text-mountain-300">YAKMESH P2P</td>
|
|
144
|
+
<td class="safe">Yes</td>
|
|
145
|
+
<td class="text-mountain-400">Main mesh communication</td>
|
|
146
|
+
</tr>
|
|
147
|
+
<tr>
|
|
148
|
+
<td class="font-mono">9526</td>
|
|
149
|
+
<td class="text-mountain-300">Dashboard UI</td>
|
|
150
|
+
<td class="caution">Local only</td>
|
|
151
|
+
<td class="text-mountain-400">Keep this local—don't expose to internet</td>
|
|
152
|
+
</tr>
|
|
153
|
+
<tr>
|
|
154
|
+
<td class="font-mono">9527</td>
|
|
155
|
+
<td class="text-mountain-300">API</td>
|
|
156
|
+
<td class="caution">Optional</td>
|
|
157
|
+
<td class="text-mountain-400">Only if you need remote API access</td>
|
|
158
|
+
</tr>
|
|
159
|
+
<tr>
|
|
160
|
+
<td class="font-mono">443</td>
|
|
161
|
+
<td class="text-mountain-300">HTTPS Gateway</td>
|
|
162
|
+
<td class="caution">Optional</td>
|
|
163
|
+
<td class="text-mountain-400">If serving websites via NAMCHE</td>
|
|
164
|
+
</tr>
|
|
165
|
+
</tbody>
|
|
166
|
+
</table>
|
|
167
|
+
|
|
168
|
+
<h3 class="text-lg font-semibold mt-6 mb-3 text-white">Quick Firewall Setup</h3>
|
|
169
|
+
|
|
170
|
+
<p class="text-mountain-400 text-sm mb-2">On Windows (PowerShell as Admin):</p>
|
|
171
|
+
<pre class="language-powershell mb-4"><code># Allow YAKMESH P2P port
|
|
172
|
+
New-NetFirewallRule -DisplayName "YAKMESH P2P" -Direction Inbound -Port 9525 -Protocol TCP -Action Allow</code></pre>
|
|
173
|
+
|
|
174
|
+
<p class="text-mountain-400 text-sm mb-2">On Linux (UFW):</p>
|
|
175
|
+
<pre class="language-bash mb-4"><code># Allow YAKMESH P2P port
|
|
176
|
+
sudo ufw allow 9525/tcp
|
|
177
|
+
|
|
178
|
+
# Check status
|
|
179
|
+
sudo ufw status</code></pre>
|
|
180
|
+
|
|
181
|
+
<p class="text-mountain-400 text-sm mb-2">On macOS:</p>
|
|
182
|
+
<pre class="language-bash"><code># macOS firewall is managed through System Preferences
|
|
183
|
+
# Go to: System Preferences > Security & Privacy > Firewall > Firewall Options
|
|
184
|
+
# Add Node.js to allowed apps</code></pre>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<!-- Section 2: What's Safe to Expose -->
|
|
188
|
+
<div class="tutorial-card">
|
|
189
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
190
|
+
<span class="step-number">2</span>
|
|
191
|
+
What's Safe to Expose, What's Not
|
|
192
|
+
</h2>
|
|
193
|
+
<p class="text-mountain-300 mb-4">
|
|
194
|
+
Not everything should be accessible from the internet. Here's a simple guide:
|
|
195
|
+
</p>
|
|
196
|
+
|
|
197
|
+
<div class="success-box mb-4">
|
|
198
|
+
<strong class="text-white">Safe to expose to the internet:</strong>
|
|
199
|
+
<ul class="mt-2 space-y-1 text-mountain-300">
|
|
200
|
+
<li>• Port 9525 (P2P mesh) — This is designed for public access</li>
|
|
201
|
+
<li>• Port 443 (HTTPS gateway) — If you're hosting a website</li>
|
|
202
|
+
<li>• Content you explicitly share — YAKMESH won't leak other files</li>
|
|
203
|
+
</ul>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<div class="warning-box mb-4">
|
|
207
|
+
<strong class="text-white">Keep local only (don't expose):</strong>
|
|
208
|
+
<ul class="mt-2 space-y-1 text-mountain-300">
|
|
209
|
+
<li>• Port 9526 (Dashboard) — Anyone could control your node</li>
|
|
210
|
+
<li>• Port 9527 (API) — Unless you've set up API authentication</li>
|
|
211
|
+
<li>• Your data/ folder — Contains your private keys</li>
|
|
212
|
+
</ul>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div class="analogy-box">
|
|
216
|
+
<strong>Think of it like your house:</strong> The front door (P2P port) is made for
|
|
217
|
+
visitors. But you wouldn't give strangers access to your bedroom (dashboard) or
|
|
218
|
+
your safe (private keys).
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<h3 class="text-lg font-semibold mt-6 mb-3 text-white">Binding to Localhost</h3>
|
|
222
|
+
<p class="text-mountain-300 mb-4">
|
|
223
|
+
By default, your dashboard only listens on <code class="bg-mountain-800 px-2 py-1 rounded">localhost</code>
|
|
224
|
+
(127.0.0.1), meaning only your computer can access it. Don't change this unless you know what you're doing.
|
|
225
|
+
</p>
|
|
226
|
+
|
|
227
|
+
<pre class="language-javascript"><code>// In yakmesh.config.js - SAFE defaults
|
|
228
|
+
export default {
|
|
229
|
+
dashboard: {
|
|
230
|
+
host: '127.0.0.1', // Only local access - KEEP THIS
|
|
231
|
+
port: 9526,
|
|
232
|
+
},
|
|
233
|
+
p2p: {
|
|
234
|
+
host: '0.0.0.0', // All interfaces - OK for P2P
|
|
235
|
+
port: 9525,
|
|
236
|
+
},
|
|
237
|
+
}</code></pre>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<!-- Section 3: Quantum-Resistant Crypto Explained -->
|
|
241
|
+
<div class="tutorial-card">
|
|
242
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
243
|
+
<span class="step-number">3</span>
|
|
244
|
+
Quantum-Resistant Crypto (Simple Terms)
|
|
245
|
+
</h2>
|
|
246
|
+
|
|
247
|
+
<p class="text-mountain-300 mb-4">
|
|
248
|
+
You've probably heard us mention "quantum-resistant" or "post-quantum" security.
|
|
249
|
+
Here's what that actually means for you:
|
|
250
|
+
</p>
|
|
251
|
+
|
|
252
|
+
<div class="analogy-box">
|
|
253
|
+
<strong>The problem:</strong> Future quantum computers could break the encryption
|
|
254
|
+
that protects most of the internet today. It's like having a super-lockpick that
|
|
255
|
+
can open any traditional lock.
|
|
256
|
+
</div>
|
|
257
|
+
|
|
258
|
+
<p class="text-mountain-300 my-4">
|
|
259
|
+
<strong>The solution:</strong> YAKMESH uses new types of encryption that quantum
|
|
260
|
+
computers can't break. These are based on different math problems.
|
|
261
|
+
</p>
|
|
262
|
+
|
|
263
|
+
<h3 class="text-lg font-semibold mt-6 mb-3 text-white">What YAKMESH Uses</h3>
|
|
264
|
+
|
|
265
|
+
<ul class="space-y-3 text-mountain-300">
|
|
266
|
+
<li class="flex items-start gap-3">
|
|
267
|
+
<span class="text-purple-400 text-xl">🔐</span>
|
|
268
|
+
<div>
|
|
269
|
+
<strong class="text-white">ML-DSA-65</strong> (for signatures)<br>
|
|
270
|
+
<span class="text-sm">Proves messages really came from you. Based on mathematical
|
|
271
|
+
lattices—imagine a 3D grid that's hard to navigate backward.</span>
|
|
272
|
+
</div>
|
|
273
|
+
</li>
|
|
274
|
+
<li class="flex items-start gap-3">
|
|
275
|
+
<span class="text-purple-400 text-xl">🔒</span>
|
|
276
|
+
<div>
|
|
277
|
+
<strong class="text-white">Kyber</strong> (for key exchange)<br>
|
|
278
|
+
<span class="text-sm">Lets two nodes agree on a secret key securely. Also lattice-based.</span>
|
|
279
|
+
</div>
|
|
280
|
+
</li>
|
|
281
|
+
<li class="flex items-start gap-3">
|
|
282
|
+
<span class="text-purple-400 text-xl">🛡️</span>
|
|
283
|
+
<div>
|
|
284
|
+
<strong class="text-white">AES-256</strong> (for encryption)<br>
|
|
285
|
+
<span class="text-sm">The actual encryption of your data. Already quantum-resistant
|
|
286
|
+
with 256-bit keys.</span>
|
|
287
|
+
</div>
|
|
288
|
+
</li>
|
|
289
|
+
<li class="flex items-start gap-3">
|
|
290
|
+
<span class="text-purple-400 text-xl">🔢</span>
|
|
291
|
+
<div>
|
|
292
|
+
<strong class="text-white">144T Ternary Addressing</strong> (for routing)<br>
|
|
293
|
+
<span class="text-sm">Peer addresses use 144 balanced trits instead of binary.
|
|
294
|
+
Provides ~228 bits of classical security with inherent quantum resistance—
|
|
295
|
+
Grover's algorithm gains no advantage over ternary systems, giving
|
|
296
|
+
256-bit equivalent post-quantum hardening for mesh routing.</span>
|
|
297
|
+
</div>
|
|
298
|
+
</li>
|
|
299
|
+
</ul>
|
|
300
|
+
|
|
301
|
+
<h3 class="text-lg font-semibold mt-6 mb-3 text-white">What This Means for You</h3>
|
|
302
|
+
|
|
303
|
+
<div class="success-box">
|
|
304
|
+
<strong class="text-white">Good news:</strong> You don't need to do anything special.
|
|
305
|
+
YAKMESH handles all of this automatically. Your data is protected against both
|
|
306
|
+
today's computers and tomorrow's quantum computers.
|
|
307
|
+
</div>
|
|
308
|
+
|
|
309
|
+
<p class="text-mountain-300 mt-4">
|
|
310
|
+
You can verify your node is using quantum-resistant crypto:
|
|
311
|
+
</p>
|
|
312
|
+
<pre class="language-bash"><code>npx yakmesh security check
|
|
313
|
+
|
|
314
|
+
# Should show:
|
|
315
|
+
# ✓ ML-DSA-65 signatures: Active
|
|
316
|
+
# ✓ Kyber key exchange: Active
|
|
317
|
+
# ✓ AES-256 encryption: Active</code></pre>
|
|
318
|
+
</div>
|
|
319
|
+
|
|
320
|
+
<!-- Section 4: Keeping Your Node Updated -->
|
|
321
|
+
<div class="tutorial-card">
|
|
322
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
323
|
+
<span class="step-number">4</span>
|
|
324
|
+
Keeping Your Node Updated
|
|
325
|
+
</h2>
|
|
326
|
+
<p class="text-mountain-300 mb-4">
|
|
327
|
+
Updates fix security holes. An outdated node is a vulnerable node. Here's how to stay current:
|
|
328
|
+
</p>
|
|
329
|
+
|
|
330
|
+
<h3 class="text-lg font-semibold mb-3 text-white">Check for Updates</h3>
|
|
331
|
+
<pre class="language-bash mb-4"><code># See your current version
|
|
332
|
+
npx yakmesh --version
|
|
333
|
+
|
|
334
|
+
# Check if updates are available
|
|
335
|
+
npm outdated yakmesh</code></pre>
|
|
336
|
+
|
|
337
|
+
<h3 class="text-lg font-semibold mb-3 text-white">Install Updates</h3>
|
|
338
|
+
<pre class="language-bash mb-4"><code># Update to latest stable version
|
|
339
|
+
npm update yakmesh
|
|
340
|
+
|
|
341
|
+
# Or for major updates
|
|
342
|
+
npm install yakmesh@latest</code></pre>
|
|
343
|
+
|
|
344
|
+
<h3 class="text-lg font-semibold mb-3 text-white">Enable Auto-Update Notifications</h3>
|
|
345
|
+
<pre class="language-javascript mb-4"><code>// In yakmesh.config.js
|
|
346
|
+
export default {
|
|
347
|
+
updates: {
|
|
348
|
+
checkOnStartup: true, // Check for updates when node starts
|
|
349
|
+
notifyInDashboard: true, // Show update banner in dashboard
|
|
350
|
+
},
|
|
351
|
+
}</code></pre>
|
|
352
|
+
|
|
353
|
+
<div class="warning-box">
|
|
354
|
+
<strong>Before major updates:</strong> Always backup your <code class="bg-mountain-800 px-2 py-1 rounded">data/</code>
|
|
355
|
+
folder first. Major version updates might include changes that need migration.
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<p class="text-mountain-300 mt-4">
|
|
359
|
+
<strong>Update frequency:</strong> Security patches are released as needed (check
|
|
360
|
+
announcements). Feature updates come monthly. We recommend updating within a week
|
|
361
|
+
of any security release.
|
|
362
|
+
</p>
|
|
363
|
+
</div>
|
|
364
|
+
|
|
365
|
+
<!-- Section 5: Signs of Trouble -->
|
|
366
|
+
<div class="tutorial-card">
|
|
367
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
368
|
+
<span class="step-number">5</span>
|
|
369
|
+
Signs of Trouble (What to Watch For)
|
|
370
|
+
</h2>
|
|
371
|
+
<p class="text-mountain-300 mb-4">
|
|
372
|
+
Your node will usually tell you if something's wrong. Here are warning signs to watch for:
|
|
373
|
+
</p>
|
|
374
|
+
|
|
375
|
+
<div class="trouble-sign">
|
|
376
|
+
<h4 class="font-semibold text-red-400 mb-2">🚨 Sudden spike in bandwidth or CPU</h4>
|
|
377
|
+
<p class="text-mountain-400 text-sm">
|
|
378
|
+
<strong>What it might mean:</strong> Someone might be abusing your node, or you're
|
|
379
|
+
under a denial-of-service attack.<br>
|
|
380
|
+
<strong>What to do:</strong> Check the dashboard for unusual peer activity. Consider
|
|
381
|
+
temporarily restricting connections.
|
|
382
|
+
</p>
|
|
383
|
+
</div>
|
|
384
|
+
|
|
385
|
+
<div class="trouble-sign">
|
|
386
|
+
<h4 class="font-semibold text-red-400 mb-2">🚨 Many failed authentication attempts</h4>
|
|
387
|
+
<p class="text-mountain-400 text-sm">
|
|
388
|
+
<strong>What it might mean:</strong> Someone is trying to guess credentials or
|
|
389
|
+
exploit your node.<br>
|
|
390
|
+
<strong>What to do:</strong> Check logs for the source. Block repeated offenders.
|
|
391
|
+
Ensure your API has authentication enabled.
|
|
392
|
+
</p>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
<div class="trouble-sign">
|
|
396
|
+
<h4 class="font-semibold text-red-400 mb-2">🚨 Unexpected peers connecting</h4>
|
|
397
|
+
<p class="text-mountain-400 text-sm">
|
|
398
|
+
<strong>What it might mean:</strong> Could be normal mesh discovery, or could be
|
|
399
|
+
someone trying to eclipse your node.<br>
|
|
400
|
+
<strong>What to do:</strong> Check peer diversity. If all new peers are from the
|
|
401
|
+
same source, that's suspicious.
|
|
402
|
+
</p>
|
|
403
|
+
</div>
|
|
404
|
+
|
|
405
|
+
<div class="trouble-sign">
|
|
406
|
+
<h4 class="font-semibold text-red-400 mb-2">🚨 KARMA score dropping unexpectedly</h4>
|
|
407
|
+
<p class="text-mountain-400 text-sm">
|
|
408
|
+
<strong>What it might mean:</strong> Your node might be serving bad data or having
|
|
409
|
+
connectivity issues you're not aware of.<br>
|
|
410
|
+
<strong>What to do:</strong> Run <code class="bg-mountain-800 px-1 rounded">npx yakmesh diagnose</code>
|
|
411
|
+
to check for problems.
|
|
412
|
+
</p>
|
|
413
|
+
</div>
|
|
414
|
+
|
|
415
|
+
<div class="trouble-sign">
|
|
416
|
+
<h4 class="font-semibold text-red-400 mb-2">🚨 Warnings about time sync</h4>
|
|
417
|
+
<p class="text-mountain-400 text-sm">
|
|
418
|
+
<strong>What it might mean:</strong> Your system clock is drifting, which affects
|
|
419
|
+
security and trust scoring.<br>
|
|
420
|
+
<strong>What to do:</strong> Enable NTP time sync on your computer. Check your
|
|
421
|
+
internet connection.
|
|
422
|
+
</p>
|
|
423
|
+
</div>
|
|
424
|
+
|
|
425
|
+
<h3 class="text-lg font-semibold mt-6 mb-3 text-white">Quick Health Check</h3>
|
|
426
|
+
<pre class="language-bash"><code># Run a full diagnostic
|
|
427
|
+
npx yakmesh diagnose
|
|
428
|
+
|
|
429
|
+
# Check security status
|
|
430
|
+
npx yakmesh security audit
|
|
431
|
+
|
|
432
|
+
# View recent warnings
|
|
433
|
+
npx yakmesh logs --level=warn --last=50</code></pre>
|
|
434
|
+
</div>
|
|
435
|
+
|
|
436
|
+
<!-- Section 6: Emergency Procedures -->
|
|
437
|
+
<div class="tutorial-card">
|
|
438
|
+
<h2 class="text-2xl font-bold mb-4 flex items-center">
|
|
439
|
+
<span class="step-number">6</span>
|
|
440
|
+
If Something Goes Wrong
|
|
441
|
+
</h2>
|
|
442
|
+
<p class="text-mountain-300 mb-4">
|
|
443
|
+
If you suspect your node has been compromised:
|
|
444
|
+
</p>
|
|
445
|
+
|
|
446
|
+
<ol class="space-y-4 text-mountain-300">
|
|
447
|
+
<li class="flex items-start gap-3">
|
|
448
|
+
<span class="step-number text-sm">1</span>
|
|
449
|
+
<div>
|
|
450
|
+
<strong class="text-white">Stop the node immediately</strong><br>
|
|
451
|
+
<code class="bg-mountain-800 px-2 py-1 rounded text-sm">npx yakmesh stop</code> or just close the terminal
|
|
452
|
+
</div>
|
|
453
|
+
</li>
|
|
454
|
+
<li class="flex items-start gap-3">
|
|
455
|
+
<span class="step-number text-sm">2</span>
|
|
456
|
+
<div>
|
|
457
|
+
<strong class="text-white">Disconnect from the network</strong><br>
|
|
458
|
+
If it's serious, physically disconnect your computer from the internet
|
|
459
|
+
</div>
|
|
460
|
+
</li>
|
|
461
|
+
<li class="flex items-start gap-3">
|
|
462
|
+
<span class="step-number text-sm">3</span>
|
|
463
|
+
<div>
|
|
464
|
+
<strong class="text-white">Check what happened</strong><br>
|
|
465
|
+
Review logs in <code class="bg-mountain-800 px-2 py-1 rounded text-sm">data/logs/</code>
|
|
466
|
+
</div>
|
|
467
|
+
</li>
|
|
468
|
+
<li class="flex items-start gap-3">
|
|
469
|
+
<span class="step-number text-sm">4</span>
|
|
470
|
+
<div>
|
|
471
|
+
<strong class="text-white">Generate new identity if compromised</strong><br>
|
|
472
|
+
<code class="bg-mountain-800 px-2 py-1 rounded text-sm">npx yakmesh identity regenerate</code>
|
|
473
|
+
</div>
|
|
474
|
+
</li>
|
|
475
|
+
<li class="flex items-start gap-3">
|
|
476
|
+
<span class="step-number text-sm">5</span>
|
|
477
|
+
<div>
|
|
478
|
+
<strong class="text-white">Report the issue</strong><br>
|
|
479
|
+
Contact us at <a href="mailto:security@peerquanta.com" class="text-emerald-400 hover:underline">security@peerquanta.com</a>
|
|
480
|
+
</div>
|
|
481
|
+
</li>
|
|
482
|
+
</ol>
|
|
483
|
+
|
|
484
|
+
<div class="success-box mt-6">
|
|
485
|
+
<strong class="text-white">Prevention is better than cure:</strong> Keep your node
|
|
486
|
+
updated, don't expose unnecessary ports, and check your dashboard regularly. Most
|
|
487
|
+
security incidents are preventable with basic hygiene.
|
|
488
|
+
</div>
|
|
489
|
+
</div>
|
|
490
|
+
|
|
491
|
+
<!-- Summary -->
|
|
492
|
+
<div class="bg-mountain-800/50 rounded-xl p-6 border border-mountain-700 mb-8">
|
|
493
|
+
<h2 class="text-xl font-bold mb-4">📌 Security Checklist</h2>
|
|
494
|
+
<ul class="space-y-2 text-mountain-300">
|
|
495
|
+
<li>☐ Port 9525 open for P2P (required)</li>
|
|
496
|
+
<li>☐ Dashboard (9526) bound to localhost only</li>
|
|
497
|
+
<li>☐ Node is running the latest version</li>
|
|
498
|
+
<li>☐ Auto-update notifications enabled</li>
|
|
499
|
+
<li>☐ Regular backups of data/ folder</li>
|
|
500
|
+
<li>☐ Dashboard checked weekly for warnings</li>
|
|
501
|
+
<li>☐ System time synchronized (NTP enabled)</li>
|
|
502
|
+
</ul>
|
|
503
|
+
</div>
|
|
504
|
+
|
|
505
|
+
<!-- Navigation Footer -->
|
|
506
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
507
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
508
|
+
<a href="privacy.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
509
|
+
<div class="text-xs text-mountain-400 mb-1">← Previous</div>
|
|
510
|
+
<div class="flex items-center gap-2">
|
|
511
|
+
<span class="text-xl">🔏</span>
|
|
512
|
+
<span class="font-semibold group-hover:text-emerald-400">Privacy Guide</span>
|
|
513
|
+
</div>
|
|
514
|
+
</a>
|
|
515
|
+
<a href="domain-setup.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
516
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
517
|
+
<div class="flex items-center gap-2">
|
|
518
|
+
<span class="text-xl">🌍</span>
|
|
519
|
+
<span class="font-semibold group-hover:text-emerald-400">Using with a Domain Name</span>
|
|
520
|
+
</div>
|
|
521
|
+
</a>
|
|
522
|
+
</div>
|
|
523
|
+
</div>
|
|
524
|
+
|
|
525
|
+
<!-- Version Badge -->
|
|
526
|
+
<div class="mt-8 pt-6 border-t border-mountain-700">
|
|
527
|
+
<span class="inline-block text-xs theme-badge px-2 py-1 rounded">v2.8.2</span>
|
|
528
|
+
<span class="text-mountain-500 text-sm ml-2">Last updated: February 2026</span>
|
|
529
|
+
</div>
|
|
530
|
+
|
|
531
|
+
</div>
|
|
532
|
+
</main>
|
|
533
|
+
|
|
534
|
+
<script src="../prism.min.js"></script>
|
|
535
|
+
<script src="../prism-javascript.min.js"></script>
|
|
536
|
+
<script src="../prism-bash.min.js"></script>
|
|
537
|
+
<script src="../docs.js"></script>
|
|
538
|
+
</body>
|
|
539
|
+
</html>
|