Add Alice LND node and fix Lightning.Pub configuration
- Add second LND node (Alice) for payment testing - Fix Lightning.Pub port mapping (1776:1776) - Add ADMIN_TOKEN for HTTP API access - Configure NOSTR_RELAYS with host.docker.internal for proper nprofile generation - Fix strfry nofiles limit (set to 0 to skip limit configuration) - Add extra_hosts for Linux host.docker.internal support Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
b504aff037
commit
bd08d0fdf9
2 changed files with 164 additions and 26 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
version: '3.8'
|
# Lamassu Next Development Infrastructure
|
||||||
|
# Usage: docker compose -f docker-compose.dev.yml up -d
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Private Nostr relay for ATM communication
|
# Private Nostr relay for ATM communication
|
||||||
|
|
@ -6,58 +7,191 @@ services:
|
||||||
image: ghcr.io/hoytech/strfry:latest
|
image: ghcr.io/hoytech/strfry:latest
|
||||||
container_name: lamassu-relay
|
container_name: lamassu-relay
|
||||||
ports:
|
ports:
|
||||||
- "7777:7777"
|
- '7777:7777'
|
||||||
volumes:
|
volumes:
|
||||||
- ./strfry.conf:/etc/strfry.conf:ro
|
- ./strfry.conf:/etc/strfry.conf:ro
|
||||||
- strfry-data:/app/strfry-db
|
- strfry-data:/app/strfry-db
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 524288
|
||||||
|
hard: 524288
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'nc', '-z', 'localhost', '7777']
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Bitcoin Core in regtest mode
|
||||||
|
bitcoind:
|
||||||
|
image: lncm/bitcoind:v27.0
|
||||||
|
container_name: lamassu-bitcoind
|
||||||
|
volumes:
|
||||||
|
- bitcoind-data:/data/.bitcoin
|
||||||
|
environment:
|
||||||
|
BITCOIN_NETWORK: regtest
|
||||||
|
command:
|
||||||
|
- -regtest
|
||||||
|
- -server
|
||||||
|
- -rpcuser=lamassu
|
||||||
|
- -rpcpassword=lamassu
|
||||||
|
- -rpcallowip=0.0.0.0/0
|
||||||
|
- -rpcbind=0.0.0.0
|
||||||
|
- -zmqpubrawblock=tcp://0.0.0.0:28332
|
||||||
|
- -zmqpubrawtx=tcp://0.0.0.0:28333
|
||||||
|
- -fallbackfee=0.00001
|
||||||
|
- -txindex=1
|
||||||
|
ports:
|
||||||
|
- '18443:18443' # RPC
|
||||||
|
- '28332:28332' # ZMQ blocks
|
||||||
|
- '28333:28333' # ZMQ tx
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
'CMD',
|
||||||
|
'bitcoin-cli',
|
||||||
|
'-regtest',
|
||||||
|
'-rpcuser=lamassu',
|
||||||
|
'-rpcpassword=lamassu',
|
||||||
|
'getblockchaininfo',
|
||||||
|
]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# LND Lightning node
|
||||||
|
lnd:
|
||||||
|
image: lightninglabs/lnd:v0.18.0-beta
|
||||||
|
container_name: lamassu-lnd
|
||||||
|
depends_on:
|
||||||
|
bitcoind:
|
||||||
|
condition: service_healthy
|
||||||
|
volumes:
|
||||||
|
- lnd-data:/root/.lnd
|
||||||
|
environment:
|
||||||
|
- NETWORK=regtest
|
||||||
|
command:
|
||||||
|
- --bitcoin.active
|
||||||
|
- --bitcoin.regtest
|
||||||
|
- --bitcoin.node=bitcoind
|
||||||
|
- --bitcoind.rpchost=bitcoind:18443
|
||||||
|
- --bitcoind.rpcuser=lamassu
|
||||||
|
- --bitcoind.rpcpass=lamassu
|
||||||
|
- --bitcoind.zmqpubrawblock=tcp://bitcoind:28332
|
||||||
|
- --bitcoind.zmqpubrawtx=tcp://bitcoind:28333
|
||||||
|
- --rpclisten=0.0.0.0:10009
|
||||||
|
- --restlisten=0.0.0.0:8080
|
||||||
|
- --tlsextradomain=lnd
|
||||||
|
- --tlsextraip=0.0.0.0
|
||||||
|
- --noseedbackup
|
||||||
|
- --accept-keysend
|
||||||
|
- --accept-amp
|
||||||
|
ports:
|
||||||
|
- '10009:10009' # gRPC
|
||||||
|
- '8080:8080' # REST
|
||||||
|
- '9735:9735' # P2P
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'lncli', '--network=regtest', 'getinfo']
|
||||||
|
interval: 10s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 30
|
||||||
|
start_period: 30s
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
# Lightning.Pub - Nostr-native Lightning account system
|
# Lightning.Pub - Nostr-native Lightning account system
|
||||||
|
# Note: Lightning.Pub connects to LND for actual Lightning operations
|
||||||
lightning-pub:
|
lightning-pub:
|
||||||
image: ghcr.io/shocknet/lightning-pub:latest
|
image: ghcr.io/shocknet/lightning-pub:latest
|
||||||
container_name: lamassu-lightning-pub
|
container_name: lamassu-lightning-pub
|
||||||
|
depends_on:
|
||||||
|
lnd:
|
||||||
|
condition: service_healthy
|
||||||
|
extra_hosts:
|
||||||
|
- 'host.docker.internal:host-gateway' # Enable host.docker.internal on Linux
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- '1776:1776'
|
||||||
- "9735:9735"
|
|
||||||
volumes:
|
volumes:
|
||||||
- lightning-pub-data:/root/lightning_pub
|
- lightning-pub-data:/root/lightning_pub
|
||||||
|
- lnd-data:/root/.lnd:ro # Read-only access to LND data for macaroons/certs
|
||||||
environment:
|
environment:
|
||||||
- NETWORK=regtest # Use regtest for development
|
- NETWORK=regtest
|
||||||
|
- LND_ADDRESS=lnd:10009
|
||||||
|
- LND_CERT_PATH=/root/.lnd/tls.cert
|
||||||
|
- LND_MACAROON_PATH=/root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
|
||||||
|
# Use local strfry relay - external URL first for nprofile generation
|
||||||
|
# Lightning.Pub uses relays[0] for nprofiles, so put external URL first
|
||||||
|
- NOSTR_RELAYS=ws://host.docker.internal:7777 ws://strfry:7777
|
||||||
|
# Disable external liquidity provider for regtest
|
||||||
|
- DISABLE_LIQUIDITY_PROVIDER=true
|
||||||
|
# Admin token for HTTP API access (development only)
|
||||||
|
- ADMIN_TOKEN=lamassu-dev-admin-token
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
# Polar LND node for regtest (optional - for testing without Lightning.Pub)
|
# Second LND node (Alice) for payment testing
|
||||||
# Uncomment if you want a separate LND instance
|
# This node can pay invoices to Lightning.Pub's LND
|
||||||
# lnd:
|
lnd-alice:
|
||||||
# image: lightninglabs/lnd:v0.18.0-beta
|
image: lightninglabs/lnd:v0.18.0-beta
|
||||||
# container_name: lamassu-lnd
|
container_name: lamassu-lnd-alice
|
||||||
# ports:
|
depends_on:
|
||||||
# - "10009:10009"
|
bitcoind:
|
||||||
# - "9736:9735"
|
condition: service_healthy
|
||||||
# volumes:
|
volumes:
|
||||||
# - lnd-data:/root/.lnd
|
- lnd-alice-data:/root/.lnd
|
||||||
# command: >
|
environment:
|
||||||
# --bitcoin.active
|
- NETWORK=regtest
|
||||||
# --bitcoin.regtest
|
command:
|
||||||
# --bitcoin.node=neutrino
|
- --bitcoin.active
|
||||||
# --neutrino.connect=faucet.lightning.community
|
- --bitcoin.regtest
|
||||||
# restart: unless-stopped
|
- --bitcoin.node=bitcoind
|
||||||
|
- --bitcoind.rpchost=bitcoind:18443
|
||||||
|
- --bitcoind.rpcuser=lamassu
|
||||||
|
- --bitcoind.rpcpass=lamassu
|
||||||
|
- --bitcoind.zmqpubrawblock=tcp://bitcoind:28332
|
||||||
|
- --bitcoind.zmqpubrawtx=tcp://bitcoind:28333
|
||||||
|
- --rpclisten=0.0.0.0:10009
|
||||||
|
- --restlisten=0.0.0.0:8080
|
||||||
|
- --tlsextradomain=lnd-alice
|
||||||
|
- --tlsextraip=0.0.0.0
|
||||||
|
- --noseedbackup
|
||||||
|
- --accept-keysend
|
||||||
|
- --accept-amp
|
||||||
|
- --alias=alice
|
||||||
|
ports:
|
||||||
|
- '10010:10009' # gRPC (different host port)
|
||||||
|
- '8081:8080' # REST (different host port)
|
||||||
|
- '9736:9735' # P2P (different host port)
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'lncli', '--network=regtest', 'getinfo']
|
||||||
|
interval: 10s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 30
|
||||||
|
start_period: 30s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
# PostgreSQL for any server-side state (optional)
|
# PostgreSQL for optional server-side state
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
container_name: lamassu-postgres
|
container_name: lamassu-postgres
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- '5432:5432'
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: lamassu_dev
|
POSTGRES_DB: lamassu_dev
|
||||||
POSTGRES_USER: lamassu
|
POSTGRES_USER: lamassu
|
||||||
POSTGRES_PASSWORD: lamassu_dev_password
|
POSTGRES_PASSWORD: lamassu_dev_password
|
||||||
volumes:
|
volumes:
|
||||||
- postgres-data:/var/lib/postgresql/data
|
- postgres-data:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD-SHELL', 'pg_isready -U lamassu -d lamassu_dev']
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
strfry-data:
|
strfry-data:
|
||||||
|
bitcoind-data:
|
||||||
|
lnd-data:
|
||||||
|
lnd-alice-data:
|
||||||
lightning-pub-data:
|
lightning-pub-data:
|
||||||
postgres-data:
|
postgres-data:
|
||||||
# lnd-data:
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ relay {
|
||||||
bind = "0.0.0.0"
|
bind = "0.0.0.0"
|
||||||
port = 7777
|
port = 7777
|
||||||
|
|
||||||
|
# Set to 0 to skip configuring nofiles limit (avoids container ulimit issues)
|
||||||
|
nofiles = 0
|
||||||
|
|
||||||
info {
|
info {
|
||||||
name = "Lamassu Dev Relay"
|
name = "Lamassu Dev Relay"
|
||||||
description = "Private Nostr relay for ATM development and testing"
|
description = "Private Nostr relay for ATM development and testing"
|
||||||
|
|
@ -32,9 +35,10 @@ events {
|
||||||
|
|
||||||
# Event kinds we care about
|
# Event kinds we care about
|
||||||
# 14: Private DMs (NIP-17)
|
# 14: Private DMs (NIP-17)
|
||||||
# 21001-21003: CLINK events
|
# 21000: Lightning.Pub RPC (generic request/response)
|
||||||
|
# 21001-21003: CLINK events (Offer, Debit, Manage)
|
||||||
# 22242: NIP-42 auth
|
# 22242: NIP-42 auth
|
||||||
# 30078: Machine status (replaceable)
|
# 30078: Service Beacon (replaceable, service discovery)
|
||||||
# 30079: Transaction records (replaceable)
|
# 30079: Transaction records (replaceable)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue