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,654 @@
|
|
|
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>Backup & Recovery - YAKMESH Tutorials</title>
|
|
10
|
+
<meta name="description" content="Learn how to backup your YAKMESH node identity and data, and restore everything on a new machine. Protect your karma score and cryptographic keys.">
|
|
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
|
+
.warning-box { background: rgba(251, 191, 36, 0.1); border: 1px solid #fbbf24; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
22
|
+
.danger-box { background: rgba(239, 68, 68, 0.1); border: 1px solid #ef4444; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
23
|
+
.tip-box { background: rgba(16, 185, 129, 0.1); border: 1px solid #10b981; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
24
|
+
.info-box { background: rgba(59, 130, 246, 0.1); border: 1px solid #3b82f6; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
|
|
25
|
+
.file-list { background: rgba(15, 23, 42, 0.6); border-radius: 0.5rem; padding: 1rem; font-family: monospace; }
|
|
26
|
+
.file-important { color: #f59e0b; }
|
|
27
|
+
.file-optional { color: #6b7280; }
|
|
28
|
+
</style>
|
|
29
|
+
</head>
|
|
30
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
31
|
+
|
|
32
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
33
|
+
<a href="../index.html" class="sidebar-logo">
|
|
34
|
+
<span class="logo-icon">🏔️</span>
|
|
35
|
+
<span class="logo-text">Yakmesh</span>
|
|
36
|
+
</a>
|
|
37
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
|
|
38
|
+
<ul class="sidebar-nav">
|
|
39
|
+
<li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
|
|
40
|
+
<li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
|
|
41
|
+
<li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
|
|
42
|
+
<li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
|
|
43
|
+
<li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
|
|
44
|
+
<li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
|
|
45
|
+
<li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
|
|
46
|
+
<li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
|
|
47
|
+
<li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
|
|
48
|
+
<li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
|
|
49
|
+
<li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
|
|
50
|
+
<li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
|
|
51
|
+
<li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
|
|
52
|
+
<li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
|
|
53
|
+
<li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
|
|
54
|
+
<li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
|
|
55
|
+
<li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
|
|
56
|
+
<li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
|
|
57
|
+
<li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
|
|
58
|
+
<li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
|
|
59
|
+
<li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
|
|
60
|
+
<li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
|
|
61
|
+
<li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
|
|
62
|
+
<li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
|
|
63
|
+
<li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
|
|
64
|
+
<li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
|
|
65
|
+
<li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
|
|
66
|
+
<li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
|
|
67
|
+
<li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
|
|
68
|
+
<li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
|
|
69
|
+
<li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
|
|
70
|
+
</ul>
|
|
71
|
+
</nav>
|
|
72
|
+
|
|
73
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">☰</button>
|
|
74
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
75
|
+
|
|
76
|
+
<main class="docs-main" id="mainContent">
|
|
77
|
+
<div class="docs-content">
|
|
78
|
+
<div class="mb-6">
|
|
79
|
+
<a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<!-- Header -->
|
|
83
|
+
<header class="mb-8">
|
|
84
|
+
<div class="flex items-center gap-3 mb-4">
|
|
85
|
+
<span class="text-4xl">💾</span>
|
|
86
|
+
<div>
|
|
87
|
+
<h1 class="text-3xl font-bold">Backup & Recovery</h1>
|
|
88
|
+
<p class="text-gray-400">Protect your node identity and data - restore on any machine</p>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="flex items-center gap-4 text-sm text-gray-400">
|
|
92
|
+
<span class="theme-badge px-3 py-1 rounded-full">Essential</span>
|
|
93
|
+
<span>⏱️ 10 min read</span>
|
|
94
|
+
<span>🔐 Security</span>
|
|
95
|
+
</div>
|
|
96
|
+
</header>
|
|
97
|
+
|
|
98
|
+
<!-- Introduction -->
|
|
99
|
+
<div class="tutorial-card">
|
|
100
|
+
<h2 class="text-xl font-semibold mb-4 theme-accent">Why Backup Matters</h2>
|
|
101
|
+
<p class="text-gray-300 mb-4">
|
|
102
|
+
Your YAKMESH node has a unique identity - a set of cryptographic keys that prove you are you
|
|
103
|
+
on the mesh network. If you lose these keys, you lose:
|
|
104
|
+
</p>
|
|
105
|
+
<ul class="list-disc list-inside text-gray-300 space-y-2">
|
|
106
|
+
<li><strong>Your Node ID</strong> - You'll get a new random identity</li>
|
|
107
|
+
<li><strong>Your Karma Score</strong> - All your accumulated reputation</li>
|
|
108
|
+
<li><strong>Your Connections</strong> - Trusted peer relationships</li>
|
|
109
|
+
<li><strong>Your Content Access</strong> - Encrypted content you've received</li>
|
|
110
|
+
</ul>
|
|
111
|
+
<p class="text-gray-300 mt-4">
|
|
112
|
+
This tutorial shows you how to backup everything important and restore it on a new machine.
|
|
113
|
+
It takes about 10 minutes and could save you from starting over from scratch.
|
|
114
|
+
</p>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<!-- What to Backup -->
|
|
118
|
+
<div class="tutorial-card">
|
|
119
|
+
<h2 class="text-xl font-semibold mb-4">📋 What to Backup</h2>
|
|
120
|
+
<p class="text-gray-300 mb-4">
|
|
121
|
+
There are two main things you need to backup: your <strong>identity</strong> (keys) and your <strong>data</strong> (stored content).
|
|
122
|
+
</p>
|
|
123
|
+
|
|
124
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Critical Files (Must Backup)</h3>
|
|
125
|
+
<div class="file-list">
|
|
126
|
+
<div class="space-y-2">
|
|
127
|
+
<div><span class="file-important">📁 keys/</span> <span class="text-gray-400">← Your cryptographic identity</span></div>
|
|
128
|
+
<div class="ml-4"><span class="file-important">🔑 node.key</span> <span class="text-gray-400">← Private key (NEVER share this)</span></div>
|
|
129
|
+
<div class="ml-4"><span class="file-important">🔑 node.pub</span> <span class="text-gray-400">← Public key</span></div>
|
|
130
|
+
<div class="ml-4"><span class="file-important">🔑 signing.key</span> <span class="text-gray-400">← Message signing key</span></div>
|
|
131
|
+
<div class="ml-4"><span class="file-important">📄 identity.json</span> <span class="text-gray-400">← Your Node ID and metadata</span></div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Important Files (Recommended)</h3>
|
|
136
|
+
<div class="file-list">
|
|
137
|
+
<div class="space-y-2">
|
|
138
|
+
<div><span class="text-white">📁 data/</span> <span class="text-gray-400">← Your stored content</span></div>
|
|
139
|
+
<div class="ml-4"><span class="text-gray-300">📁 shares/</span> <span class="text-gray-400">← Files you're sharing</span></div>
|
|
140
|
+
<div class="ml-4"><span class="text-gray-300">📁 received/</span> <span class="text-gray-400">← Downloaded content</span></div>
|
|
141
|
+
<div class="ml-4"><span class="text-gray-300">📁 blocks/</span> <span class="text-gray-400">← Content chunks</span></div>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Optional Files</h3>
|
|
146
|
+
<div class="file-list">
|
|
147
|
+
<div class="space-y-2">
|
|
148
|
+
<div><span class="file-optional">📄 config.yaml</span> <span class="text-gray-400">← Custom settings (can be recreated)</span></div>
|
|
149
|
+
<div><span class="file-optional">📁 cache/</span> <span class="text-gray-400">← Temporary files (auto-regenerated)</span></div>
|
|
150
|
+
<div><span class="file-optional">📁 logs/</span> <span class="text-gray-400">← Log files (usually not needed)</span></div>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
<div class="danger-box mt-4">
|
|
155
|
+
<p class="text-sm"><strong>🚨 Security Warning:</strong> Your <code class="bg-gray-800 px-2 py-1 rounded">keys/</code> folder
|
|
156
|
+
contains your private keys. Treat backups of this folder like passwords - encrypt them and store them securely.
|
|
157
|
+
Anyone with your keys can impersonate your node.</p>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
<!-- Finding Your Data -->
|
|
162
|
+
<div class="tutorial-card">
|
|
163
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
164
|
+
<span class="step-number">1</span>
|
|
165
|
+
Find Your YAKMESH Data Folder
|
|
166
|
+
</h2>
|
|
167
|
+
<p class="text-gray-300 mb-4">
|
|
168
|
+
First, you need to locate where YAKMESH stores its data. The location depends on your operating system:
|
|
169
|
+
</p>
|
|
170
|
+
|
|
171
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Windows</h3>
|
|
172
|
+
<pre><code class="language-bash"># Default location
|
|
173
|
+
%APPDATA%\yakmesh\
|
|
174
|
+
|
|
175
|
+
# Full path example
|
|
176
|
+
C:\Users\YourName\AppData\Roaming\yakmesh\</code></pre>
|
|
177
|
+
|
|
178
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">macOS</h3>
|
|
179
|
+
<pre><code class="language-bash"># Default location
|
|
180
|
+
~/Library/Application Support/yakmesh/
|
|
181
|
+
|
|
182
|
+
# Or check with
|
|
183
|
+
ls -la ~/Library/Application\ Support/yakmesh/</code></pre>
|
|
184
|
+
|
|
185
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Linux</h3>
|
|
186
|
+
<pre><code class="language-bash"># Default location
|
|
187
|
+
~/.config/yakmesh/
|
|
188
|
+
|
|
189
|
+
# Or following XDG spec
|
|
190
|
+
$XDG_CONFIG_HOME/yakmesh/</code></pre>
|
|
191
|
+
|
|
192
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Using the CLI</h3>
|
|
193
|
+
<pre><code class="language-bash"># Let YAKMESH tell you where it stores data
|
|
194
|
+
yakmesh config get data_dir
|
|
195
|
+
|
|
196
|
+
# Output example:
|
|
197
|
+
# data_dir: /home/user/.config/yakmesh/</code></pre>
|
|
198
|
+
|
|
199
|
+
<div class="tip-box mt-4">
|
|
200
|
+
<p class="text-sm"><strong>💡 Tip:</strong> If you used a custom installation path, check your
|
|
201
|
+
<code class="bg-gray-800 px-2 py-1 rounded">config.yaml</code> file or run
|
|
202
|
+
<code class="bg-gray-800 px-2 py-1 rounded">yakmesh config get</code> to see all paths.</p>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<!-- Export Identity -->
|
|
207
|
+
<div class="tutorial-card">
|
|
208
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
209
|
+
<span class="step-number">2</span>
|
|
210
|
+
Export Your Node Identity
|
|
211
|
+
</h2>
|
|
212
|
+
<p class="text-gray-300 mb-4">
|
|
213
|
+
YAKMESH provides a convenient command to export your identity in a portable, encrypted format:
|
|
214
|
+
</p>
|
|
215
|
+
|
|
216
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Quick Export (Encrypted)</h3>
|
|
217
|
+
<pre><code class="language-bash"># Export to an encrypted file
|
|
218
|
+
yakmesh identity export --output my-backup.yak
|
|
219
|
+
|
|
220
|
+
# You'll be prompted for a password:
|
|
221
|
+
# 🔐 Enter backup password: ********
|
|
222
|
+
# 🔐 Confirm password: ********
|
|
223
|
+
# ✅ Identity exported to: my-backup.yak</code></pre>
|
|
224
|
+
<p class="text-gray-300 mt-3">
|
|
225
|
+
This creates a single encrypted file containing your keys and identity. Remember the password -
|
|
226
|
+
you'll need it to restore!
|
|
227
|
+
</p>
|
|
228
|
+
|
|
229
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Export with Custom Options</h3>
|
|
230
|
+
<pre><code class="language-bash"># Include additional metadata
|
|
231
|
+
yakmesh identity export --output backup.yak --include-config
|
|
232
|
+
|
|
233
|
+
# Use stronger encryption (slower but more secure)
|
|
234
|
+
yakmesh identity export --output backup.yak --encryption-strength high
|
|
235
|
+
|
|
236
|
+
# Export without password (not recommended)
|
|
237
|
+
yakmesh identity export --output backup.yak --no-encrypt</code></pre>
|
|
238
|
+
|
|
239
|
+
<div class="warning-box mt-4">
|
|
240
|
+
<p class="text-sm"><strong>⚠️ Important:</strong> Store your backup password somewhere safe!
|
|
241
|
+
If you forget it, the backup file is useless - encrypted data cannot be recovered without the password.</p>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">View Export Contents (Without Secrets)</h3>
|
|
245
|
+
<pre><code class="language-bash"># See what's in an export file
|
|
246
|
+
yakmesh identity inspect my-backup.yak
|
|
247
|
+
|
|
248
|
+
# Output:
|
|
249
|
+
# 📦 Backup Contents:
|
|
250
|
+
# Node ID: doko-node-qubit-lattice-pq-a7x9
|
|
251
|
+
# Created: 2025-01-15 14:32:00
|
|
252
|
+
# Includes: keys, identity, peers
|
|
253
|
+
# Encrypted: Yes (AES-256-GCM)
|
|
254
|
+
# Size: 2.4 KB</code></pre>
|
|
255
|
+
</div>
|
|
256
|
+
|
|
257
|
+
<!-- Backup Data Folder -->
|
|
258
|
+
<div class="tutorial-card">
|
|
259
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
260
|
+
<span class="step-number">3</span>
|
|
261
|
+
Backup Your Data Folder
|
|
262
|
+
</h2>
|
|
263
|
+
<p class="text-gray-300 mb-4">
|
|
264
|
+
If you want to backup your stored content (shared files, received files), you'll need to copy
|
|
265
|
+
the entire data folder. This can be large depending on how much content you have.
|
|
266
|
+
</p>
|
|
267
|
+
|
|
268
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Using YAKMESH Export (Recommended)</h3>
|
|
269
|
+
<pre><code class="language-bash"># Export everything including content
|
|
270
|
+
yakmesh backup create --output full-backup.tar.gz
|
|
271
|
+
|
|
272
|
+
# This creates a compressed archive with:
|
|
273
|
+
# - Your identity (encrypted)
|
|
274
|
+
# - Your configuration
|
|
275
|
+
# - Your shared content
|
|
276
|
+
# - Your received content</code></pre>
|
|
277
|
+
|
|
278
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Manual Backup (Alternative)</h3>
|
|
279
|
+
|
|
280
|
+
<p class="text-gray-300 mb-2"><strong>Windows (PowerShell):</strong></p>
|
|
281
|
+
<pre><code class="language-bash"># Stop YAKMESH first
|
|
282
|
+
yakmesh stop
|
|
283
|
+
|
|
284
|
+
# Copy the entire folder
|
|
285
|
+
Copy-Item -Recurse "$env:APPDATA\yakmesh" "D:\Backups\yakmesh-backup"
|
|
286
|
+
|
|
287
|
+
# Or create a zip file
|
|
288
|
+
Compress-Archive -Path "$env:APPDATA\yakmesh" -DestinationPath "D:\Backups\yakmesh-backup.zip"</code></pre>
|
|
289
|
+
|
|
290
|
+
<p class="text-gray-300 mt-4 mb-2"><strong>macOS / Linux:</strong></p>
|
|
291
|
+
<pre><code class="language-bash"># Stop YAKMESH first
|
|
292
|
+
yakmesh stop
|
|
293
|
+
|
|
294
|
+
# Create a tarball
|
|
295
|
+
tar -czvf ~/yakmesh-backup.tar.gz ~/.config/yakmesh/
|
|
296
|
+
|
|
297
|
+
# Or for macOS
|
|
298
|
+
tar -czvf ~/yakmesh-backup.tar.gz ~/Library/Application\ Support/yakmesh/</code></pre>
|
|
299
|
+
|
|
300
|
+
<div class="tip-box mt-4">
|
|
301
|
+
<p class="text-sm"><strong>💡 Tip:</strong> Always stop YAKMESH before backing up manually to avoid
|
|
302
|
+
copying files that are being written to. The <code class="bg-gray-800 px-2 py-1 rounded">yakmesh backup create</code>
|
|
303
|
+
command handles this automatically.</p>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<!-- Selective Backup -->
|
|
308
|
+
<div class="tutorial-card">
|
|
309
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
310
|
+
<span class="step-number">4</span>
|
|
311
|
+
Selective Backup (Keys Only)
|
|
312
|
+
</h2>
|
|
313
|
+
<p class="text-gray-300 mb-4">
|
|
314
|
+
If you only care about preserving your identity (Node ID and karma), you can backup just the
|
|
315
|
+
keys folder. This creates a much smaller backup.
|
|
316
|
+
</p>
|
|
317
|
+
|
|
318
|
+
<pre><code class="language-bash"># Export just identity (smallest backup)
|
|
319
|
+
yakmesh identity export --output identity-only.yak
|
|
320
|
+
|
|
321
|
+
# File size: ~2-5 KB
|
|
322
|
+
# Contains: keys, node ID, basic config</code></pre>
|
|
323
|
+
|
|
324
|
+
<p class="text-gray-300 mt-4 mb-4">
|
|
325
|
+
Compare this to a full backup:
|
|
326
|
+
</p>
|
|
327
|
+
|
|
328
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
329
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
330
|
+
<h4 class="font-semibold text-green-400 mb-2">Identity Only (~5 KB)</h4>
|
|
331
|
+
<ul class="text-sm text-gray-300 space-y-1">
|
|
332
|
+
<li>✅ Your Node ID</li>
|
|
333
|
+
<li>✅ Your Karma Score</li>
|
|
334
|
+
<li>✅ Encryption keys</li>
|
|
335
|
+
<li>❌ Shared files</li>
|
|
336
|
+
<li>❌ Downloaded content</li>
|
|
337
|
+
</ul>
|
|
338
|
+
</div>
|
|
339
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
340
|
+
<h4 class="font-semibold text-blue-400 mb-2">Full Backup (varies)</h4>
|
|
341
|
+
<ul class="text-sm text-gray-300 space-y-1">
|
|
342
|
+
<li>✅ Your Node ID</li>
|
|
343
|
+
<li>✅ Your Karma Score</li>
|
|
344
|
+
<li>✅ Encryption keys</li>
|
|
345
|
+
<li>✅ Shared files</li>
|
|
346
|
+
<li>✅ Downloaded content</li>
|
|
347
|
+
</ul>
|
|
348
|
+
</div>
|
|
349
|
+
</div>
|
|
350
|
+
|
|
351
|
+
<div class="info-box mt-4">
|
|
352
|
+
<p class="text-sm"><strong>ℹ️ Recommendation:</strong> At minimum, always keep an identity backup.
|
|
353
|
+
Do full backups periodically if you have important content stored locally.</p>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
|
|
357
|
+
<!-- Restore on New Machine -->
|
|
358
|
+
<div class="tutorial-card">
|
|
359
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
360
|
+
<span class="step-number">5</span>
|
|
361
|
+
Restore from Backup
|
|
362
|
+
</h2>
|
|
363
|
+
<p class="text-gray-300 mb-4">
|
|
364
|
+
Now let's restore your backup on a new machine. First, install YAKMESH on the new computer,
|
|
365
|
+
then restore your identity before starting the node.
|
|
366
|
+
</p>
|
|
367
|
+
|
|
368
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Step A: Install YAKMESH</h3>
|
|
369
|
+
<pre><code class="language-bash"># Install YAKMESH (don't start it yet!)
|
|
370
|
+
# Use your preferred installation method from the Getting Started guide
|
|
371
|
+
|
|
372
|
+
# Verify installation
|
|
373
|
+
yakmesh --version</code></pre>
|
|
374
|
+
|
|
375
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Step B: Restore Identity</h3>
|
|
376
|
+
<pre><code class="language-bash"># Restore from encrypted export
|
|
377
|
+
yakmesh identity import my-backup.yak
|
|
378
|
+
|
|
379
|
+
# Enter your backup password when prompted:
|
|
380
|
+
# 🔐 Enter backup password: ********
|
|
381
|
+
#
|
|
382
|
+
# ✅ Identity restored successfully!
|
|
383
|
+
# Node ID: doko-node-qubit-lattice-pq-a7x9
|
|
384
|
+
# Keys: 3 files restored
|
|
385
|
+
# Config: Default settings applied</code></pre>
|
|
386
|
+
|
|
387
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Step C: Restore Full Backup (Optional)</h3>
|
|
388
|
+
<pre><code class="language-bash"># If you have a full backup with content
|
|
389
|
+
yakmesh backup restore full-backup.tar.gz
|
|
390
|
+
|
|
391
|
+
# This restores:
|
|
392
|
+
# - Identity and keys
|
|
393
|
+
# - Configuration
|
|
394
|
+
# - Shared content
|
|
395
|
+
# - Downloaded files</code></pre>
|
|
396
|
+
|
|
397
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Step D: Start Your Node</h3>
|
|
398
|
+
<pre><code class="language-bash"># Start YAKMESH with your restored identity
|
|
399
|
+
yakmesh start
|
|
400
|
+
|
|
401
|
+
# Verify it's using your old Node ID
|
|
402
|
+
yakmesh status
|
|
403
|
+
|
|
404
|
+
# 🏔️ YAKMESH Node Status
|
|
405
|
+
# Node ID: doko-node-qubit-lattice-pq-a7x9 ← Same as before!
|
|
406
|
+
# Status: 🟢 Online</code></pre>
|
|
407
|
+
|
|
408
|
+
<div class="tip-box mt-4">
|
|
409
|
+
<p class="text-sm"><strong>💡 Tip:</strong> After restoring, your node will reconnect to old peers
|
|
410
|
+
automatically. Your karma score syncs from the mesh network within a few minutes.</p>
|
|
411
|
+
</div>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
414
|
+
<!-- Manual Restore -->
|
|
415
|
+
<div class="tutorial-card">
|
|
416
|
+
<h2 class="text-xl font-semibold mb-4">
|
|
417
|
+
<span class="step-number">6</span>
|
|
418
|
+
Manual Restore (If Needed)
|
|
419
|
+
</h2>
|
|
420
|
+
<p class="text-gray-300 mb-4">
|
|
421
|
+
If you have a manual backup (copied folder or tarball), here's how to restore it:
|
|
422
|
+
</p>
|
|
423
|
+
|
|
424
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Windows</h3>
|
|
425
|
+
<pre><code class="language-bash"># Make sure YAKMESH is not running
|
|
426
|
+
yakmesh stop
|
|
427
|
+
|
|
428
|
+
# If the folder exists, back it up first
|
|
429
|
+
Move-Item "$env:APPDATA\yakmesh" "$env:APPDATA\yakmesh-old"
|
|
430
|
+
|
|
431
|
+
# Extract or copy your backup
|
|
432
|
+
Expand-Archive "D:\Backups\yakmesh-backup.zip" -DestinationPath "$env:APPDATA"
|
|
433
|
+
|
|
434
|
+
# Or if you copied a folder
|
|
435
|
+
Copy-Item -Recurse "D:\Backups\yakmesh-backup" "$env:APPDATA\yakmesh"</code></pre>
|
|
436
|
+
|
|
437
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">macOS / Linux</h3>
|
|
438
|
+
<pre><code class="language-bash"># Make sure YAKMESH is not running
|
|
439
|
+
yakmesh stop
|
|
440
|
+
|
|
441
|
+
# Back up existing data (if any)
|
|
442
|
+
mv ~/.config/yakmesh ~/.config/yakmesh-old
|
|
443
|
+
|
|
444
|
+
# Extract tarball
|
|
445
|
+
tar -xzvf ~/yakmesh-backup.tar.gz -C ~/
|
|
446
|
+
|
|
447
|
+
# Start YAKMESH
|
|
448
|
+
yakmesh start</code></pre>
|
|
449
|
+
|
|
450
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Restore Keys Only (Minimal)</h3>
|
|
451
|
+
<pre><code class="language-bash"># If you only have the keys folder backed up
|
|
452
|
+
mkdir -p ~/.config/yakmesh
|
|
453
|
+
cp -r /path/to/backup/keys ~/.config/yakmesh/
|
|
454
|
+
|
|
455
|
+
# Let YAKMESH recreate other files
|
|
456
|
+
yakmesh start</code></pre>
|
|
457
|
+
</div>
|
|
458
|
+
|
|
459
|
+
<!-- Important Files Detail -->
|
|
460
|
+
<div class="tutorial-card">
|
|
461
|
+
<h2 class="text-xl font-semibold mb-4">📁 Important Files Explained</h2>
|
|
462
|
+
<p class="text-gray-300 mb-4">
|
|
463
|
+
Here's a deeper look at what each important file does:
|
|
464
|
+
</p>
|
|
465
|
+
|
|
466
|
+
<div class="space-y-4">
|
|
467
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
468
|
+
<h4 class="font-semibold text-amber-400 mb-2">🔑 keys/node.key</h4>
|
|
469
|
+
<p class="text-sm text-gray-300">
|
|
470
|
+
Your private key. This is the most important file - it proves your identity on the network.
|
|
471
|
+
It's used to sign messages and decrypt content sent to you. <strong>NEVER share this file.</strong>
|
|
472
|
+
</p>
|
|
473
|
+
</div>
|
|
474
|
+
|
|
475
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
476
|
+
<h4 class="font-semibold text-amber-400 mb-2">🔑 keys/signing.key</h4>
|
|
477
|
+
<p class="text-sm text-gray-300">
|
|
478
|
+
Used for cryptographic signatures on messages you send. This is derived from your main key
|
|
479
|
+
but kept separate for security reasons.
|
|
480
|
+
</p>
|
|
481
|
+
</div>
|
|
482
|
+
|
|
483
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
484
|
+
<h4 class="font-semibold text-amber-400 mb-2">📄 keys/identity.json</h4>
|
|
485
|
+
<p class="text-sm text-gray-300">
|
|
486
|
+
Contains your public Node ID, creation date, and protocol version. This information is
|
|
487
|
+
public - it's what other nodes see when they connect to you.
|
|
488
|
+
</p>
|
|
489
|
+
</div>
|
|
490
|
+
|
|
491
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
492
|
+
<h4 class="font-semibold text-gray-200 mb-2">📁 data/shares/</h4>
|
|
493
|
+
<p class="text-sm text-gray-300">
|
|
494
|
+
Index of files you're currently sharing. The actual files stay in their original locations;
|
|
495
|
+
this folder contains metadata and content hashes.
|
|
496
|
+
</p>
|
|
497
|
+
</div>
|
|
498
|
+
|
|
499
|
+
<div class="bg-gray-800/50 rounded-lg p-4">
|
|
500
|
+
<h4 class="font-semibold text-gray-200 mb-2">📁 data/blocks/</h4>
|
|
501
|
+
<p class="text-sm text-gray-300">
|
|
502
|
+
Content-addressed storage chunks. Files are split into blocks and stored here by their hash.
|
|
503
|
+
Can be regenerated from shares/received if lost.
|
|
504
|
+
</p>
|
|
505
|
+
</div>
|
|
506
|
+
</div>
|
|
507
|
+
</div>
|
|
508
|
+
|
|
509
|
+
<!-- Best Practices -->
|
|
510
|
+
<div class="tutorial-card">
|
|
511
|
+
<h2 class="text-xl font-semibold mb-4">✅ Backup Best Practices</h2>
|
|
512
|
+
|
|
513
|
+
<div class="space-y-4">
|
|
514
|
+
<div class="flex items-start gap-3">
|
|
515
|
+
<span class="text-green-400 text-xl">1.</span>
|
|
516
|
+
<div>
|
|
517
|
+
<h4 class="font-semibold text-gray-200">Use Strong Backup Passwords</h4>
|
|
518
|
+
<p class="text-sm text-gray-400">Use a unique, strong password for your identity export.
|
|
519
|
+
Consider using a password manager.</p>
|
|
520
|
+
</div>
|
|
521
|
+
</div>
|
|
522
|
+
|
|
523
|
+
<div class="flex items-start gap-3">
|
|
524
|
+
<span class="text-green-400 text-xl">2.</span>
|
|
525
|
+
<div>
|
|
526
|
+
<h4 class="font-semibold text-gray-200">Store Backups in Multiple Locations</h4>
|
|
527
|
+
<p class="text-sm text-gray-400">Keep copies on an external drive, cloud storage (encrypted),
|
|
528
|
+
and/or a USB drive in a safe place.</p>
|
|
529
|
+
</div>
|
|
530
|
+
</div>
|
|
531
|
+
|
|
532
|
+
<div class="flex items-start gap-3">
|
|
533
|
+
<span class="text-green-400 text-xl">3.</span>
|
|
534
|
+
<div>
|
|
535
|
+
<h4 class="font-semibold text-gray-200">Backup Regularly</h4>
|
|
536
|
+
<p class="text-sm text-gray-400">Identity backups only need to be done once (keys don't change),
|
|
537
|
+
but data backups should be done regularly if you're storing important content.</p>
|
|
538
|
+
</div>
|
|
539
|
+
</div>
|
|
540
|
+
|
|
541
|
+
<div class="flex items-start gap-3">
|
|
542
|
+
<span class="text-green-400 text-xl">4.</span>
|
|
543
|
+
<div>
|
|
544
|
+
<h4 class="font-semibold text-gray-200">Test Your Backups</h4>
|
|
545
|
+
<p class="text-sm text-gray-400">Periodically verify your backups work by using
|
|
546
|
+
<code class="bg-gray-800 px-2 py-1 rounded">yakmesh identity inspect</code> to check
|
|
547
|
+
the backup file is readable.</p>
|
|
548
|
+
</div>
|
|
549
|
+
</div>
|
|
550
|
+
|
|
551
|
+
<div class="flex items-start gap-3">
|
|
552
|
+
<span class="text-green-400 text-xl">5.</span>
|
|
553
|
+
<div>
|
|
554
|
+
<h4 class="font-semibold text-gray-200">Never Share Key Files</h4>
|
|
555
|
+
<p class="text-sm text-gray-400">Your private keys should never be shared, emailed, or
|
|
556
|
+
uploaded unencrypted. The encrypted export file is safe to store anywhere.</p>
|
|
557
|
+
</div>
|
|
558
|
+
</div>
|
|
559
|
+
</div>
|
|
560
|
+
</div>
|
|
561
|
+
|
|
562
|
+
<!-- Troubleshooting -->
|
|
563
|
+
<div class="tutorial-card">
|
|
564
|
+
<h2 class="text-xl font-semibold mb-4">🔧 Troubleshooting</h2>
|
|
565
|
+
|
|
566
|
+
<h3 class="font-semibold mt-4 mb-2 text-gray-200">"Wrong password" error</h3>
|
|
567
|
+
<p class="text-gray-300 mb-4">
|
|
568
|
+
Make sure you're using the exact password from when you created the backup. Passwords are
|
|
569
|
+
case-sensitive. If you've forgotten it, the backup cannot be recovered.
|
|
570
|
+
</p>
|
|
571
|
+
|
|
572
|
+
<h3 class="font-semibold mt-4 mb-2 text-gray-200">"Corrupted backup file" error</h3>
|
|
573
|
+
<p class="text-gray-300 mb-4">
|
|
574
|
+
The backup file may have been damaged during transfer. Check if you have another copy.
|
|
575
|
+
For manual backups, try extracting individual files instead of the whole archive.
|
|
576
|
+
</p>
|
|
577
|
+
|
|
578
|
+
<h3 class="font-semibold mt-4 mb-2 text-gray-200">Node ID changed after restore</h3>
|
|
579
|
+
<p class="text-gray-300 mb-4">
|
|
580
|
+
This means the restore didn't work correctly. Stop YAKMESH, delete the new identity,
|
|
581
|
+
and try the restore again. Make sure you're restoring before first starting the node.
|
|
582
|
+
</p>
|
|
583
|
+
|
|
584
|
+
<h3 class="font-semibold mt-4 mb-2 text-gray-200">Karma score is zero after restore</h3>
|
|
585
|
+
<p class="text-gray-300 mb-4">
|
|
586
|
+
Your karma score is synchronized from the network, not stored in your backup. Give it
|
|
587
|
+
a few minutes after starting your node - it will sync automatically from peer attestations.
|
|
588
|
+
</p>
|
|
589
|
+
|
|
590
|
+
<h3 class="font-semibold mt-4 mb-2 text-gray-200">"Permission denied" on Linux/macOS</h3>
|
|
591
|
+
<pre><code class="language-bash"># Fix permissions on restored files
|
|
592
|
+
chmod 700 ~/.config/yakmesh/keys/
|
|
593
|
+
chmod 600 ~/.config/yakmesh/keys/*</code></pre>
|
|
594
|
+
</div>
|
|
595
|
+
|
|
596
|
+
<!-- Quick Reference -->
|
|
597
|
+
<div class="tutorial-card">
|
|
598
|
+
<h2 class="text-xl font-semibold mb-4 theme-accent">📋 Quick Reference</h2>
|
|
599
|
+
|
|
600
|
+
<h3 class="font-semibold mt-4 mb-3 text-gray-200">Essential Commands</h3>
|
|
601
|
+
<pre><code class="language-bash"># Export identity (encrypted)
|
|
602
|
+
yakmesh identity export --output backup.yak
|
|
603
|
+
|
|
604
|
+
# Import identity from backup
|
|
605
|
+
yakmesh identity import backup.yak
|
|
606
|
+
|
|
607
|
+
# Create full backup
|
|
608
|
+
yakmesh backup create --output full-backup.tar.gz
|
|
609
|
+
|
|
610
|
+
# Restore full backup
|
|
611
|
+
yakmesh backup restore full-backup.tar.gz
|
|
612
|
+
|
|
613
|
+
# Check backup file contents
|
|
614
|
+
yakmesh identity inspect backup.yak
|
|
615
|
+
|
|
616
|
+
# Find your data directory
|
|
617
|
+
yakmesh config get data_dir</code></pre>
|
|
618
|
+
|
|
619
|
+
<h3 class="font-semibold mt-6 mb-3 text-gray-200">Files to Backup</h3>
|
|
620
|
+
<ul class="list-disc list-inside text-gray-300 space-y-1">
|
|
621
|
+
<li><strong>Critical:</strong> <code class="bg-gray-800 px-2 py-1 rounded">keys/</code> folder</li>
|
|
622
|
+
<li><strong>Recommended:</strong> <code class="bg-gray-800 px-2 py-1 rounded">data/</code> folder</li>
|
|
623
|
+
<li><strong>Optional:</strong> <code class="bg-gray-800 px-2 py-1 rounded">config.yaml</code></li>
|
|
624
|
+
</ul>
|
|
625
|
+
</div>
|
|
626
|
+
|
|
627
|
+
<!-- Navigation Footer -->
|
|
628
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
629
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
630
|
+
<a href="dashboard.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
631
|
+
<div class="text-xs text-mountain-400 mb-1">← Previous</div>
|
|
632
|
+
<div class="flex items-center gap-2">
|
|
633
|
+
<span class="text-xl">📊</span>
|
|
634
|
+
<span class="font-semibold group-hover:text-emerald-400">Understanding the Dashboard</span>
|
|
635
|
+
</div>
|
|
636
|
+
</a>
|
|
637
|
+
<a href="trust-karma.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
638
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
639
|
+
<div class="flex items-center gap-2">
|
|
640
|
+
<span class="text-xl">☯️</span>
|
|
641
|
+
<span class="font-semibold group-hover:text-emerald-400">Trust & Reputation</span>
|
|
642
|
+
</div>
|
|
643
|
+
</a>
|
|
644
|
+
</div>
|
|
645
|
+
</div>
|
|
646
|
+
</div>
|
|
647
|
+
</main>
|
|
648
|
+
|
|
649
|
+
<script src="../prism.min.js"></script>
|
|
650
|
+
<script src="../prism-javascript.min.js"></script>
|
|
651
|
+
<script src="../prism-bash.min.js"></script>
|
|
652
|
+
<script src="../docs.js"></script>
|
|
653
|
+
</body>
|
|
654
|
+
</html>
|