# Lethean Testnet — Docker Deployment Run the full Lethean ecosystem in Docker. No compilation needed. ## Deployment Options | Compose File | For | Services | |---|---|---| | `docker-compose.node.yml` | Home node operator | Daemon + wallet (PoS staking) | | `docker-compose.exit.yml` | VPN exit node operator | Daemon + wallet + WireGuard | | `docker-compose.pull.yml` | Full ecosystem | All 8 services + databases | ## Helper Scripts ```bash bash demos/helpers/chain-info.sh # Chain height, difficulty, status bash demos/helpers/chain-aliases.sh # List on-chain aliases bash demos/helpers/wallet-address.sh # Show your wallet address bash demos/helpers/wallet-balance.sh # Check LTHN balance bash health.sh # Full ecosystem health check ``` ## 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.