sylo logo circle
Sylo logo

DOCS

Sylo Nodes are the foundation of a global, decentralised network.

Sylo Nodes help Sylo users connect, chat, call, and use dApps in a truly private, fully decentralised way. Sylo Nodes are simple to run, so anyone can be part of the network.

Together we will build further services Sylo Node can provide and more ways to earn for contribution.

Powerful Infrastructure

The distributed Sylo Nodes provide communication channels between any devices running the Sylo Protocol. Sylo Nodes are simple to run, so anyone can be part of the network. The network scales with ease and is not bound to any centralised nodes. All the Sylo-operated nodes could be removed and the Sylo Network would remain. Users are not bound to any specific node and can jump seamlessly to any other as necessary. This is literally an unstoppable network.

Limitless Opportunity

As the Sylo Network grows, there will be an increasing number of opportunities for those participating in the Sylo ecosystem. At Sylo, we take pride in moving quickly into new areas of decentralisation and bringing the best opportunities to our users and partners. Operating a Sylo Node gives you a voice in which directions we move the technology and how we unfold the future together. We want to do it together — not alone.

Fair Reward

We understand that the success of the Sylo Network is dependent on a secure and robust method of fair reward. Our network has been designed from the ground up to provide incentivisations to Sylo Node operators. The Sylo Protocol has built-in support for probabilistic micropayments and Sylo Nodes have been designed to accept these payments. This mechanism (and others in the pipeline) are brought together with the Sylo Token to ensure a marketplace of services that benefit all.

Join Early

Don’t get left out! We’re designing Sylo Nodes to be fast and easy to setup, so there is no reason to put it off. Being one of the earliest providers of Sylo Node services puts you in a prime position for early network incentives. Sylo will be working closely with our early node operators to facilitate their journey onto the network.

Learn the Technology

Setting up a Sylo Node early means having extra time to learn the ins and outs of a decentralised network. How can you join your node to the Sylo Network, acquire users, and provide the best service? How will you capitalise when important opportunities are announced. How many users do you want to support and which services will you offer? Do you want something custom from the network and can Sylo help you achieve it?

Make Grand Plans

It’s time to start dreaming big! The Sylo Network has the flexibility to support a wide range of decentralised visions — integrating communication, wallets, smart money, micropayments, and blockchains — then delivering it to every person on the planet with powerful privacy and security. The next big innovation to land on the Sylo Network could be your own!

Getting Started

Anyone can run a Sylo Node.

Deploying your own Sylo Node is quick and easy. Sylo provides prebuilt Docker images. You can get the latest version of the Sylo Node by pulling it:

docker pull dn3010/sylo-node

To test it, you can start a fully functional Sylo Node within a Docker container by running:

docker run --rm dn3010/sylo-node service

This is the simplest possible Sylo Network - a single Sylo Node running in an isolated environment with no peers.

To make the node more useful, we should connect it to an existing Sylo Network and make it accessible to peers. Keep reading to learn how to do this.

Commands

The Sylo Node has a few commands. Let’s briefly identify them.

service - Start the Sylo Node, connect to a Sylo Network, and listen for service requests.

generate - Creates a Sylo Node identity file. NOTE: these files should be kept secure!

cli - A simple CLI that can be used to interact with the management RPC of a running Sylo Node.

version - Displays the version information for the Sylo Node.

Configuration

There are several Sylo Node Service configuration options used by the Sylo Node:

Name Description
--node-nickname NAME A nickname used to identify this Sylo Node
--identity FILE A file that contains the Sylo Node ID
--data-directory PATH A path the Sylo Node can use for storing persistent data
--pns-uri URI The Sylo Node will send push notifications using the provided URI
--reporting-uri URI Node reports are sent to this URI
--listen MULTIADDR The local multiaddr the Sylo Node will listen to
--public-listen MULTIADDR The public multiaddr the Sylo Node will advertise to the Sylo Network
--bootstrap-peer MULTIADDR Connect to another peer and join an existing Sylo Network
--rpc-ip-address IP_ADDRESS Host the management RPC on this local IP address
--rpc-port PORT Host the management RPC on this local IP port
--rpc-user USERNAME Provide a basic auth username for accessing the RPC
--rpc-pw PASSWORD Provide a basic auth password for accessing the RPC
--tls-certificate PATH A path to a TLS certificate file
--tls-key PATH A path to the key associated with the TLS certificate
--relay Turn on relay service to facilitate peer-to-peer connections for others

Nickname (—node-nickname)

You can provide your Sylo Node with a nickname, which is used in various places to identify your Sylo Node instead of using generic text or the long libp2p Peer ID.

Identity (--identity)

If you don’t provide an identity file, the Sylo Node will generate an ephemeral one each time it starts. This is fine for testing, but you will need a permanent one when you want to join an existing Sylo Network.

If you don’t already have an identity file, you can generate one like this:

docker run --rm dn3010/sylo-node generate --output node.id

This file contains a private key for the identity, so you should keep it safe. If this file is lost, the associated identity will be lost.

Data Directory (--data-directory)

The Sylo Node stores data for peers and also maintains various stores of its own. This directory will default to ~/.sylo-node. Note that if you use the Docker image, this will be inside the Docker container you are running.

Push Notifications Server (--pns-uri)

If your Sylo Node is supporting the Sylo Smart Wallet, you can leave this as the default value. If you are running another app on the Sylo Network, you may need to pass the URI to your own push notification server.

