Implement secure peer-to-peer communication between Mining CLI instances for remote control of mining rigs. Uses Borg library for encryption (SMSG, STMF, TIM) and Poindexter for KD-tree based peer selection. Features: - Node identity management with X25519 keypairs - Peer registry with multi-factor optimization (ping/hops/geo/score) - WebSocket transport with SMSG encryption - Controller/Worker architecture for remote operations - TIM/STIM encrypted bundles for profile/miner deployment - CLI commands: node, peer, remote - REST API endpoints for node/peer/remote operations - Docker support for P2P testing with multiple nodes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
85 lines
2.1 KiB
YAML
85 lines
2.1 KiB
YAML
# Docker Compose for P2P testing with multiple nodes
|
|
# Usage:
|
|
# docker-compose -f docker-compose.p2p.yml build
|
|
# docker-compose -f docker-compose.p2p.yml up -d
|
|
#
|
|
# Then in another terminal:
|
|
# docker exec -it mining-controller miner-cli node info
|
|
# docker exec -it mining-worker1 miner-cli node info
|
|
# docker exec -it mining-controller miner-cli peer add --address mining-worker1:9091 --name worker1
|
|
|
|
version: '3.8'
|
|
|
|
services:
|
|
controller:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.node
|
|
container_name: mining-controller
|
|
hostname: mining-controller
|
|
command: ["node", "serve", "--listen", ":9091"]
|
|
ports:
|
|
- "9091:9091"
|
|
volumes:
|
|
- controller-config:/root/.config/lethean-desktop
|
|
- controller-data:/root/.local/share/lethean-desktop
|
|
networks:
|
|
- mining-p2p
|
|
entrypoint: /bin/sh
|
|
command:
|
|
- -c
|
|
- |
|
|
miner-cli node init --name controller --role controller
|
|
miner-cli node serve --listen :9091
|
|
|
|
worker1:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.node
|
|
container_name: mining-worker1
|
|
hostname: mining-worker1
|
|
volumes:
|
|
- worker1-config:/root/.config/lethean-desktop
|
|
- worker1-data:/root/.local/share/lethean-desktop
|
|
networks:
|
|
- mining-p2p
|
|
depends_on:
|
|
- controller
|
|
entrypoint: /bin/sh
|
|
command:
|
|
- -c
|
|
- |
|
|
miner-cli node init --name worker1 --role worker
|
|
miner-cli node serve --listen :9091
|
|
|
|
worker2:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.node
|
|
container_name: mining-worker2
|
|
hostname: mining-worker2
|
|
volumes:
|
|
- worker2-config:/root/.config/lethean-desktop
|
|
- worker2-data:/root/.local/share/lethean-desktop
|
|
networks:
|
|
- mining-p2p
|
|
depends_on:
|
|
- controller
|
|
entrypoint: /bin/sh
|
|
command:
|
|
- -c
|
|
- |
|
|
miner-cli node init --name worker2 --role worker
|
|
miner-cli node serve --listen :9091
|
|
|
|
networks:
|
|
mining-p2p:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
controller-config:
|
|
controller-data:
|
|
worker1-config:
|
|
worker1-data:
|
|
worker2-config:
|
|
worker2-data:
|