Mining/docker-compose.p2p.yml
snider 9a781ae3f0 feat: Add multi-node P2P mining management system
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>
2025-12-29 19:49:33 +00:00

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: