Dockerize dev stack, now fully functional

This commit is contained in:
Reckless_Satoshi
2022-02-09 11:45:11 -08:00
parent ee7786c5c1
commit 96be0d8f80
5 changed files with 48 additions and 37 deletions

View File

@ -1,4 +1,4 @@
import grpc, os, hashlib, secrets, json import grpc, os, hashlib, secrets
from . import lightning_pb2 as lnrpc, lightning_pb2_grpc as lightningstub from . import lightning_pb2 as lnrpc, lightning_pb2_grpc as lightningstub
from . import invoices_pb2 as invoicesrpc, invoices_pb2_grpc as invoicesstub from . import invoices_pb2 as invoicesrpc, invoices_pb2_grpc as invoicesstub
from . import router_pb2 as routerrpc, router_pb2_grpc as routerstub from . import router_pb2 as routerrpc, router_pb2_grpc as routerstub
@ -14,8 +14,18 @@ from api.models import LNPayment
# Should work with LND (c-lightning in the future if there are features that deserve the work) # Should work with LND (c-lightning in the future if there are features that deserve the work)
####### #######
CERT = b64decode(config('LND_CERT_BASE64')) # Read tls.cert from file or .env variable string encoded as base64
MACAROON = b64decode(config('LND_MACAROON_BASE64')) try:
CERT = open(os.path.join(config('LND_DIR'),'tls.cert'), 'rb').read()
except:
CERT = b64decode(config('LND_CERT_BASE64'))
# Read macaroon from file or .env variable string encoded as base64
try:
MACAROON = open(os.path.join(config('LND_DIR'), config('MACAROON_path')), 'rb').read()
except:
MACAROON = b64decode(config('LND_MACAROON_BASE64'))
LND_GRPC_HOST = config('LND_GRPC_HOST') LND_GRPC_HOST = config('LND_GRPC_HOST')
class LNNode(): class LNNode():

View File

