Get Started Mining With CONVOY

Set up your own DATUM Gateway
Already running a DATUM Gateway?

These are already the Gateway's built-in defaults, so you shouldn't need to set them at all:

datum.pool_host: datum-beta1.mine.convoy.xyz
datum.pool_port: 28915
datum.pool_pubkey: dbb11fa0c2b5403e4f798fa6071bb97e6079d219598366032fdf2ae01962b13c5e66e2be7d6b008f0b2603f3e6f6fc64768fa786c8129c46d3e30a5867734b62
1.
Set up a Bitcoin node

DATUM works by generating your own block templates from your own Bitcoin node. Before installing the DATUM Gateway, you need a synced node it can talk to.

Choose your platform:

Add https://start9.mempool.guide as a custom registry in your StartOS Marketplace (click the registry name at the top left, then “+ Add”), then install “Bitcoin Knots” from it.

Adding the mempool.guide registry by URL.

Bitcoin Knots' own Actions & Config exposes mempool, block-template, and block-notify settings directly, under “Mempool Settings” and “Other Settings”, if you want to tune them — the defaults work fine to get started.

The simplest route is the official Bitcoin Knots PPA:

sudo add-apt-repository ppa:luke-jr/bitcoinknots
sudo apt install bitcoind

Download the build for your CPU from bitcoinknots.org and extract it.

Bitcoin Knots doesn't publish an Alpine build, and Alpine's musl libc can't run the other distros' prebuilt (glibc) binaries either — install the build dependencies and compile it yourself:

apk add build-base cmake pkgconf python3 libevent-dev boost-dev sqlite-dev
cmake -B build
cmake --build build

See Knots' own build-unix.md for the full generic Linux build notes.

Either way, it's the heaviest part of this setup, so give it a fast disk and generous storage/bandwidth.

Once it's synced, give its mempool room to hold more than the default, leave room for the pool's payout transaction, and notify the Gateway of new blocks. In your node's config file:

maxmempool=1000
blockmaxweight=785000
blocknotify=killall -USR1 datum_gateway

The blocknotify line requires killall to be installed, from the psmisc package:

apk add psmisc
sudo pacman -S psmisc
sudo apt install psmisc
sudo dnf install psmisc
sudo apt install psmisc

If your node and Gateway run on different machines, use the Gateway's NOTIFY API endpoint instead.

Run it as a service so it starts on boot:

[Unit]
Description=Bitcoin Knots daemon
After=network.target

[Service]
User=bitcoin
ExecStart=/usr/local/bin/bitcoind -conf=/etc/bitcoin/bitcoin.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

Save that as /etc/systemd/system/bitcoind.service (adjusting paths/users for your setup), then:

sudo systemctl enable --now bitcoind

If you downloaded the GUI build instead, just leave bitcoin-qt running.

Alpine uses OpenRC rather than systemd. Check Bitcoin Knots' README or the Alpine wiki for an OpenRC init script, or just run bitcoind directly for now and manage restarts yourself.

2.
Install and configure the DATUM Gateway

The DATUM Gateway sits between your node and your miners: it pulls block templates from your node over RPC, hands out work to your miners, and coordinates the payout split with CONVOY over the encrypted DATUM protocol. Mining through your own Gateway is CONVOY's standard 1% pool fee.

Choose your platform:

