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
RemoteBasestoreinterface for creating namespacedBasestoreinstances. - A
RemoteNetworkerinterface for managing DSwarm DHT connections. Supports stream-level extensions. - A
RemoteDDatabaseinterface that feels exactly like normal ol'DDatabase, with few exceptions. Extensions included.
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).
npm i dhub -g 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.
To work with dHub, you'll probably want to start with the Node.js client library. The README over there provides detailed API info.
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()MIT