This repository contains everything you need to deploy a fully functioning reference TAPEDRIVE node — including archive, miner, and web services — using NGINX and the official tapedrive-cli binary releases from GitHub.
Warning
This is an early reference implementation. It is not intended for production use. Use at your own risk.
Only DEVNET is supported at this time.
- A remote linux server (Ubuntu 24.04 recommended)
- Access via SSH (key-based)
The setup script can run a source build or download a pre-built binary. Binary releases are fetched automatically from GitHub.
git clone https://github.com/spool-labs/deploy.git
cd tape-deploy
make configure
You will be prompted for:
- SSH address (e.g.
[email protected]) - Domain (e.g.
node.tapedrive.io) - Build method: binary (recommended) or source
This creates tapedrive.config for the Makefile.
make setup
By default (binary build):
- Installs runtime deps (NGINX, Certbot)
- Downloads latest
tapedrivebinary from GitHub - Renders and uploads systemd unit files
- Uploads or retrieves
deploy/miner.json - Configures NGINX and UFW
If you selected source, it will compile from source (may take a while).
Important
To pre-generate a miner.json identity:
solana-keygen new --outfile deploy/miner.json
Without it, a new keypair will be generated on the remote and downloaded to deploy/miner.json.
make logs-tapemine
make logs-tapearchive
make logs-tapeweb
If you don't see any logs, you might need to reboot your machine. On some Linux distros (especially cloud images or custom setups), journald doesn't properly initialize persistent storage or attach to early services until after a reboot.
Important
You will need to fund your miner with some SOL to get started. You can do this by sending SOL to the address in ./deploy/miner.json.
First, check the SOL address of your miner by running:
solana address -k deploy/miner.jsonThen, fund your miner with some SOL using the Solana CLI or a wallet.
make deployThis will restart all three tapedrive services on your configured server.
make upgradeThis will pull the latest version of tapedrive-cli from crates.io and restart the services.
make snapshotDownloads a snapshot of the archive database to ./db_tapestore.
If issues arise:
make logs-tapemine
make logs-tapearchive
make logs-tapeweb
make ssh
Health check:
curl -X POST http://<your_server>/api \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth","params":{}}'
Get tape address:
curl -X POST http://<your_server>/api \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getTapeAddress","params":{"tape_number":1}}'
See full RPC docs here.
scripts/setup.sh(source build)scripts/setup-binary.sh(binary build)templates/for service + nginx configsdeploy/for rendered configs- Makefile for end-to-end management
Reach out to @tapedrive_io for support.