CONVOY maintains its own “Datum Gateway” build on that same community registry (flavor #pow), already configured to mine on CONVOY's DATUM server by default.

Don't install the “Datum Gateway” you'll also see on Start9's own official Registry or its Community Registry while browsing — those are different, separately-maintained builds. The Community Registry one is built from an old version and won't work with Bitcoin at all anymore, let alone CONVOY. The official Registry's version is unverified against CONVOY; treat it as unsupported until proven otherwise.

  • Install “Datum Gateway” (the listing tagged #pow) from the start9.mempool.guide registry you added in Step 1.

The mempool.guide registry: Bitcoin Knots and Datum Gateway (#pow) alongside a few other BLAKE2b-aware packages.

  • Open its Actions & Config, then Mining Settings, and enter your own Bitcoin payout address.

Mining Settings: enter your Bitcoin address here. Everything else can be left as-is.

  • Open Actions & Config → Create Password to generate the Gateway's admin password (used for its own web dashboard, separate from your StartOS password).

Create Password generates and displays the admin password for you.

Once your Bitcoin Knots install has finished syncing and both tasks above are cleared, the Dashboard's Status should turn healthy.

The Dashboard lists exactly what's left before the Gateway can start.

Install the build dependencies, then compile from source:

apk add cmake pkgconf curl-dev jansson-dev libsodium-dev libmicrohttpd-dev psmisc build-base
sudo pacman -Syu base-devel cmake pkgconf curl jansson libsodium libmicrohttpd psmisc
sudo apt install cmake pkgconf libcurl4-openssl-dev libjansson-dev libsodium-dev libmicrohttpd-dev psmisc
sudo dnf install cmake pkgconf libcurl-devel jansson-devel libsodium-devel libmicrohttpd-devel psmisc
sudo apt install cmake pkgconf libcurl4-openssl-dev libjansson-dev libsodium-dev libmicrohttpd-dev psmisc

A Launchpad PPA is also planned specifically for Ubuntu, as a simpler alternative once it's ready.

git clone https://github.com/CONVOYMining/datum_gateway.git
cd datum_gateway
cmake .
make

Copy the example config from doc/example_datum_gateway_config.json in the repo, then fill in your node's RPC details and your own Bitcoin payout address:

{
    "bitcoind": {
        "rpcuser": "your_node_rpc_username",
        "rpcpassword": "your_node_rpc_password",
        "rpcurl": "http://localhost:8332"
    },
    "mining": {
        "pool_address": "your own Bitcoin payout address"
    },
    "api": {
        "admin_password": "choose a strong password",
        "listen_port": 7152
    }
}

Set a strong api.admin_password to protect the Gateway's web dashboard. You should leave datum.pool_host unset; it already defaults to CONVOY's DATUM server.

Run it as a service too:

[Unit]
Description=DATUM Gateway
After=network.target bitcoind.service

[Service]
WorkingDirectory=/etc/datum_gateway
ExecStart=/usr/local/bin/datum_gateway -c /etc/datum_gateway/datum_gateway_config.json
Restart=on-failure

[Install]
WantedBy=multi-user.target

Save that as /etc/systemd/system/datum_gateway.service (adjusting paths for your setup), then:

sudo systemctl enable --now datum_gateway

Alpine uses OpenRC rather than systemd here too — see the note in Step 1, or just run datum_gateway directly for now.

Once running, the Gateway serves a small dashboard on the port you configured (api.listen_port). You can review and, if you set api.modify_conf, edit your configuration there:

The DATUM Gateway's Config tab, showing your Bitcoin address, coinbase tag, and DATUM pool connection.

The Advanced section, where your node's RPC connection is configured.

Check the Status tab to confirm it connected:

A connected Gateway's Status tab.

3.
Point your miners at your DATUM Gateway, using your Bitcoin address as the username and "x" for the password.
  • Supported address types:
    • P2PKH (Original address type. Begins with "1")
    • P2SH (Multisignature or P2SH-Segwit. Begins with "3")
    • Bech32 (Segwit. Begins with "bc".)
    • Bech32m (Taproot. Begins with "bc". Longer than Bech32.)
  • Your Bitcoin address must be exact.
    • Hand typing of addresses is generally not recommended.
    • The Gateway does not validate that your username is a valid Bitcoin address. It will not reject your connection if it is invalid.
    • If your username is not a valid Bitcoin address, the Gateway will not be able to create blocks. Always test your full mining stack after any configuration change.
    • Always double check your stats page to ensure everything is working correctly!
  • You may append a short custom workername to the address by using a period (.) between the address and worker name. This can help track your miners or groups of miners more precisely on our dashboard.
    • Example: myaddress.myworkername
    • If no worker name is given, "default" is used.
  • Multiple miners/connections can be made for the same username/workername and they are simply aggregated.
  • The Gateway allows up to 191 characters in a Stratum username. Always check our dashboard to confirm your miner is functioning with the pool after setup.
  • Also add stratum+tcp://mine.convoy.xyz:3333 as a backup/failover pool, using the same username as your primary connection above, so your miners keep working if your node or Gateway ever goes offline. This is a failover only, not a primary connection: mining directly against it skips DATUM, gives up control of your block templates, and pays a 2% fee for the failover service instead of DATUM's standard 1%.
  • Passwords can be anything and are ignored, but keeping it short (ex: “x”, without quotes) is recommended.
  • Not sure your Gateway's IP? Check your router's list of connected devices.
    • Run ip -4 -o addr show scope global on the machine running it — the number right after "inet" (before the /) on the line for your network interface is its LAN IP.
    • Or check the Gateway's Interfaces tab in StartOS.
Select every miner brand you run (you can select more than one):

Select at least one miner brand above to see setup instructions.

In the miner's web interface, go to Miner ConfigurationGeneral Settings, and set Pool 1's URL to stratum+tcp://your_gateway_ip:23334, Worker to your Bitcoin address, and Password to "x".

Repeat this for Pool 2, setting the URL to stratum+tcp://mine.convoy.xyz:3333 as a failover — keep the same Worker and Password as Pool 1.

If you don't know your miner's address on your network, find.goldshell.com can help locate it.

Make sure the interface is Unlocked (top right) before continuing. Under Miner, use Add to open Pool Config: the Protocol is already set to stratum+tcp, so set the URL to just your_gateway_ip:23334 (no stratum+tcp:// prefix), Miner Name to your Bitcoin address, and Password to "x".

Use Add again for a second pool entry: same Protocol, URL set to just mine.convoy.xyz:3333 (still no stratum+tcp:// prefix) as a failover, and the same Miner Name and Password as before.

On the miner's Config page, add a pool with URL stratum+tcp://your_gateway_ip:23334, Pool User set to your Bitcoin address, and Pool Password set to "x".

Click Add Pool again for a second entry: URL stratum+tcp://mine.convoy.xyz:3333 as a failover, with the same Pool User and Pool Password as before.

(Placeholder — we don't yet have a screenshot of Innosilicon's web interface to confirm exact field names. Most units in circulation are the older S11 SiaMaster; if you use one, let us know what you see and we'll fill this in.)

Once a miner connects, you'll see it appear on your Gateway's Clients tab:

Your DATUM Gateway's Clients tab, showing a connected miner and its accepted/rejected share counts.

4.
Confirm everything is working
  • It can take a few minutes after your first accepted proof of work submission for stats to be available.

See your stats:

Welcome to CONVOY!