summaryrefslogtreecommitdiffstats
path: root/tesseras-paste.html
diff options
context:
space:
mode:
Diffstat (limited to 'tesseras-paste.html')
-rw-r--r--tesseras-paste.html126
1 files changed, 126 insertions, 0 deletions
diff --git a/tesseras-paste.html b/tesseras-paste.html
new file mode 100644
index 0000000..f1ac6f3
--- /dev/null
+++ b/tesseras-paste.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme:light)">
+ <meta name="theme-color" content="#121212" media="(prefers-color-scheme:dark)">
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90' font-family='sans-serif' font-weight='bold'>T</text></svg>">
+ <meta name="Description" content="tesseras-paste: decentralized encrypted pastebin built on tesseras-dht.">
+
+ <meta property="og:url" content="https://tesseras.net/tesseras-paste.html">
+ <meta property="og:title" content="tesseras-paste - Decentralized encrypted pastebin">
+ <meta property="og:site_name" content="Tesseras">
+ <meta property="og:description" content="tesseras-paste: decentralized encrypted pastebin built on tesseras-dht.">
+
+ <title>tesseras-paste - Decentralized encrypted pastebin</title>
+
+ <link href="styles.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<p><a href="/">&larr; tesseras.net</a></p>
+
+<h1>tesseras-paste</h1>
+
+<p>A decentralized pastebin built on
+<a href="tesseras-dht.html">tesseras-dht</a>. Pastes are encrypted client-side
+with XChaCha20-Poly1305, distributed across the DHT, and served over HTTP.
+No central server stores your data.</p>
+
+<h2>Features</h2>
+
+<ul>
+ <li>End-to-end encrypted pastes (XChaCha20-Poly1305)</li>
+ <li>Decentralized storage via Kademlia DHT</li>
+ <li>NAT traversal (hole-punching and proxy relay)</li>
+ <li>HTTP serving with content-key URLs</li>
+ <li>TTL-based expiry and pinning</li>
+ <li>Public (unencrypted) paste mode</li>
+ <li>OpenBSD <code>pledge(2)</code> and <code>unveil(2)</code> sandboxing</li>
+ <li>DNS SRV bootstrap discovery</li>
+</ul>
+
+<h2>Binaries</h2>
+
+<p><strong>tpd</strong> &mdash; daemon that runs a DHT node, stores pastes, and serves HTTP.</p>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">usage: tpd [-g] [-n] [-p port] [-d dir] [-s sock] [-w http_port] [-b host:port]
+
+ -p port UDP port (0 = random)
+ -d dir data directory
+ -s sock Unix socket path
+ -w port HTTP server port
+ -g global NAT (public server)
+ -n no auto-bootstrap (skip DNS SRV)
+ -b host:port bootstrap peer (repeatable)</pre>
+
+<p><strong>tp</strong> &mdash; CLI client that talks to the daemon over a Unix socket.</p>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">usage: tp [-s sock] &lt;command&gt; [args]
+
+ put [-t ttl] [-p] read stdin, store paste (-p = public, no encryption)
+ get &lt;key&gt; retrieve paste to stdout
+ del &lt;key&gt; delete paste
+ pin &lt;key&gt; pin (never expires)
+ unpin &lt;key&gt; unpin
+ status show daemon status</pre>
+
+<h2>Quick Start</h2>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap"># Start the daemon
+$ tpd -p 4433 -w 9999 -d /var/tesseras-paste
+
+# Store a paste
+$ echo "hello" | tp put -p
+Ey2rNiNukhNpqUouaSnnZwTtCgeCgMx2FrCuMr3whBxx
+
+# Retrieve it
+$ tp get Ey2rNiNukhNpqUouaSnnZwTtCgeCgMx2FrCuMr3whBxx</pre>
+
+<h2>Public Gateway</h2>
+
+<p>A public HTTP gateway is available at
+<strong>http://p.tesseras.net/&lt;key&gt;</strong>. For example:</p>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">http://p.tesseras.net/Ey2rNiNukhNpqUouaSnnZwTtCgeCgMx2FrCuMr3whBxx</pre>
+
+<p>Note: there may be a short delay when retrieving recently created pastes,
+as content needs time to propagate across DHT nodes.</p>
+
+<h2 id="download">Download</h2>
+
+<p>Current version: <strong>0.1.0</strong></p>
+
+<p>Source tarballs and signatures are available at
+<a href="https://tesseras.net/pub/tesseras-paste/">tesseras.net/pub/tesseras-paste/</a>.</p>
+
+<h3>Verify with signify</h3>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">$ signify -Vp tesseras.pub -m tesseras-paste-0.1.0.tar.gz -x tesseras-paste-0.1.0.tar.gz.sig
+Signature Verified</pre>
+
+<h3>Verify with SHA256</h3>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">$ sha256 tesseras-paste-0.1.0.tar.gz
+$ cat tesseras-paste-0.1.0.tar.gz.sha256</pre>
+
+<p>Compare the two outputs. They must match.</p>
+
+<h3>Install from crates.io</h3>
+
+<pre style="text-align:left;font-size:0.9em;white-space:pre-wrap">$ cargo install tesseras-paste</pre>
+
+<h2 id="source">Source Code</h2>
+
+<ul>
+ <li><a href="https://got.tesseras.net/?action=summary&path=tesseras-paste.git">GoT</a> (primary)</li>
+ <li><a href="https://git.tesseras.net/tesseras-paste/">Git mirror</a></li>
+ <li><a href="https://crates.io/crates/tesseras-paste">crates.io</a></li>
+ <li><a href="https://docs.rs/tesseras-paste/latest/tesseras_paste/">docs.rs</a></li>
+</ul>
+
+<h2 id="license">License</h2>
+
+<p>ISC &mdash; see <a href="https://got.tesseras.net/?action=blob&path=tesseras-paste.git&name=LICENSE">LICENSE</a>.</p>
+</body>
+</html>