mynode/rootfs/standard/usr/bin/mynode_gen_dojo_config.sh
LightningSats 93281a7c23
Add Samourai Dojo to MyNode (#143)
+added files
*dojo.service
*mynode_gen_dojo_config.sh
*mynode_post_dojo.sh
*dojo.py
*dojo.html

%modified files
*mynode_firewall.sh
*mynode_post_upgrade.sh
*mynode_stop_critical_services.sh
*bitcoin.conf
*enable_disable_functions.py
*mynode.py
*apps.html

Special thanks to Taylor Helsper for creating MyNode and Merging Dojo

Special thanks to BTCxZelko for getting me started with Dojo and 
assisting with the code. 

Special thanks to Amiga500 for helping with testing.

Co-authored-by: Taylor Helsper <tehelsper@gmail.com>
2020-02-27 19:25:33 -06:00

130 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
set -x
set -e
source /usr/share/mynode/mynode_config.sh
# replace Dojo bitcoind.conf.tpl with custom conf for MyNode
rm -rf /opt/mynode/dojo/docker/my-dojo/conf/docker-bitcoind.conf.tpl
touch /opt/mynode/dojo/docker/my-dojo/conf/docker-bitcoind.conf.tpl
RPC_PASS=$(cat /mnt/hdd/mynode/settings/.btcrpc_environment | cut -c 18- )
echo "
#########################################
# CONFIGURATION OF BITCOIND CONTAINER #
#########################################
# User account used for rpc access to bitcoind Type: alphanumeric
BITCOIND_RPC_USER=mynode
# Password of user account used for rpc access to bitcoind Type:
# alphanumeric
BITCOIND_RPC_PASSWORD=$RPC_PASS
# Max number of connections to network peers Type: integer
BITCOIND_MAX_CONNECTIONS=16
# Mempool maximum size in MB Type: integer
BITCOIND_MAX_MEMPOOL=600
# Db cache size in MB Type: integer
BITCOIND_DB_CACHE=1024
# Number of threads to service RPC calls Type: integer
BITCOIND_RPC_THREADS=6
# Mempool expiry in hours Defines how long transactions stay in your local
# mempool before expiring Type: integer
BITCOIND_MEMPOOL_EXPIRY=72
# Min relay tx fee in BTC Type: numeric
BITCOIND_MIN_RELAY_TX_FEE=0.00001
#
# EXPERT SETTINGS
#
# EPHEMERAL ONION ADDRESS FOR BITCOIND THIS PARAMETER HAS NO EFFECT IF
# BITCOIND_INSTALL IS SET TO OFF
#
# Generate a new onion address for bitcoind when Dojo is launched
# Activation of this option is recommended for improved privacy. Values: on
# | off
BITCOIND_EPHEMERAL_HS=on
#
# EXPOSE BITCOIND RPC API AND ZMQ NOTIFICATIONS TO EXTERNAL APPS THESE
# PARAMETERS HAVE NO EFFECT IF BITCOIND_INSTALL IS SET TO OFF
#
# 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
# IP address used to expose the RPC API to external apps This parameter is
# inactive if BITCOIND_RPC_EXTERNAL isn't set to 'on' Warning: Do not
# expose your RPC API to internet! Recommended value:
# linux: 127.0.0.1 macos or windows: IP address of the VM running the
# docker host
# Type: string
BITCOIND_RPC_EXTERNAL_IP=127.0.0.1
#
# INSTALL AND RUN BITCOIND INSIDE DOCKER
#
# Install and run bitcoind inside Docker Set this option to 'off' for using
# a bitcoind hosted outside of Docker (not recommended) Value: on | off
BITCOIND_INSTALL=off
# IP address of bitcoind used by Dojo Set value to 172.28.1.5 if
# BITCOIND_INSTALL is set to 'on' Type: string
BITCOIND_IP=172.28.0.1
# Port of the RPC API Set value to 28256 if BITCOIND_INSTALL is set to 'on'
# Type: integer
BITCOIND_RPC_PORT=8332
# Port exposing ZMQ notifications for raw transactions Set value to 9501 if
# BITCOIND_INSTALL is set to 'on' Type: integer
BITCOIND_ZMQ_RAWTXS=28333
# Port exposing ZMQ notifications for block hashes Set value to 9502 if
# BITCOIND_INSTALL is set to 'on' Type: integer
BITCOIND_ZMQ_BLK_HASH=28334
" | sudo tee -a /opt/mynode/dojo/docker/my-dojo/conf/docker-bitcoind.conf.tpl
# Turn off explorer for MyNode
sed -i 's|EXPLORER_INSTALL=on|EXPLORER_INSTALL=off|' /opt/mynode/dojo/docker/my-dojo/conf/docker-explorer.conf.tpl
# check if configuration files have been previously created and skip if yes
if [ -f /opt/mynode/dojo/docker/my-dojo/conf/docker-node.conf ]; then
echo "File present - skip docker-node.conf"
else
# Modify node.conf to enter random generated passwords
NODE_API_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)
sed -i 's|NODE_API_KEY=.*|NODE_API_KEY='$NODE_API_KEY'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-node.conf.tpl
NODE_ADMIN_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 48 | head -n 1)
sed -i 's|NODE_ADMIN_KEY=.*|NODE_ADMIN_KEY='$NODE_ADMIN_KEY'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-node.conf.tpl
NODE_JWT_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)
sed -i 's|NODE_JWT_SECRET=.*|NODE_JWT_SECRET='$NODE_JWT_SECRET'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-node.conf.tpl
fi
# check if configuration files have been previously created and skip if yes
if [ -f /opt/mynode/dojo/docker/my-dojo/conf/docker-mysql.conf ]; then
echo "File present - skip docker-mysql.conf"
else
# Modify mysql.conf to enter random generated passwords
MYSQL_ROOT_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)
sed -i 's|MYSQL_ROOT_PASSWORD=.*|MYSQL_ROOT_PASSWORD='$MYSQL_ROOT_PASSWORD'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-mysql.conf.tpl
MYSQL_USER=mynode
sed -i 's|MYSQL_USER=.*|MYSQL_USER='$MYSQL_USER'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-mysql.conf.tpl
MYSQL_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1)
sed -i 's|MYSQL_PASSWORD=.*|MYSQL_PASSWORD='$MYSQL_PASSWORD'|' /opt/mynode/dojo/docker/my-dojo/conf/docker-mysql.conf.tpl
fi
# Modify for Raspbian devices
if [ $IS_RASPI = 1 ]; then
# Modify mysql Dockerfile for Raspbian devices
sed -i 's|FROM.*|FROM hypriot/rpi-mysql:latest|' /opt/mynode/dojo/docker/my-dojo/mysql/Dockerfile
# Modify Tor Dockerfile for ARMv6/7 devices
sed -i 's|ENV GOLANG_ARCHIVE.*|ENV GOLANG_ARCHIVE go1.13.6.linux-armv6l.tar.gz|' /opt/mynode/dojo/docker/my-dojo/tor/Dockerfile
sed -i 's|ENV GOLANG_SHA256.*|ENV GOLANG_SHA256 37a1a83e363dcf146a67fa839d170fd1afb13009585fdd493d0a3370fbe6f785|' /opt/mynode/dojo/docker/my-dojo/tor/Dockerfile
fi
# Modify for Rock64 devices
if [ $IS_ROCK64 = 1 ] || [ $IS_ROCKPRO64 = 1 ]; then
# Modify mysql Dockerfile for Rock64 devices
sed -i 's|FROM.*|FROM mariadb:latest|' /opt/mynode/dojo/docker/my-dojo/mysql/Dockerfile
# Modify Tor Dockerfile for ARMv8 devices
sed -i 's|ENV GOLANG_ARCHIVE.*|ENV GOLANG_ARCHIVE go1.13.6.linux-arm64.tar.gz|' /opt/mynode/dojo/docker/my-dojo/tor/Dockerfile
sed -i 's|ENV GOLANG_SHA256.*|ENV GOLANG_SHA256 0a18125c4ed80f9c3045cf92384670907c4796b43ed63c4307210fe93e5bbca5|' /opt/mynode/dojo/docker/my-dojo/tor/Dockerfile
fi