New tutorial for Oasis

This commit is contained in:
Vane Vander 2021-11-13 12:58:35 -06:00
parent 289d9cb49b
commit bd8ac670bc
7 changed files with 159 additions and 72 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*stignore*

0
.stignore Normal file
View File

138
feed.xml
View File

@ -2,14 +2,79 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<title>MayVaneDay: Latest Updates</title>
<link href="https://mayvaneday.art/feed.xml" rel="self" />
<link href="https://mayvaneday.art" />
<link href="https://mayvaneday.org/feed.xml" rel="self" />
<link href="https://mayvaneday.org" />
<id>https://mayvaneday.art/feed.xml</id>
<author>
<name>Vane Vander</name>
<email>vanevander@mayvaneday.art</email>
</author>
<entry>
<title>How to run Oasis, a Secure Scuttlebutt client, on a remote server</title>
<link href="https://mayvaneday.org/tutorials/oasis.html" />
<id>https://mayvaneday.org/tutorials/oasis.html</id>
<published>2021-11-13</published>
<summary type="html"><![CDATA[<article>
<p>This tutorial assumes you already have a functioning Node.js and Caddy installation.</p>
<ol type="1">
<li>Install Oasis.</li>
</ol>
<code>git clone https://github.com/fraction/oasis.git<br />cd oasis<br />npm install</code>
<p>Test the installation by running <code>node .</code> (yes, including the period).</p>
<ul>
<li>If the output stops after a few lines and isn't an obvious Node error, hit Control and C at the same time to exit; you're ready for the <code>systemd</code> file.</li>
<li>If you get an error about port 3000 already being in use, use the command <code>node . --port PORTNUMBER</code> instead, where <code>PORTNUMBER</code> is any open port you want.</li>
</ul>
<p>If your instance immediately throws <a href="https://github.com/fraction/oasis/issues/718#issuecomment-927379995">an error about <code>ssb.friends.get</code></a>:</p>
<code>git checkout 4e8f7426a4eb1d95f6e55cf894a3168f523f8af8<br />rm -rf node_modules<br />npm install</code>
<ol start="2" type="1">
<li>Prepare the <code>systemd</code> daemon file.</li>
</ol>
<p>Edit <code>/lib/systemd/system/oasis.service</code> as root with your favorite text editor. Paste the following:</p>
<pre>
[Unit]
Description=Oasis client for Secure Scuttlebutt
After=network.target
[Service]
User=YourUsername
Group=YourUsername
ExecStart=/path/to/your/node/binary . --port 8787
WorkingDirectory=/path/to/where/you/cloned/oasis/
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
[Install]
WantedBy=multi-user.target
</pre>
<p>Replace <code>/path/to/your/node/binary</code> with whatever comes up when you run <code>which node</code>. You may need to change this if you update Node.</p>
<ol start="3" type="1">
<li>Edit your Caddyfile. (This will probably also require root.)</li>
</ol>
<pre>
yourdomain.tld {
reverse_proxy 127.0.0.1:PORTNUMBER {
header_up Host 127.0.0.1
header_up Referer http://localhost
}
basicauth * {
AnyUsernameYouWant EXTREMELYLONGCADDYHASHHERE
}
}
</pre>
<p><code>EXTREMELYLONGCADDYHASHHERE</code> is used instead of an actual password so you don't have cleartext credentials hanging around. Generate this with <code>caddy hash-password</code>. Make sure you save your actual password in a password manager, as you can't reverse a hash!</p>
<p>The <code>header_up</code> lines are there to trick Oasis into thinking it is running on a local machine, as it (very aggressively) wants to be. Normally this would be true, as Secure Scuttlebutt is peer-to-peer and intended to be run on a personal device that may see intermittent internet connectivity. However, if you're looking at this tutorial, you probably want to host a public peer as an <em>actually functioning</em> alternative to a <a href="https://github.com/ssbc/ssb-server">pub</a> or <a href="https://github.com/ssb-ngi-pointer/go-ssb-room/">room</a>.</p>
<ol start="4" type="1">
<li>Get everything running.</li>
</ol>
<code>sudo systemctl daemon-reload<br />sudo systemctl restart caddy<br />sudo systemctl start oasis &amp;&amp; sudo systemctl enable oasis</code>
</article>]]>
</summary>
</entry>
<entry>
<title>Analog Hole</title>
<link href="https://mayvaneday.art/blog/2021/november/nft.html" />
@ -266,74 +331,5 @@
</article>]]>
</summary>
</entry>
<entry>
<title>The Ridge</title>
<link href="https://mayvaneday.art/poetry/r/ridge.txt" />
<id>https://mayvaneday.art/poetry/r/ridge.txt</id>
<published>2021-08-23</published>
<summary type="html"><![CDATA[<article>
<pre>
It's been
too long since I've haunted here,
too long since the flood,
too long since I've buried myself,
cursing the hallowed sun.
Another day,
another pain,
another reminder why I should restrain
this desperate yearning to be at your side.
I can't control myself, you insist,
can't care for myself, can't abide
by a single plea:
*wait for me
until the war is done.*
But how can I stay inert at the sidelines?
How can I watch, patient, as you struggle for life?
I keep looking at your face.
I keep looking into your eyes,
into the depravity
void of grace,
the sweaty sleepless nights,
the frights
that dance between the stone space of your skull.
Little said, but oft reply
in hopes this boat crosses Imaginai,
the fierce rivers, the gaudy veil
that I would without a pause assail
if it meant bringing closer by one more day
Eris' death,
the shatter of masks,
our withdrawal for some time
into this world I've somehow made
without Seliph's curse,
without my sacrifice.
How many times have you asked
what I would do once that day passed?
How long 'til I set down
this crown,
bade job goodbye,
convince parents and friends
that, although I disappear,
I'm off to a place where I'll be alright?
Don't come looking for me,
don't waste your "precious" fruitless time.
Your daughter was a sinner,
passionate, iniquitous,
desiring, delirious, divine.
It's been
too long since I've haunted here,
since I've had to justify
my right
to survive.
</pre>
</article>]]>
</summary>
</entry>
</feed>