@ -538,8 +538,11 @@ class Logics():
invoice_expiry=Order.t_to_expire[Order.Status.WFB], invoice_expiry=Order.t_to_expire[Order.Status.WFB],
cltv_expiry_secs=BOND_EXPIRY*3600) cltv_expiry_secs=BOND_EXPIRY*3600)
except Exception as e: except Exception as e:
if 'status = StatusCode.UNAVAILABLE' in str(e): print(str(e))
if 'failed to connect to all addresses' in str(e):
return False, {'bad_request':'The Lightning Network Daemon (LND) is down. Write in the Telegram group to make sure the staff is aware.'} return False, {'bad_request':'The Lightning Network Daemon (LND) is down. Write in the Telegram group to make sure the staff is aware.'}
if 'wallet locked' in str(e):
return False, {'bad_request':"This is weird, RoboSats' lightning wallet is locked. Check in the Telegram group, maybe the staff has died."}
order.maker_bond = LNPayment.objects.create( order.maker_bond = LNPayment.objects.create(
concept = LNPayment.Concepts.MAKEBOND, concept = LNPayment.Concepts.MAKEBOND,

View File

@ -41,11 +41,9 @@ def follow_send_payment(lnpayment):
from django.utils import timezone from django.utils import timezone
from datetime import timedelta from datetime import timedelta
from api.lightning.node import LNNode from api.lightning.node import LNNode, MACAROON
from api.models import LNPayment, Order from api.models import LNPayment, Order
MACAROON = b64decode(config('LND_MACAROON_BASE64'))
fee_limit_sat = int(max(lnpayment.num_satoshis * float(config('PROPORTIONAL_ROUTING_FEE_LIMIT')), float(config('MIN_FLAT_ROUTING_FEE_LIMIT')))) # 200 ppm or 10 sats fee_limit_sat = int(max(lnpayment.num_satoshis * float(config('PROPORTIONAL_ROUTING_FEE_LIMIT')), float(config('MIN_FLAT_ROUTING_FEE_LIMIT')))) # 200 ppm or 10 sats
request = LNNode.routerrpc.SendPaymentRequest( request = LNNode.routerrpc.SendPaymentRequest(
payment_request=lnpayment.invoice, payment_request=lnpayment.invoice,

View File

@ -6,8 +6,7 @@ services:
restart: always restart: always
volumes: volumes:
- redisdata:/data - redisdata:/data
networks: network_mode: service:tor
- redis_network
backend: backend:
build: . build: .
@ -15,19 +14,16 @@ services:
restart: always restart: always
depends_on: depends_on:
- bitcoind - bitcoind
# - lnd-dev - lnd
- redis - redis
environment: environment:
DEVELOPMENT: 1 DEVELOPMENT: 1
volumes: volumes:
- .:/usr/src/robosats - .:/usr/src/robosats
- /mnt/development/database:/usr/src/database - /mnt/development/database:/usr/src/database
networks: - /mnt/development/lnd:/lnd
- nginx_network
- redis_network
command: python3 manage.py runserver 0.0.0.0:8000 command: python3 manage.py runserver 0.0.0.0:8000
ports: network_mode: service:tor
- 8000:8000
frontend: frontend:
build: ./frontend build: ./frontend
@ -35,9 +31,6 @@ services:
restart: always restart: always
volumes: volumes:
- ./frontend:/usr/src/frontend - ./frontend:/usr/src/frontend
networks:
- nginx_network
- redis_network
clean-orders: clean-orders:
build: . build: .
@ -54,11 +47,12 @@ services:
restart: always restart: always
depends_on: depends_on:
- bitcoind - bitcoind
# - lnd-testnet - lnd
command: python3 manage.py follow_invoices command: python3 manage.py follow_invoices
volumes: volumes:
- .:/usr/src/robosats - .:/usr/src/robosats
- /mnt/development/database:/usr/src/database - /mnt/development/database:/usr/src/database
network_mode: service:tor
celery: celery:
build: . build: .
@ -66,14 +60,11 @@ services:
restart: always restart: always
command: celery -A robosats worker --beat -l info -S django command: celery -A robosats worker --beat -l info -S django
environment: environment:
REDIS_URL: redis://redis:6379 REDIS_URL: redis://localhost:6379
volumes: volumes:
- .:/usr/src/robosats - .:/usr/src/robosats
- /mnt/development/database:/usr/src/database - /mnt/development/database:/usr/src/database
depends_on: network_mode: service:tor
- redis
networks:
- redis_network
tor: tor:
build: ./docker/tor build: ./docker/tor
@ -86,8 +77,7 @@ services:
- /mnt/development/tor/data:/var/lib/tor - /mnt/development/tor/data:/var/lib/tor
- /mnt/development/tor/config:/etc/tor - /mnt/development/tor/config:/etc/tor
ports: ports:
- '10009' - 8000:8000
- '8080'
lnd: lnd:
build: ./docker/lnd build: ./docker/lnd
@ -108,6 +98,7 @@ services:
LOCAL_GROUP_ID: 1000 LOCAL_GROUP_ID: 1000
LND_RPC_PORT: 10009 LND_RPC_PORT: 10009
LND_REST_PORT: 8080 LND_REST_PORT: 8080
# AUTO_UNLOCK_PWD: ${AUTO_UNLOCK_PWD}
bitcoind: bitcoind:
build: ./docker/bitcoind build: ./docker/bitcoind
@ -125,10 +116,4 @@ services:
- /mnt/development/bitcoin:/home/bitcoin/.bitcoin - /mnt/development/bitcoin:/home/bitcoin/.bitcoin
volumes: volumes:
redisdata: redisdata:
networks:
nginx_network:
driver: bridge
redis_network:
driver: bridge

View File

@ -5,9 +5,9 @@ Spinning up docker for the first time
``` ```
docker-compose build --no-cache docker-compose build --no-cache
docker-compose up -d docker-compose up -d
sudo docker exec -it django-dev python3 manage.py makemigrations docker exec -it django-dev python3 manage.py makemigrations
sudo docker exec -it django-dev python3 manage.py migrate docker exec -it django-dev python3 manage.py migrate
sudo docker exec -it django-dev python3 manage.py createsuperuser docker exec -it django-dev python3 manage.py createsuperuser
docker-compose restart docker-compose restart
``` ```
@ -20,7 +20,22 @@ Then monitor in a terminal the Django dev docker service
And the NPM dev docker service And the NPM dev docker service
`docker attach npm-dev` `docker attach npm-dev`
Ready to roll! Ready to roll! But maybe you also are interested on these:
Unlock or 'create' the lnd node
`docker exec -it lnd-dev lncli unlock`
Create p2wkh addresses
`docker exec -it lnd-dev lncli --network=testnet newaddress p2wkh`
Wallet balance
`docker exec -it lnd-dev lncli --network=testnet walletbalance`
Connect
`docker exec -it lnd-dev lncli --network=testnet connect node_id@ip:9735`
Open channel
`docker exec -it lnd-dev lncli --network=testnet openchannel node_id --local_amt LOCAL_AMT --push_amt PUSH_AMT`
# The harder way # The harder way
## Django development environment ## Django development environment