services: bitcoin: # Bitcoin Knots — Luke Dashjr's fork of Core, stricter mempool policy # Image is unofficial but built from reproducible Knots binaries (bitcoinknots.org) # For max sovereignty: build from source and replace this image with your own # To swap implementations: change image + datadir volume path, nothing else image: bitcoinknots/bitcoin:29.3.knots20260210 container_name: bitcoin restart: unless-stopped volumes: - bitcoin_data:/home/bitcoin/.bitcoin ports: - "8333:8333" networks: - node-net healthcheck: test: ["CMD", "bitcoin-cli", "-datadir=/home/bitcoin/.bitcoin", "getblockchaininfo"] interval: 60s timeout: 10s retries: 5 start_period: 30s lnd: image: lightningnetwork/lnd:v0.18.3-beta container_name: lnd restart: unless-stopped depends_on: bitcoin: condition: service_healthy volumes: - lnd_data:/root/.lnd ports: - "9735:9735" networks: - node-net healthcheck: test: ["CMD", "lncli", "--network=mainnet", "state"] interval: 30s timeout: 10s retries: 10 start_period: 60s lnbits: image: lnbits/lnbits:latest container_name: lnbits restart: unless-stopped depends_on: lnd: condition: service_started ports: - "127.0.0.1:5000:5000" volumes: - lnbits_data:/app/data - lnd_data:/lnd:ro environment: - LNBITS_DATA_FOLDER=/app/data - LNBITS_BACKEND_WALLET_CLASS=LndRestWallet - LND_REST_ENDPOINT=https://lnd:8080 - LND_REST_CERT=/lnd/tls.cert - LND_REST_MACAROON=/lnd/data/chain/bitcoin/mainnet/invoice.macaroon - LNBITS_SITE_TITLE=Timmy Node - LNBITS_SITE_TAGLINE=Lightning AI Agent Infrastructure - UVICORN_HOST=0.0.0.0 - UVICORN_PORT=5000 networks: - node-net networks: node-net: driver: bridge volumes: bitcoin_data: driver: local driver_opts: type: none o: bind device: /data/bitcoin lnd_data: driver: local driver_opts: type: none o: bind device: /data/lnd lnbits_data: driver: local driver_opts: type: none o: bind device: /data/lnbits