Join the peer to peer social network Scuttlebutt using OpenBSD and Oasis

Comment on Mastodon

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

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.com/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.