Deployed 2e75cc3 with MkDocs version: 1.6.1

This commit is contained in:
2026-10-27 19:58:37 +00:00
parent 6c3411c15f
commit 626e0259e6
4 changed files with 15 additions and 7 deletions
+1
View File
@@ -3126,6 +3126,7 @@
</div>
<p><code>code_hash</code> fingerprints the framework source the server operates, so it names the code itself rather than the release. It is the same value for a git checkout and for an installed package built from that checkout. It changes when you edit anything under <code>unshackle/core</code>, <code>unshackle/commands</code>, <code>unshackle/utils</code>, or <code>unshackle/vaults</code>. Service modules are not included. unshackle sets the value to <code>null</code> only when it cannot read the source files.</p>
<p><code>draining</code> is <code>true</code> while the server refuses new remote sessions and jobs before a restart.</p>
<p>The server asks GitHub for the latest release at most once per <a href="../../../reference/configuration/misc/#caching-updates"><code>update_check_interval</code></a> hours and answers from its cache between checks.</p>
<p>If the update check fails (for example, no network), <code>update_available</code> and <code>latest_version</code> are <code>null</code> while <code>current_version</code> still reports the installed version.</p>
<table>
<thead>
+6 -4
View File
@@ -3766,6 +3766,7 @@ through the tunnel. It stops at the first step that fails.</p>
</span></code></pre></div>
<h3 id="kv-copy-to_vault-from_vault"><code>kv copy TO_VAULT FROM_VAULT...</code><a class="headerlink" href="#kv-copy-to_vault-from_vault" title="Permanent link">&para;</a></h3>
<p>Copy content keys from one or more source vaults into a destination vault. unshackle skips rows whose KIDs match, unless the existing row has no content key. unshackle never alters or deletes existing data.</p>
<p>A vault argument is the name of a vault in the config, or the path to an SQLite vault file. Use a path to import a vault file that is not in the config.</p>
<table>
<thead>
<tr>
@@ -3818,10 +3819,11 @@ through the tunnel. It stops at the first step that fails.</p>
<p class="admonition-title">Example</p>
<div class="language-shell highlight"><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>copy<span class="w"> </span>main<span class="w"> </span>backup1<span class="w"> </span>backup2
</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>copy<span class="w"> </span>main<span class="w"> </span>backup<span class="w"> </span>-s<span class="w"> </span>EXAMPLE
</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>sync<span class="w"> </span>main<span class="w"> </span>mysql_vault
</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>add<span class="w"> </span>keys.txt<span class="w"> </span>EXAMPLE<span class="w"> </span>main<span class="w"> </span>backup
</span><span id="__span-18-5"><a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>search<span class="w"> </span>0123456789abcdef0123456789abcdef<span class="w"> </span>-s<span class="w"> </span>EXAMPLE<span class="w"> </span>-v<span class="w"> </span>main
</span><span id="__span-18-6"><a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>prepare<span class="w"> </span>main<span class="w"> </span>mysql_vault
</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>copy<span class="w"> </span>main<span class="w"> </span>~/Downloads/key_store.db<span class="w"> </span>-s<span class="w"> </span>EXAMPLE
</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>sync<span class="w"> </span>main<span class="w"> </span>mysql_vault
</span><span id="__span-18-5"><a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>add<span class="w"> </span>keys.txt<span class="w"> </span>EXAMPLE<span class="w"> </span>main<span class="w"> </span>backup
</span><span id="__span-18-6"><a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>search<span class="w"> </span>0123456789abcdef0123456789abcdef<span class="w"> </span>-s<span class="w"> </span>EXAMPLE<span class="w"> </span>-v<span class="w"> </span>main
</span><span id="__span-18-7"><a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a>unshackle<span class="w"> </span>kv<span class="w"> </span>prepare<span class="w"> </span>main<span class="w"> </span>mysql_vault
</span></code></pre></div>
</div>
<hr />
+7 -2
View File
@@ -2814,15 +2814,20 @@
</tbody>
</table>
<p><code>--service</code> and <code>--local-only</code> are mutually exclusive.</p>
<p>To import an SQLite vault file that is not in the config, give its path as the source:</p>
<div class="language-console highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="gp">$ </span>unshackle<span class="w"> </span>kv<span class="w"> </span>copy<span class="w"> </span><span class="nb">local</span><span class="w"> </span>~/Downloads/key_store.db<span class="w"> </span>-s<span class="w"> </span>EXAMPLE
</span></code></pre></div>
<p><code>kv copy</code> only reads from a source, so the file stays unchanged. <code>kv sync</code> also accepts a path, but it writes content keys into that file.</p>
<p>With <code>--service</code>, <code>kv copy</code> reads the table named by the service's vault tag and the table named by its plain tag. It writes both into the vault-tag table, which is the table a download reads. Without <code>--service</code>, each table keeps its name.</p>
<p>A pair the destination vault has flagged in <code>bad_keys</code> is left behind, so a copy does not undo a flag. <code>bad_keys</code> is never treated as a service, so its rows are never copied into a service table.</p>
<h3 id="kv-sync-mirror-vaults-both-ways"><code>kv sync</code>: mirror vaults both ways<a class="headerlink" href="#kv-sync-mirror-vaults-both-ways" title="Permanent link">&para;</a></h3>
<p>Make each of two or more vaults hold every content key the others have. This is effectively a two-way <code>copy</code> between each pair, so afterwards all listed vaults hold the same set of keys.</p>
<div class="language-console highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="gp">$ </span>unshackle<span class="w"> </span>kv<span class="w"> </span>sync<span class="w"> </span><span class="nb">local</span><span class="w"> </span>shared
<div class="language-console highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="gp">$ </span>unshackle<span class="w"> </span>kv<span class="w"> </span>sync<span class="w"> </span><span class="nb">local</span><span class="w"> </span>shared
</span></code></pre></div>
<p>It accepts the same <code>--service</code> and <code>--local-only</code> options as <code>copy</code>, and requires at least two vaults. It runs <code>copy</code> between each pair, so it skips flagged pairs and the <code>bad_keys</code> table in the same way.</p>
<h3 id="kv-prepare-pre-create-service-tables"><code>kv prepare</code>: pre-create service tables<a class="headerlink" href="#kv-prepare-pre-create-service-tables" title="Permanent link">&para;</a></h3>
<p>Create the per-service tables on table-based vaults (<code>SQLite</code>, <code>MySQL</code>) ahead of time, for every service you have installed. Vaults that do not use tables (the network-backed <code>HTTP</code> and <code>API</code> backends) are skipped.</p>
<div class="language-console highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="gp">$ </span>unshackle<span class="w"> </span>kv<span class="w"> </span>prepare<span class="w"> </span>shared
<div class="language-console highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="gp">$ </span>unshackle<span class="w"> </span>kv<span class="w"> </span>prepare<span class="w"> </span>shared
</span></code></pre></div>
<p>This is mainly useful with a <code>MySQL</code> vault where you want the tables created once by an account that has the <code>CREATE</code> grant.</p>
<hr />
File diff suppressed because one or more lines are too long