Skip to content

Lightweight server that provides remote access to dDatabase instances and a dWebSwarm instance.

Notifications You must be signed in to change notification settings

dwebprotocol/dhub

 
 

Repository files navigation

dhub

DDatabases, batteries included.

dHub is a lightweight server that provides remote access to DDatabases and a DSwarm instance. It exposes a simple RPC interface that can be accessed with the dHub client for Node.js.

The RPC API's designed to be minimal, maintaining parity with DDatabase and the @basestorex/networker but with few extras.

Features include:

  • A RemoteBasestore interface for creating namespaced Basestore instances.
  • A RemoteNetworker interface for managing DSwarm DHT connections. Supports stream-level extensions.
  • A RemoteDDatabase interface that feels exactly like normal ol' DDatabase, with few exceptions. Extensions included.

Already using the dDrive daemon?

With dHub, most of the dDrive daemon's functionality has been moved into "userland" -- instead of providing remote access to DDrives, the regular ddrive module can be used with remote DDatabases.

If you're currently using the dDrive daemon with FUSE and/or the daemon CLI, take a look at the upgrade instructions in @dhub/ddrive, which is our new DDrive companion service for handling FUSE/CLI alongside dHub.

Note: The first time you run dHub, it will detect your old dDrive daemon installation and do an automatic migration. You can postpone the migration by starting the server with the --no-migrate flag (dhub --no-migrate).

Installation

npm i dhub -g

Getting Started

When installed globally, you can use the dhub CLI tool to start the server:

❯ dhub --no-migrate  // Starts the server without performing the dDrive daemon migration

The dhub command supports the following flags:

--bootstrap   // DSwarm bootstrapping options (see DSwarm docs).
--host        // Host to bind to.
--port        // Port to bind to (if specified, will use TCP).
--memory-only // Run in memory-only mode.
--no-announce // Never announce topics on the DHT.
--no-migrate  // Do not attempt to migrate the dDrive daemon's storage to dHub.
--repl        // Start the server with a debugging REPL.

By default, dHub binds to a UNIX domain socket (or named pipe on Windows) at ~/.dhub/dhub.sock.

Once the server's started, you can use the client to create and manage remote DDatabases. If you'd like the use the DDrive CLI, check out the @dhub/ddrive docs.

API

To work with dHub, you'll probably want to start with the Node.js client library. The README over there provides detailed API info.

Simulator

dHub includes a "simulator" that can be used to create one-off dHub instances, which can be used for testing.

const simulator = require('dhub/simulator')
// client is a DHubClient, server is a DHubServer
const { client, server, cleanup } = await simulator()

License

MIT

About

Lightweight server that provides remote access to dDatabase instances and a dWebSwarm instance.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%