50bd396c2b
- Caddy HTTPS static file server config - Tor hidden service (V3 onion) for anonymous access - Bootstrap generation script (blk0001.dat + txleveldb + database) - Dropbox upload script - Systemd services (tor-bootstrap, caddy) - Operator guide and verification script
152 lines
4.4 KiB
Markdown
152 lines
4.4 KiB
Markdown
# TRI Bootstrap Server
|
|
|
|
Self-hosted bootstrap server for the Triangles (TRI) cryptocurrency network.
|
|
|
|
Serves blockchain bootstrap archives over both **clearnet (HTTPS)** and **Tor onion**, enabling new nodes to sync quickly without downloading 2M+ blocks from peers.
|
|
|
|
---
|
|
|
|
## What is a Bootstrap Server?
|
|
|
|
When a new Triangles node starts with no chain data, it needs a trusted source of truth. Rather than syncing from random peers (which might be on a minority/forked chain), the node downloads a signed, known-good blockchain snapshot from a trusted bootstrap URL.
|
|
|
|
This server provides:
|
|
- **HTTPS endpoint** — for nodes on clearnet
|
|
- **Tor onion endpoint** — for nodes that prefer or require Tor anonymity
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ Bootstrap Server │
|
|
│ (your server, e.g. DNS2) │
|
|
│ │
|
|
New TRI Node ─────►│ Caddy (HTTPS :443) ───► static │
|
|
(clearnet) │ │ │
|
|
│ Tor HS (:80) ──────► same static │
|
|
│ │ │
|
|
└─────────│───────────────────────────┘
|
|
│
|
|
Triangles Bootstrap Archive
|
|
(blk0001.dat + txleveldb + database/)
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### 1. Clone / Download This Repo
|
|
|
|
```bash
|
|
git clone https://github.com/SamiAhmed7777/tri-bootstrap-server.git
|
|
cd tri-bootstrap-server
|
|
```
|
|
|
|
### 2. Configure Environment
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your settings
|
|
```
|
|
|
|
Key variables:
|
|
- `BOOTSTRAP_DIR` — where bootstrap archives are stored
|
|
- `TOR_HS_PORT` — internal port for Tor hidden service (default: 80)
|
|
- `CUDDLE_DOMAIN` — your domain (e.g. `bootstrap.cryptographic-triangles.org`)
|
|
|
|
### 3. Run
|
|
|
|
```bash
|
|
# Using the setup script
|
|
sudo ./scripts/setup.sh
|
|
|
|
# Or manually:
|
|
sudo cp tor/torrc /etc/tor/tri-bootstrap/torrc
|
|
sudo systemctl enable --now tor@tri-bootstrap
|
|
sudo cp systemd/tri-bootstrap-caddy.service /etc/systemd/system/
|
|
sudo systemctl enable --now tri-bootstrap-caddy
|
|
```
|
|
|
|
### 4. Generate Your First Bootstrap
|
|
|
|
```bash
|
|
# On a trusted, synced TRI node:
|
|
./scripts/generate-bootstrap.sh /path/to/.triangles
|
|
|
|
# Upload the archive to your server:
|
|
scp triangles-bootstrap.tar.gz user@your-server:/opt/triangles-bootstrap/
|
|
```
|
|
|
|
---
|
|
|
|
## Scripts
|
|
|
|
| Script | Purpose |
|
|
|--------|---------|
|
|
| `generate-bootstrap.sh` | Creates a `triangles-bootstrap.tar.gz` from a running node's chain data |
|
|
| `publish-bootstrap.sh` | Uploads to Dropbox (optional bridge) |
|
|
| `verify-bootstrap.sh` | Verifies archive integrity and chain hash |
|
|
|
|
---
|
|
|
|
## Tor Onion Setup
|
|
|
|
The server automatically creates a Tor hidden service. The `.onion` address is stored in:
|
|
|
|
```
|
|
/var/lib/tor/tri-bootstrap/hostname
|
|
```
|
|
|
|
Share this address with nodes that need Tor-only connectivity.
|
|
|
|
---
|
|
|
|
## For Node Operators
|
|
|
|
In your TRI node's `triangles.conf`:
|
|
|
|
```ini
|
|
# Use this bootstrap server
|
|
bootstrap=https://bootstrap.your-domain.com/triangles-bootstrap.tar.gz
|
|
|
|
# Or via Tor (replace with your server's onion address)
|
|
bootstrap=http://your-onion-address.onion/triangles-bootstrap.tar.gz
|
|
```
|
|
|
|
---
|
|
|
|
## Repo Structure
|
|
|
|
```
|
|
tri-bootstrap-server/
|
|
├── README.md
|
|
├── LICENSE
|
|
├── .env.example
|
|
├── caddy/
|
|
│ └── Caddyfile.template
|
|
├── tor/
|
|
│ └── torrc.template
|
|
├── scripts/
|
|
│ ├── setup.sh
|
|
│ ├── generate-bootstrap.sh
|
|
│ ├── publish-bootstrap.sh
|
|
│ └── verify-bootstrap.sh
|
|
├── systemd/
|
|
│ ├── tor-bootstrap.service
|
|
│ └── tri-bootstrap-caddy.service
|
|
└── docs/
|
|
├── bootstrap-format.md
|
|
└── operator-guide.md
|
|
```
|
|
|
|
---
|
|
|
|
## Security Notes
|
|
|
|
- The bootstrap archive contains the blockchain up to a point in time — it is NOT a wallet and contains no keys
|
|
- Always generate bootstrap from a **trusted, verified canonical node**
|
|
- Verify the `bestblockhash` of your bootstrap against known-good references before publishing
|
|
- Tor hidden service provides anonymity for nodes that need it, but the clearnet HTTPS route is faster for most users
|