Skip to content

Instantly share code, notes, and snippets.

@05nelsonm
Last active August 30, 2019 03:51
Show Gist options
  • Save 05nelsonm/ef55dcc1fb3aa588c8135cd107ee5d8c to your computer and use it in GitHub Desktop.
Save 05nelsonm/ef55dcc1fb3aa588c8135cd107ee5d8c to your computer and use it in GitHub Desktop.
## Getting LND working with Dojo
## Written for use with Ubuntu Desktop 18.04 LTS & Dojo v1.0.0 ##
## Start Dojo
$ cd /path/to/docker/my-dojo/ && sudo ./dojo.sh start
## Login to the bitcoind docker container as root
$ sudo docker exec -u root -it bitcoind /bin/bash
## Update and install a text editor
$ apt-get update && apt-get install nano
## Modify bitcoin.conf
$ nano /home/bitcoin/.bitcoin/bitcoin.conf
## Add to bitcoin.conf
zmqpubrawblock=tcp://0.0.0.0:28332
rpcthreads=20
## Save and exit
ctrl+x --> y --> return
## Log out of the container
$ exit
## Stop Dojo
$ cd /path/to/docker/my-dojo/ && sudo ./dojo.sh stop
## Modify the docker-compose.yaml file to open docker ports for interaction with bitcoind
$ nano docker-compose.yaml
## Under the section for `bitcoind` add:
ports:
- "127.0.0.1:28256:28256"
- "127.0.0.1:28332:28332"
- "127.0.0.1:28333:9501"
## Your bitcoind section should now look something like the following ####
bitcoind:
image: "samouraiwallet/dojo-bitcoind:1.0.0"
container_name: bitcoind
build:
context: ./bitcoin
env_file:
- ./.env
- ./conf/docker-bitcoind.conf
restart: on-failure
command: "/wait-for-it.sh tor:9050 --timeout=360 --strict -- /restart.sh"
expose:
- "28256"
- "9501"
- "9502"
ports:
- "127.0.0.1:28256:28256"
- "127.0.0.1:28332:28332"
- "127.0.0.1:28333:9501"
volumes:
- data-bitcoind:/home/bitcoin/.bitcoin
depends_on:
- db
- tor
networks:
dojonet:
ipv4_address: 172.28.1.5
## Save and exit
ctrl+x --> y --> return
########## Install Tor ####################################################################################################
## The Dojo's tor container has the control port bound to it's container's localhost, and at the moment editing the
## /etc/tor/torrc file yeilds poor results as it reverts back after a Dojo stop and start cycle. My workaround is to just
## install tor on the machine because... why not?
$ sudo -s
## *** Follow the guide at https://2019.www.torproject.org/docs/debian.html.en ***
## Be sure to select the correct distribution of your Linux package
## Log out of root user
$ exit
## Add user to debian-tor group
$ sudo adduser $USER debian-tor
## Verify that your username has been added to the debian-tor group (should be the last line of what prints out)
$ cat /etc/group
## Edit /etc/tor/torrc
$ sudo nano /etc/tor/torrc
## Add to torrc
SocksPort 9050
Log notice stdout
ControlPort 9051
CookieAuthentication 1
## Save and exit
ctrl+x --> y --> return
## Reboot the machine
$ sudo shutdown -r now
########## If you already have LND installed ##############################################################################
## Skip to the bottom and update your ~/.lnd/lnd.conf file to reflect the appropriate changes.
## Note, I installed everything from scratch on this VM and just moved my ~/.lnd/ directory
## over after initially running LND the first time from command line. If you've already got LND
## running, I'm not entirely positive but just updating your lnd.conf file should do the trick.
########## If you are installing LND on the machine for the first time ###################################################
## Head over to --> https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md
## and follow the instructions **up to** and including, executing `make check` (be sure to run
## `$ make check`, it is important...)
## Start Dojo
$ cd /path/to/docker/my-dojo/ && sudo ./dojo.sh start
## Get your external facing IP address by visiting --> https://www.iplocation.net/
## Start lnd ***Be sure in the below code to input your Dojo's RPC username and pass, as well as your external IP address***
$ lnd --bitcoin.active --bitcoin.mainnet --debuglevel=debug --bitcoin.node=bitcoind --bitcoind.rpchost=127.0.0.1:28256 --bitcoind.rpcuser=your_dojo_rpc_username --bitcoind.rpcpass=your_dojo_rpc_password --bitcoind.zmqpubrawblock=127.0.0.1:28332 --bitcoind.zmqpubrawtx=127.0.0.1:28333 --externalip=xxx.xxx.x.xxx
## Open another terminal and create a wallet (or unlock one if you transferred over your ~/.lnd/ directory)
## Let it run and process block data
## After processing the block data, in another terminal execute and making initial connections, stop lnd
$ lncli stop
## Create a lnd.conf file to save the flags we set when we first started lnd (This is where we'll add Tor only services)
$ nano ~/.lnd/lnd.conf
## Copy and paste the below text (between the ----------------'s), and then
## update ***alias, bitcoind.rpcuser, bitcoind.rpcpass*** to reflect
## those of your own.
Begin lnd.conf file
------------------------------------------------------------------------------------------------------
alias=***your_choice***
debuglevel=debug
## Bitcoin Settings
bitcoin.active=1
bitcoin.mainnet=1
bitcoin.node=bitcoind
## Bitcoind Settings
bitcoind.rpchost=127.0.0.1:28256
bitcoind.rpcuser=***your_dojo_rpc_username***
bitcoind.rpcpass=***your_dojo_rpc_password***
bitcoind.zmqpubrawblock=127.0.0.1:28332
bitcoind.zmqpubrawtx=127.0.0.1:28333
## Tor Settings
tor.active=1
tor.socks=127.0.0.1:9050
tor.control=127.0.0.1:9051
tor.streamisolation=1
tor.v3=1
## Application Options
listen=localhost
#rpclisten=0.0.0.0:10009 # <-- uncoment if you plan to use Zap Android/iOS via VPN (it's awesome... you should)
----------------------------------------------------------------------------------------------------------------------------
End lnd.conf file
## Start LND to make sure everything works
$ lnd
## Check info (you should have a publickey@some.onion:port, no other address)
$ lncli getinfo
## Now go install Zap-Desktop because it rocks --> https://github.com/LN-Zap/zap-desktop
## Done
@BTCxZelko
Copy link

With the 1.2 release of dojo do we still need to update the Bitcoin.conf file? Or just edit the bitcoin docker file?

@05nelsonm
Copy link
Author

With the 1.2 release of dojo do we still need to update the Bitcoin.conf file? Or just edit the bitcoin docker file?

As of v1.1 you can edit the one in the configuration files and restarting Dojo will import it.

@BTCxZelko
Copy link

BTCxZelko commented Aug 30, 2019

So referencing the conf/bitcoin.conf file
Expose the RPC API to external apps
Warning: Do not expose your RPC API to internet!
See BITCOIND_RPC_EXTERNAL_IP
Value: on | off
BITCOIND_RPC_EXTERNAL=off<--- ON

Is there anything else you need to change? And should be as easy as ./dojo.sh stop --- make changes ---- ./dojo.sh start yeah?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment