forked from lthn/blockchain
- docker-compose.pull.yml: production compose with pre-built images, health checks, env var config, service dependencies - docker-compose.local.yml: override for mounting existing chain data - docker-compose.ecosystem.yml: build-from-source compose with pool, LNS, Redis added - Chain Dockerfile: add curl for health checks, swagger API resources - Pool Dockerfile: Ubuntu 24.04, Boost 1.83, native ProgPoWZ compilation - .env.example: configurable passwords, ports, hostname - pool-config.json: Docker-networked pool config - health.sh: one-command stack health check - deploy.sh: remote server deployment script - lethean-testnet.service: systemd auto-start unit - README.md: quickstart, mining guide, backup, troubleshooting All 8 services tested and running in Docker: daemon, wallet, explorer, trade-api, trade-frontend, pool, LNS, docs Co-Authored-By: Charon <charon@lethean.io>
134 lines
4 KiB
Markdown
134 lines
4 KiB
Markdown
# Lethean Testnet — Docker Deployment
|
|
|
|
Run the full Lethean ecosystem in Docker. No compilation needed.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# 1. Configure
|
|
cp .env.example .env
|
|
# Edit .env — at minimum change JWT_SECRET and WALLET_PASSWORD
|
|
|
|
# 2. Start
|
|
docker compose -f docker-compose.pull.yml up -d
|
|
|
|
# 3. Check
|
|
docker compose -f docker-compose.pull.yml ps
|
|
```
|
|
|
|
The daemon takes ~30 seconds to initialise the chain database on first run.
|
|
Other services wait for the daemon health check before starting.
|
|
|
|
## Services
|
|
|
|
| Service | URL | Description |
|
|
|---------|-----|-------------|
|
|
| Block Explorer | http://localhost:3335 | Browse blocks, transactions, aliases |
|
|
| Trade DEX | http://localhost:3338 | Decentralised exchange frontend |
|
|
| Trade API | http://localhost:3336 | REST API for trade operations |
|
|
| Mining Pool | http://localhost:2117 | Pool stats API |
|
|
| Pool Stratum | localhost:5555 | Connect miners here |
|
|
| LNS | http://localhost:5553 | Lethean Name Service HTTP API |
|
|
| LNS DNS | localhost:5354 | DNS resolver for .lthn names |
|
|
| Daemon RPC | http://localhost:46941 | Chain node JSON-RPC |
|
|
| Wallet RPC | http://localhost:46944 | Wallet JSON-RPC |
|
|
| Docs | http://localhost:8099 | Documentation site |
|
|
|
|
## Mining
|
|
|
|
Connect a ProgPoWZ miner to the pool stratum:
|
|
|
|
```
|
|
stratum+tcp://YOUR_IP:5555
|
|
```
|
|
|
|
Compatible miners:
|
|
- **progminer** (recommended) — `progminer -P stratum+tcp://YOUR_WALLET_ADDRESS@localhost:5555`
|
|
- **T-Rex** — ProgPoWZ algorithm
|
|
- **TeamRedMiner** — ProgPoWZ algorithm
|
|
|
|
## Wallet
|
|
|
|
The wallet auto-creates on first start. To check your balance:
|
|
|
|
```bash
|
|
curl -s http://localhost:46944/json_rpc \
|
|
-d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}' \
|
|
-H 'Content-Type: application/json'
|
|
```
|
|
|
|
The wallet runs with PoS mining enabled (`--do-pos-mining`), so it will stake
|
|
any balance automatically.
|
|
|
|
## Chain Status
|
|
|
|
```bash
|
|
curl -s http://localhost:46941/json_rpc \
|
|
-d '{"jsonrpc":"2.0","id":"0","method":"getinfo"}' \
|
|
-H 'Content-Type: application/json' | python3 -m json.tool
|
|
```
|
|
|
|
## Volumes
|
|
|
|
| Volume | Contains | Backup? |
|
|
|--------|----------|---------|
|
|
| `chain-data` | Blockchain database (LMDB) | Optional — can resync |
|
|
| `wallet-data` | Wallet file + keys | **Critical — back up regularly** |
|
|
| `explorer-db` | Explorer PostgreSQL | Can recreate from chain |
|
|
| `trade-db` | Trade PostgreSQL | Important for trade history |
|
|
|
|
### Backup wallet
|
|
|
|
```bash
|
|
docker compose -f docker-compose.pull.yml stop wallet
|
|
docker cp lthn-wallet:/wallet ./wallet-backup-$(date +%Y%m%d)
|
|
docker compose -f docker-compose.pull.yml start wallet
|
|
```
|
|
|
|
## Ports
|
|
|
|
All ports can be changed via `.env`. See `.env.example` for the full list.
|
|
|
|
If you're running behind a firewall and want external access:
|
|
- **P2P:** Open port 46942 (TCP) for other nodes to connect
|
|
- **Stratum:** Open port 5555 (TCP) for external miners
|
|
- **Explorer:** Open port 3335 (TCP) for public block explorer
|
|
|
|
## Troubleshooting
|
|
|
|
**Daemon crashes on start:**
|
|
Check logs with `docker logs lthn-daemon`. Common causes:
|
|
- Port already in use — change ports in `.env`
|
|
- Corrupt chain data — remove volume: `docker volume rm docker_chain-data`
|
|
|
|
**Wallet shows 0 balance:**
|
|
The wallet needs to sync with the daemon first. Check sync status in daemon logs.
|
|
New wallets start empty — mine or receive LTHN to fund them.
|
|
|
|
**Pool shows "Daemon died":**
|
|
The pool needs both the daemon and wallet running. Check both are healthy:
|
|
```bash
|
|
docker compose -f docker-compose.pull.yml ps daemon wallet
|
|
```
|
|
|
|
**Explorer shows "offline":**
|
|
The explorer connects to the daemon internally. If the daemon is still syncing,
|
|
the explorer will show offline until sync completes.
|
|
|
|
## Stopping
|
|
|
|
```bash
|
|
docker compose -f docker-compose.pull.yml down # stop containers
|
|
docker compose -f docker-compose.pull.yml down -v # stop + delete data
|
|
```
|
|
|
|
## Building from Source
|
|
|
|
If you want to build the images yourself instead of pulling pre-built ones:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.ecosystem.yml build
|
|
docker compose -f docker-compose.ecosystem.yml up -d
|
|
```
|
|
|
|
This requires the full source tree — see the main repository README.
|