View File

@ -9,7 +9,7 @@
<meta name="abuseipdb-verification" content="vbeJNq7o" />
<meta name="description" content="Vane Vander's personal website">
</head>
<body>
<body class="index">
<div class="box">
<h2>Welcome to MayVaneDay Studios</h2>
</div>
@ -29,6 +29,10 @@
</ul>
</div>
<hr>
<div class="box">
<p><strong>Stop scraping my website.</strong> You now have <b><i>two</i></b> options for pulling a full copy of my website: ZeroNet and Git. Both of these will auto-update and give you the actual source files, unlike a recursive <code>wget</code> or whatever that will mangle everything. Save yourself and me the grief and just use these instead.</p>
</div>
<hr>
<div class="box">
<p><a href="./blog/index.html">Blog</a> <a href="./feed.xml">(RSS Feed)</a></p>
<p><a href="./poetry/">Poetry</a></p>
@ -47,6 +51,7 @@
<a href="http://127.0.0.1:8888/USK@Up0ipQCQjyY2PaGofU-P63kJMb54E0~2xZiUnyxPypM,rGmJhPDVou6DwS6Eh23sZ93hVbDaA6v4D5l3vWsN-oY,AQACAAE/mayvaneday/-1/">[Freenet]</a>
<a href="http://meynethaffeecapsvfphrcnfrx44w2nskgls2juwitibvqctk2plvhqd.onion">[Tor]</a>
<a href="http://ikhuwze4r597pn6shynuc7dk1io1ahywxn5e1wu769apzfmcyjfo.loki">[Lokinet]</a>
<a href="https://gogs.letsdecentralize.org/letheposting/mayvaneday.org">[Git]</a>
</div>
</body>
</html>

View File

