Title: Join the peer to peer social network Scuttlebutt using OpenBSD | |
and Oasis | |
Author: Solène | |
Date: 04 November 2020 | |
Tags: openbsd ssb | |
Description: | |
In this article I will tell you about the | |
[Scuttlebutt social network](https://scuttlebutt.nz/), | |
what makes it special and how to join it using OpenBSD. From here, | |
I'll refer to Scuttlebutt as SSB. | |
### Introduction to the protocol | |
You can find all the related documentation on | |
[the official website](https://scuttlebutt.nz/docs/). | |
I will make a simplification of the protocol to present it. | |
SSB is decentralized, meaning there are no central server with | |
clients around it (think about Twitter model) nor it has a | |
constellation | |
of servers federating to each others (Fediverse: mastodon, plemora, | |
peertube...). SSB uses a peer to peer model, meaning nodes exchanges | |
data between others nodes. A device with an account is a node, | |
someone using SSB acts as a node. | |
The protocol requires people to be mutual followers to make the | |
private messaging system to work (messages are encrypted end-to | |
end). | |
This peer to peer paradigm has specific implications: | |
1. Internet is not required for SSB to work. You could use it with | |
other people in a local network. For example, you could visit a | |
friend's place exchange your SSB data over their network. | |
2. Nodes owns the data: when you join, this can be very long to | |
download the content of nodes close to you (relatively to people | |
you follow) because the SSB client will download the data, and then | |
serves everything locally. This mean you can use SSB while being | |
offline, but also that in the case seen previously at your friend's | |
place, you can exchange data from mutual friends. Example: if A | |
visits B, B receives A updates. When you visit B, you will receive | |
B updates but also A updates if you follow B on the network. | |
3. Data are immutables: when you publish something on the network, | |
it will be spread across nodes and you can't modify those data. | |
This is important to think twice before publishing. | |
4. Moderation: there are no moderation as there are no autority in | |
control, but people can block nodes they don't want to get data | |
from and this blocking will be published, so other people can easily | |
see who gets blocked and block it too. It seems to work, I don't | |
have opinion about this. | |
5. You discover parts of the network by following people, giving | |
you access to the people they follow. This makes the discovery of | |
the network quite organic and should create some communities by | |
itself. Birds of feather flock together! | |
6. It's complicated to share an account across multiples devices | |
because you need to share all your data between the devices, most | |
people use an account per device. | |
### SSB clients | |
There are differents clients, the top clients I found were: | |
- [Patchwork](https://github.com/ssbc/patchwork) | |
- [Manyverse](https://www.manyver.se/), for Android (also available on | |
f-droid), Windows, Linux and iPhone | |
- [Oasis](https://github.com/fraction/oasis) | |
There are also lot of applications using the protocol, you can find | |
a list [on this link](https://handbook.scuttlebutt.nz/applications). | |
One particularly interesting project is git-ssb, hosting a git | |
repository on the network. | |
Most of the code related to SSB is written in NodeJS. | |
In my opinion, Patchwork is the most user-friendly client but Oasis | |
is very nice too. Patchwork has more features, like being able to | |
publish pictures within your messages which is not currently possible | |
with Oasis. | |
Manyverse works fine but is rather limited in term of features. | |
The developer community working on the projects seems rather small | |
and would be happy to receive some help. | |
### How to install Oasis on OpenBSD | |
I've been able to get the Oasis client to run on OpenBSD. The NodeJS | |
ecosystem is quite hostile to anything non linux but following the | |
path of [qbit](https://bsd.network/@qbit) (who solved few libs years | |
ago), this piece of software works. | |
$ doas pkg_add libvips git node autoconf--%2.69 automake--%1.16 | |
libtool | |
$ git clone https://github.com/fraction/oasis | |
$ cd oasis | |
$ env AUTOMAKE_VERSION=1.16 AUTOCONF_VERSION=2.69 CC=clang | |
CXX=clang++ npm install --only=prod | |
There is currently ONE issue that require a hack to start Oasis. | |
The `lo0` interface must not have any IPv6 address. | |
You can use the following command as root to remove the IPv6 | |
addresses. | |
# ifconfig lo0 -inet6 | |
I reported this bug as I've not been able to fix it myself. | |
### How to use Oasis on OpenBSD | |
**2023-10-21 THIS IS OUTDATED**: oasis seems to be unmaintained, and I | |
can't get it to work anymore even on Linux. | |
When you want to use Oasis, you have to run | |
$ node /path/to/oasis_sources | |
You can add `--help` to have the usage output, like `--offline` if | |
you don't want oasis to do networking. | |
When you start oasis, you can then open `http://localhost:3000` to | |
access network. **Beware that this address is available to anyone | |
having access to your system**. | |
You have to use an **invitation** from someone to connect to a node | |
and start following people to increase your range in this small | |
world. | |
You can use a public server which acts as a 24/7 node to connect | |
people together on | |
[https://github.com/ssbc/ssb-server/wiki/Pub-Servers](https://github.co | |
m/ssbc/ssb-server/wiki/Pub-Servers). | |
### How to backup your account | |
You absolutely need to backup your `~/.ssb/` directory if you don't | |
want to lose your account. There are no central server able to | |
help you recover your account in case of data lass. | |
If you want to use another client on another computer, you have | |
to copy this directory to the new place. | |
I don't think the whole directory is required, but I have not | |
been able to find more precise information. |