deploy.md 5.2 KB

Oasis PUB Deployment Guide

This guide will walk you through the process of deploying an Oasis PUB on your server.


A PUB server needs a static, publicly-reachable IP address.

By default it uses port 8008, so make sure to expose that port (or whatever port you configure) to the internet.

1) Install NodeJS (LTS v18.20.8 for SSB-Server compatibility)

sudo apt-get install git curl curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 18 nvm use 18 nvm alias default 18

2) Create a ~/.ssb/config file and the oasis-pub-server.sh launch script

Before running the server, create a config file that enables needed plugins and network options.

nano ~/.ssb/config

Paste this:

{ "logging": {

"level": "notice"

}, "caps": {

"shs": "+u5/ShHkb5g8jIWmybt/8ulGbZ2jFfzp8ggMwmKcRF0="

}, "pub": true, "local": false, "friends": {

"dunbar": 150,
"hops": 3

}, "gossip": {

"connections": 50,
"seed": true,
"seeds": [
  "solarnethub.com:8008~shs:HzmUrdZb1vRWCwn3giLx3p/EWKuDiO44gXAaeulz3d4="
],
"global": true

}, "connections": {

"incoming": {
  "net": [
    { 
      "port": 8008,
      "scope": "public",
      "transform": "shs",
      "external": "{your-hostname}"
    },
    { 
      "port": 8008,
      "host": "localhost",
      "scope": "device",
      "transform": "shs"
    }
  ],
  "unix": [
    { 
      "scope": ["device", "local", "private"],
      "transform": "noauth"
    }
  ]
},
"outgoing": {
  "net": [
    { 
      "transform": "shs"
    }
  ]
}

}, "replicationScheduler": {

"autostart": true,
"partialReplication": null

}, "autofollow": {

"enabled": true,
"suggestions": [
  "@HzmUrdZb1vRWCwn3giLx3p/EWKuDiO44gXAaeulz3d4=.ed25519"
]

} }

Be sure to replace {your-hostname} with your server’s domain or IP.

3) Install ssb-server and plugins locally

npm -g install ssb-server ssb-master ssb-gossip ssb-ebt ssb-friends ssb-blobs ssb-conn ssb-logging ssb-replication-scheduler npm audit fix

4) Create the launch script and some patches

Save the following script at: ~/oasis-pub/patch-ssb-ref.js

const fs = require('fs'); const path = require('path');

const ssbRefPath = path.resolve(__dirname, 'node_modules/ssb-ref/index.js'); // Adjust as needed

if (fs.existsSync(ssbRefPath)) {

 const data = fs.readFileSync(ssbRefPath, 'utf8');
 const patchedData = data.replace(
   'exports.parseAddress = deprecate(\'ssb-ref.parseAddress\', parseAddress)',
   'exports.parseAddress = parseAddress'
 );

 if (data !== patchedData) {
   fs.writeFileSync(ssbRefPath, patchedData);
   console.log('[OASIS] [PATCH] Patched ssb-ref to remove deprecated usage of parseAddress');
 }

}

And make it executable:

chmod +x ~/oasis-pub/patch-ssb-ref.js

Finally, save the following script at: ~/oasis-pub/oasis-pub-server.sh.

#!/bin/bash export NODE_OPTIONS="--no-deprecation"

cd ~/oasis-pub node patch-ssb-ref.js ssb-server start

And make it executable:

chmod +x ~/oasis-pub/oasis-pub-server.sh

5) Run the server script

Use a session-manager such as screen or tmux to create a detachable session. Start the session and run the script:

sh ~/oasis-pub/oasis-pub-server.sh

Then, detach the session.

6) Create the Pub's profile

It's a good idea to give your PUB a name, by publishing one on its feed.

To do this, first get the PUB's ID, with:

cd ~/oasis-pub ssb-server whoami

{

 "id": "@HzmUrdZb1vRWCwn3giLx3p/EWKuDiO44gXAaeulz3d4=.ed25519"

}

Then, publish a name with the following command:

ssb-server publish --type about --about {pub-id} --name {name}

7) Create Invites

For a last step, you should create invite codes, which you can send to other inhabitants to let them join the PUB.

The command to create an invite code is:

cd ~/oasis-pub ssb-server invite.create 1

This may now be given out to friends, to command your PUB to follow them.

If you want to let a single code be used more than once, you can provide a number larger than 1.

cd ~/oasis-pub ssb-server invite.create 500

8) Announce your PUB

To announce your PUB, publish this message:

cd ~/oasis-pub ssb-server publish --type pub --address.key {pub-id} --address.host {name} --address.port {number}

For example, to announce solarnethub.com PUB: "La Plaza":

ssb-server publish --type pub --address.key @HzmUrdZb1vRWCwn3giLx3p/EWKuDiO44gXAaeulz3d4=.ed25519 --address.host solarnethub.com --address.port 8008

9) Following another PUB

To follow another PUB's feed, publish this other message:

cd ~/oasis-pub ssb-server publish --type contact --contact {pub-id-to-follow} --following

For example, to follow solarnethub.com PUB: "La Plaza":

cd ~/oasis-pub ssb-server publish --type contact --contact "@HzmUrdZb1vRWCwn3giLx3p/EWKuDiO44gXAaeulz3d4=.ed25519" --following

10) Join the Oasis PUB Network

To help your PUB discover other Oasis-connected peers and speed up replication, we’ve included the Oasis seed PUB at solarnethub.com in your config file.