@ -23,6 +23,10 @@ body {
margin-bottom: 10px;
}
.index {
max-width: 670px;
}
a, a:visited {
text-decoration: none;
color: inherit;

View File

@ -23,6 +23,7 @@
<hr>
<div class="box">
<p><a href="./nook.html">Root the Nook 1st Gen on Linux</a></p>
<p><a href="./oasis.html">Run Oasis, a Secure Scuttlebutt client, on a remote server</a></p>
<p><a href="./kristall-haiku.html">Install the Kristall browser in Haiku</a></p>
<p><a href="./lokinet-32.html">Build and install LokiNet on Linux Mint 32-bit</a></p>
<p><a href="./vlc.html">Play music in the CLI with an equalizer</a></p>

80
tutorials/oasis.html Normal file
View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>How to run Oasis, a Secure Scuttlebutt client, on a remote server - Archive - MayVaneDay Studios</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<meta name="author" content="Vane Vander">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body class="mayvaneday">
<article>
<div class="box">
<h1>How to run Oasis, a Secure Scuttlebutt client, on a remote server</h1>
<p>published: 2021-11-13</p>
</div>
<hr>
<div class="box">
<p>This tutorial assumes you already have a functioning Node.js and Caddy installation.</p>
<ol type="1">
<li>Install Oasis.</li>
</ol>
<code>git clone https://github.com/fraction/oasis.git<br />cd oasis<br />npm install</code>
<p>Test the installation by running <code>node .</code> (yes, including the period).</p>
<ul>
<li>If the output stops after a few lines and isn't an obvious Node error, hit Control and C at the same time to exit; you're ready for the <code>systemd</code> file.</li>
<li>If you get an error about port 3000 already being in use, use the command <code>node . --port PORTNUMBER</code> instead, where <code>PORTNUMBER</code> is any open port you want.</li>
</ul>
<p>If your instance immediately throws <a href="https://github.com/fraction/oasis/issues/718#issuecomment-927379995">an error about <code>ssb.friends.get</code></a>:</p>
<code>git checkout 4e8f7426a4eb1d95f6e55cf894a3168f523f8af8<br />rm -rf node_modules<br />npm install</code>
<ol start="2" type="1">
<li>Prepare the <code>systemd</code> daemon file.</li>
</ol>
<p>Edit <code>/lib/systemd/system/oasis.service</code> as root with your favorite text editor. Paste the following:</p>
<pre>
[Unit]
Description=Oasis client for Secure Scuttlebutt
After=network.target
[Service]
User=YourUsername
Group=YourUsername
ExecStart=/path/to/your/node/binary . --port 8787
WorkingDirectory=/path/to/where/you/cloned/oasis/
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
[Install]
WantedBy=multi-user.target
</pre>
<p>Replace <code>/path/to/your/node/binary</code> with whatever comes up when you run <code>which node</code>. You may need to change this if you update Node.</p>
<ol start="3" type="1">
<li>Edit your Caddyfile. (This will probably also require root.)</li>
</ol>
<pre>
yourdomain.tld {
reverse_proxy 127.0.0.1:PORTNUMBER {
header_up Host 127.0.0.1
header_up Referer http://localhost
}
basicauth * {
AnyUsernameYouWant EXTREMELYLONGCADDYHASHHERE
}
}
</pre>
<p><code>EXTREMELYLONGCADDYHASHHERE</code> is used instead of an actual password so you don't have cleartext credentials hanging around. Generate this with <code>caddy hash-password</code>. Make sure you save your actual password in a password manager, as you can't reverse a hash!</p>
<p>The <code>header_up</code> lines are there to trick Oasis into thinking it is running on a local machine, as it (very aggressively) wants to be. Normally this would be true, as Secure Scuttlebutt is peer-to-peer and intended to be run on a personal device that may see intermittent internet connectivity. However, if you're looking at this tutorial, you probably want to host a public peer as an <em>actually functioning</em> alternative to a <a href="https://github.com/ssbc/ssb-server">pub</a> or <a href="https://github.com/ssb-ngi-pointer/go-ssb-room/">room</a>.</p>
<ol start="4" type="1">
<li>Get everything running.</li>
</ol>
<code>sudo systemctl daemon-reload<br />sudo systemctl restart caddy<br />sudo systemctl start oasis &amp;&amp; sudo systemctl enable oasis</code>
</div>
<hr>
<div class="box">
<p align=right>CC BY-NC-SA 4.0 &copy; Vane Vander</p>
</div>
</article>
</body>
</html>