Sylo Node Self-Reporting (--reporting-uri)

The Sylo Node will send out periodic reports to this URI. These reports include some simple statistics. By default, these reports are sent to Sylo and used to display Sylo Node information in the Sylo Smart Wallet application. The URI can be changed to another location or reporting can be disabled by passing an empty string.

Local listening address (--listen)

This is the local P2P multiaddr that the Sylo Node will listen to. It should be provided in standard multiaddr format (ex. "/ip4/0.0.0.0/tcp/12345").

Public listening address (--public-listen)

This is the public P2P multiaddr that maps to the local listening address. It should be provided in standard multiaddr format (ex. "/ip4/123.45.67.89/tcp/12345").

Bootstrap peers (--bootstrap-peer)

You can specify as many bootstrap peers as you like. A minimun of 3 is recommended. The Sylo Node will connect to these nodes when it starts and use the connections to bootstrap onto the Sylo Network. Other peers can be discovered as needed using the network’s peer discover DHT.

Bootstrap peers are provided as special P2P multiaddrs, which provide both an endpoint and a peer-to-peer ID. They look like this:

/ip4/123.45.67.89/tcp/12345/p2p/12D3KooWBDsmZbA3owqjnUU1mmprLvE2ZMTLf7kqSJDvSkvjY4Xh

Relay (--relay)

This option takes no arguments. It tells the Sylo Node to assist other peers with making peer-to-peer connections by acting as a relay.

If the node does not act as a relay, peers connected to this node are likely to appear “offline” to other peers on the network.

Management RPC

Managing the Sylo Node is performed through an HTTP RPC. The management RPC runs on a different IP/port endpoint than the Sylo Node service. The RPC supports basic authentication, though restricting access to the endpoint with additional security is suggested.

RPC IP Address (--rpc-ip-address)

This is the local IP address the RPC server will bind to.

RPC Port (--rpc-port)

This is the local port the RPC server will bind to.

RPC Username (--rpc-user)

A basic authentication username, used to access the RPC.

RPC Password (--rpc-pw)

A basic authentication password, used to access the RPC.

TLS Certificate (--tls-certificate)

Use this option to provide the path to a TLS certificate. This will cause the RPC to be run on an HTTPS server. If your management RPC is hosted on a public address, you should use HTTPS to protect your authentication data.

TLS Key (--tls-key)

If you provided a TLS certificate, you will also need to provide the path to a TLS key.

Docker Ports and Volumes

Since the Sylo Node runs in a Docker container, you will need to make connections between the container and the local machine to access things like network ports and the file system.

Connecting to a Docker Port

If you started the Sylo Node with --listen /ip4/0.0.0.0/tcp/12345, you can connect this to the same port on your local machine by calling docker run with -p 123.45.67.89:12345:12345, where 123.45.67.89 is the IP address of your local machine.

Connecting to the Docker Filesystem

If you started the Sylo Node with --data-directory /data, you can mount this Docker directory to a directory on your filesystem by calling docker run with -v ./.sylo-node:/data. This would map the directory named .sylo-node (in the current directory) to /data in the Docker container.

This is useful for providing your identity file to the Sylo Node. You can put your identity file into the .sylo-node directory and then provide it to the Sylo Node using --identity /data/node.id

Docker Compose

Remembering all the configuration parameters for a Sylo Node can be a bit daunting. Instead, you can store them all in a docker-compose file.

Here is a basic configuration you can use as a template:

version: '3.7'
services:
  sylo-node:
    image: dn3010/sylo-node
    ports:
      - '123.45.67.89:12345:12345'
      - '123.45.67.89:12346:12346'
    volumes:
      - './.sylo-node:/data'
    entrypoint:
      - '/app/sylo-node'
      - 'service'
      - '--data-directory'
      - '/data/stores/'
      - '--identity'
      - '/data/node.id'
      - '--listen'
      - '/ip4/0.0.0.0/tcp/12345'
      - '--public-listen'
      - '/ip4/98.76.54.32/tcp/12345'
      - '--bootstrap-peer'
      - '/ip4/12.34.56.78/tcp/12345/p2p/12D3KooWBDsmA7ZvmUhkqSJD1owkv34XrLvE2qjnjYZbLfmpUMTS'
      - '--bootstrap-peer'
      - '/ip4/12.3.45.67/tcp/12345/p2p/12D3KooWBQ7iH8qwdqxc6iq8U2No1FMGBBVSfZ3tdsKF8BRxyqy5'
      - '--bootstrap-peer'
      - '/ip4/1.2.34.56/tcp/12345/p2p/12D3KooWQzspLMnNuou6vtEw2s7Aecwv1VzYV1LBCnyTq6TANESc'
      - '--relay'
      - '--rpc-ip-address'
      - '0.0.0.0'
      - '--rpc-port'
      - '12346'
      - '--rpc-user'
      - 'admin'
      - '--rpc-pw'
      - 'admin'

Future development

Soon you’ll be able to earn and get rewarded for contributing to the Sylo Network.

It’s time to start dreaming big! The Sylo Network has the flexibility to support a wide range of decentralised visions — integrating communication, wallets, smart money, micropayments, and blockchains — then delivering it to every person on the planet with powerful privacy and security. The next big innovation to land on the Sylo Network could be your own!