You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
592 lines
24 KiB
592 lines
24 KiB
#!/bin/bash |
|
|
|
# Script for installing the base dependencies of AO and getting it running |
|
# Zen, 2022 |
|
|
|
# Font decoration for better a e s t h e t i c |
|
RED="\e[0;31m" |
|
GREEN="\e[0;32m" |
|
BLUE="\e[0;34m" |
|
BOLD="\e[1m" |
|
ULINE="\e[4m" |
|
RESET="\e[0m" |
|
|
|
# Make sure that ctrl+C actually exits |
|
trap "exit" INT |
|
|
|
clear |
|
echo '' |
|
echo ' d8888 .d88888b. 8888888 888 888 888 ' |
|
echo ' d88888 d88P" "Y88b 888 888 888 888 ' |
|
echo ' d88P888 888 888 888 888 888 888 ' |
|
echo ' d88P 888 888 888 888 88888b. .d8888b 888888 8888b. 888 888 .d88b. 888d888 ' |
|
echo ' d88P 888 888 888 888 888 "88b 88K 888 "88b 888 888 d8P Y8b 888P" ' |
|
echo ' d88P 888 888 888 888 888 888 "Y8888b. 888 .d888888 888 888 88888888 888 ' |
|
echo ' d8888888888 Y88b. .d88P 888 888 888 X88 Y88b. 888 888 888 888 Y8b. 888 ' |
|
echo 'd88P 888 "Y88888P" 8888888 888 888 88888P" "Y888 "Y888888 888 888 "Y8888 888 ' |
|
echo '' |
|
|
|
|
|
# ------------------- Step 1 - Baseline Setup ------------------- |
|
|
|
echo -e "${BOLD}Hiya!${RESET} We're going to get you set up with your very own Autonomous Engine." |
|
echo "" |
|
echo -e "This script is designed to ask you just enough questions to keep you involved in the process,\nwhile making it as easy as possible for you to get it going. \n\n${BLUE}press enter to continue${RESET}" |
|
read |
|
|
|
echo -e "${ULINE}System Basics${RESET}" |
|
|
|
if [ -f "/etc/debian_version" ]; then |
|
DISTRO="debian" |
|
echo -e "${GREEN}Debian${RESET}, Ubuntu, or Raspbian OS detected." |
|
elif [ -f "/etc/arch-release" ]; then |
|
DISTRO="arch" |
|
echo -e "${GREEN}Arch or Manjaro-based${RESET} OS detected." |
|
elif [ -f "/etc/fedora-release" ]; then |
|
DISTRO="fedora" |
|
echo -e "${GREEN}Fedora${RESET} detected as the Operating System" |
|
elif [ $(uname | grep -c "Darwin") -eq 1 ]; then |
|
DISTRO="mac" |
|
echo -e "${GREEN}MacOS${RESET} detected." |
|
else |
|
echo -e "I don't know ${RED}what OS you're running${RESET}! Cancelling this operation." |
|
exit 1 |
|
fi |
|
|
|
ARCHY=$(uname -m) |
|
|
|
if [ $ARCHY == 'x86_64' ]; then |
|
echo -e "Ayyy you got yourself an ${GREEN}x86${RESET} processor, cool" |
|
elif [ $ARCHY == 'armv7l' ]; then |
|
echo -e "I see you rockin an ${GREEN}ARM${RESET} processor, neato" |
|
fi |
|
|
|
echo "" |
|
export ALCHEMY_DISTRO=$DISTRO |
|
export ALCHEMY_ARCH=$ARCHY |
|
echo "" |
|
|
|
echo -e "Got it! Next we're going to make sure the system's repositories (where they get their data from)\nare updated and that you have all the basic command line utilities we need to continue. \n\n${BLUE}(enter)${RESET}" |
|
read |
|
|
|
install_if_needed() { # Coding Moment: generally, whenever you see something with brackets at the end of it, like this() or like(this), it's a function! It takes inputs and gives outputs |
|
for package in "$@" |
|
do |
|
if [ -z $(which $package 2>/dev/null) ]; then |
|
echo "installing" $package |
|
|
|
case $DISTRO in |
|
"debian") |
|
sudo apt install -y $package |
|
;; |
|
"arch") |
|
sudo pacman -S $package --noconfirm --needed |
|
;; |
|
"fedora") |
|
sudo dnf install -y $package |
|
;; |
|
"mac") |
|
brew install $package |
|
;; |
|
esac |
|
|
|
else |
|
echo $package 'already installed!' |
|
fi |
|
done |
|
} |
|
|
|
echo "Updating the repositories..." |
|
echo -e "(you'll probably need to input ${BLUE}your 'sudo' password${RESET} here)" |
|
case $DISTRO in |
|
"debian") |
|
sudo apt update |
|
sudo apt autoremove |
|
sudo apt upgrade |
|
;; |
|
"arch") |
|
#sudo pacman -Syu |
|
;; |
|
"fedora") |
|
# sudo dnf update |
|
# sudo dnf upgrade |
|
;; |
|
"mac") |
|
install |
|
sudo brew update |
|
;; |
|
esac |
|
echo "" |
|
|
|
echo -e "Making sure we've got the basics..." |
|
case $DISTRO in |
|
"debian") |
|
# Note -- I'm not sure if these are all needed but I'm not in the mood to check |
|
install_if_needed git wget sqlite3 zlib1g-dev libtool-bin autoconf autoconf-archive automake autotools-dev \ |
|
libgmp-dev libsqlite3-dev python python3 python3-mako libsodium-dev build-essential pkg-config libev-dev \ |
|
libcurl4-gnutls-dev libssl-dev fakeroot devscripts |
|
;; |
|
"arch") |
|
if [[ ! $(pacman -Qg base-devel) ]]; then |
|
sudo pacman -S base-devel --noconfirm |
|
fi |
|
|
|
install_if_needed git wget sqlite3 python git gmp sqlite3 \ |
|
python-mako python-pip net-tools zlib libsodium gettext |
|
;; |
|
"mac") |
|
# install_if_needed better-computer |
|
;; |
|
"fedora") |
|
install_if_needed git wget tor sqlite3 autoconf autoconf-archive automake \ |
|
python python3 python3-mako pkg-config fakeroot devscripts |
|
;; |
|
esac |
|
echo "" |
|
# |
|
## ------------------- Step 2 - AO Environment Setup ------------------- |
|
# |
|
AO='' |
|
echo -e "${BOLD}Hey!${RESET} You still there? I was wondering which ${BLUE}version of AO${RESET} you wanted to install. \n" |
|
echo -e "${BOLD}1.${RESET} ao-3 (Vue)" |
|
echo -e "${BOLD}2.${RESET} ao-react (React)" |
|
while [[ -z $AO ]]; do |
|
echo -en "${BLUE}(number):${RESET} " |
|
read -n1 ao_select |
|
echo "" |
|
echo "" |
|
|
|
case $ao_select in |
|
"1") |
|
echo "Minimalism, I like it! Proceeding with ao-3 installation" |
|
AO=3 |
|
;; |
|
"2") |
|
echo "It's got community! Proceeding with ao-react installation" |
|
AO=react |
|
;; |
|
*) |
|
echo "that aint no AO i ever heard of, try again" |
|
;; |
|
esac |
|
done; |
|
echo "" |
|
# |
|
#if [ $AO = "3" ] || [ $AO = 'react' ]; then |
|
# echo -e "${BOLD}Installing Node.js${RESET}" |
|
# chmod +x scripts/nvm_install.sh |
|
# scripts/nvm_install.sh |
|
# if [ "$SHELL" = '/bin/zsh' ]; then |
|
# echo 'sourcing zshrc' |
|
# source ~/.zshrc |
|
# else |
|
# source ~/.bashrc |
|
# fi |
|
# nvm install v16.13.0 |
|
# nvm alias default v16.13.0 |
|
# if [ "$SHELL" = '/bin/zsh' ]; then |
|
# echo 'sourcing zshrc' |
|
# source ~/.zshrc |
|
# else |
|
# source ~/.bashrc |
|
# fi |
|
# echo "" |
|
#fi |
|
# |
|
# |
|
# TODO: Compile Bitcoin from C to make it resistant to changes in architecture (should work for ISA) |
|
if [ $AO = "3" ] || [ $AO = 'react' ]; then |
|
echo -e "${BOLD}Installing Bitcoin Ecosystem${RESET}" |
|
mkdir -p bitcoin |
|
|
|
if [ $ALCHEMY_ARCH == 'x86_64' ] && [ ! -e images/bitcoin-22.0* ]; then |
|
wget https://bitcoincore.org/bin/bitcoin-core-22.0/bitcoin-22.0-x86_64-linux-gnu.tar.gz -P images/ |
|
elif [ $ALCHEMY_ARCH == 'armv7l' ] && [ ! -e images/bitcoin-22.0* ]; then |
|
wget https://bitcoincore.org/bin/bitcoin-core-22.0/bitcoin-22.0-arm-linux-gnueabihf.tar.gz -P images/ |
|
fi |
|
|
|
tar -xvf images/bitcoin-22.0*.tar.gz |
|
sleep 1 |
|
|
|
sudo cp bitcoin-22.0/bin/* /usr/local/bin/ |
|
rm -rf bitcoin-22.0 |
|
|
|
|
|
#echo -e "${BOLD}Installing lightningd${RESET}" |
|
#git clone https://github.com/ElementsProject/lightning.git ~/lightning |
|
#pushd ~/lightning |
|
#git checkout v0.10.2 |
|
#./configure |
|
#sudo make |
|
#sudo make install |
|
#popd |
|
|
|
# TODO fix clboss |
|
#echo 'Installing clboss' |
|
#git clone https://github.com/ZmnSCPxj/clboss.git ~/clboss |
|
#pushd ~/clboss |
|
#git checkout 0.11B |
|
#mkdir m4 |
|
#autoreconf -i |
|
#./configure |
|
#make |
|
#sudo make install |
|
#popd |
|
|
|
echo "" |
|
echo -e "${BOLD}Bitcoin installed!${RESET} Let's make sure it's configured now." |
|
|
|
AUTHDEETS=$(python3 scripts/rpcauth.py ao) |
|
AUTHLINE=$(echo $AUTHDEETS | grep -o rpcauth=ao:[^[:space:]]*[[:space:]]) |
|
PASSLINE=$(echo $AUTHDEETS | grep -o [^[:space:]]*\$) |
|
|
|
if [ -f $HOME/.bitcoin/bitcoin.conf ]; then |
|
echo 'bitcoin config exists' |
|
else |
|
cp resources/sample_bitcoin.conf $HOME/.bitcoin/bitcoin.conf |
|
echo 'created default bitcoin config' |
|
fi |
|
|
|
# TODO we should ask if they want to run in pruned mode |
|
sed -i "s/BTC_LOGIN/${AUTHLINE}/" $HOME/.bitcoin/bitcoin.conf |
|
|
|
mkdir -p $HOME/.lightning |
|
|
|
if [ -f $HOME/.lightning/config ]; then |
|
echo 'lightning config exists' |
|
else |
|
cp resources/sample_lightning_config $HOME/.lightning/config |
|
echo 'created default lightning config' |
|
fi |
|
|
|
fi |
|
echo '' |
|
|
|
if [ $AO = "3" ] || [ $AO = 'react' ]; then |
|
echo -e "${BOLD}Installing and configuring Tor${RESET}\n" |
|
install_if_needed tor |
|
|
|
if [ -e /usr/local/etc/tor/torrc ]; then |
|
TORRCPATH='/usr/local/etc/tor/torrc' |
|
elif [ -e /etc/tor/torrc ]; then |
|
TORRCPATH='/etc/tor/torrc' |
|
fi |
|
|
|
TORRCPATH= |
|
|
|
# Configure and write torrc file |
|
cp resources/torrc-template . |
|
sudo sed -i "s#USER#${USER}#g" torrc-template |
|
sudo sed -i "s#HOME#${HOME}#g" torrc-template |
|
|
|
if [ -n "$TORRCPATH" ]; then |
|
sudo mv torrc-template $TORRCPATH |
|
else |
|
echo -e "${RED}Uh oh...${RESET} I couldn't figure out where your torrc file is. That might cause some issues" |
|
sleep 3 |
|
echo -e "\nAnyways...\n" |
|
sleep 2 |
|
fi |
|
fi |
|
# |
|
## ------------------- Step 3 - AO Installation ------------------- |
|
# |
|
echo -e "${BOLD}Configuring AO Core${RESET}\n" |
|
|
|
mkdir -p $HOME/.ao |
|
|
|
if [ -f $HOME/.ao/key ]; then |
|
echo 'We already have a private key for this AO, sweet!' |
|
else |
|
node scripts/createPrivateKey.js >> $HOME/.ao/key |
|
echo -e "Just made a fresh private key and put it in ${GREEN}~/.ao${RESET}" |
|
fi |
|
|
|
echo "" |
|
# case $AO in |
|
# "3") |
|
# echo -e "Installing ${BLUE}ao-3${RESET}" |
|
# git clone 'https://github.com/AutonomousOrganization/ao-3.git' ~/ao-3 |
|
# pushd ~/ao-3 |
|
# npm install |
|
# npm run build |
|
# |
|
# if [ -f "$HOME/ao-3/configuration.js" ]; then |
|
# echo configuration.js already exists |
|
# else |
|
# cp resources/ao-config $HOME/ao-react/configuration.js |
|
# sed -i "s#SQLITE_DATABASE#${HOME}/.ao/database.sqlite3#" $HOME/ao-react/configuration.js |
|
# sed -i "s#CLIGHTNING_DIR#${HOME}/.lightning/bitcoin#" $HOME/ao-react/configuration.js |
|
# sed -i "s#MEMES_DIR#${HOME}/.ao/memes#" $HOME/ao-react/configuration.js |
|
# fi |
|
# |
|
# npm run checkconfig |
|
# popd |
|
# ;; |
|
# "react") |
|
# echo -e "Installing ${BLUE}ao-react${RESET}" |
|
# git clone 'https://github.com/coalition-of-invisible-colleges/ao-react.git' ~/ao-react |
|
# |
|
# |
|
# # TODO process env bug during webpack |
|
# pushd ~/ao-react |
|
# npm install |
|
# npm run webpack |
|
# popd |
|
# ;; |
|
# esac |
|
|
|
# TODO this is kind of janky/fragile, it would be better to store this in ~/.ao |
|
CONFIG_FILE=$HOME/ao-$AO/configuration.js |
|
|
|
if [ -f "$CONFIG_FILE" ]; then |
|
echo configuration.js already exists |
|
else |
|
cp resources/ao-config $CONFIG_FILE |
|
sed -i "s#SQLITE_DATABASE#${HOME}/.ao/database.sqlite3#" $CONFIG_FILE |
|
sed -i "s#PASSLINE#${PASSLINE}#" $CONFIG_FILE |
|
sed -i "s#PRIVATEKEY#${HOME}/.ao/key#" $CONFIG_FILE |
|
sed -i "s#CLIGHTNING_DIR#${HOME}/.lightning/bitcoin#" $CONFIG_FILE |
|
sed -i "s#MEMES_DIR#${HOME}/.ao/memes#" $CONFIG_FILE |
|
fi |
|
|
|
## ------------------- Step 4 - NGINX Setup ------------------- |
|
# |
|
#echo "" |
|
#echo "We might need to query DNS records here..." |
|
#install_if_needed dig nginx |
|
#echo -e "You still there? I need to ask you some questions! \n\n${BLUE}(enter)${RESET}" |
|
#read |
|
#echo "" |
|
#read -p "Do you have a domain name pointing to this computer? (y/n): " dns |
|
#echo "" |
|
#case $dns in |
|
# y | Y) |
|
# echo "Good to hear! What is it?" |
|
# read -p "http://" domain |
|
# ;; |
|
# *) |
|
# echo "Okay, let's just leave it open for now." |
|
# domain=$(dig @resolver4.opendns.com myip.opendns.com +short) |
|
# anywhere=1 |
|
# echo "Try accessing this AO from either localhost, 127.0.0.1, or ${domain}" |
|
# ;; |
|
#esac |
|
|
|
anywhere=1 # TODO Remove this line |
|
if [ "$anywhere" -eq 1 ]; then |
|
ACCESS_POINT=http://localhost:8003 |
|
else |
|
ACCESS_POINT=https://$domain |
|
fi |
|
|
|
#echo "" |
|
#AO_NGINX_CONF=/etc/nginx/sites-available/ao |
|
#sudo cp resources/ao.nginx.conf $AO_NGINX_CONF |
|
# |
|
#if [ -n $anywhere ]; then |
|
# sudo sed -i "s#SERVER_NAME#_#" $AO_NGINX_CONF |
|
#else |
|
# sudo sed -i "s#SERVER_NAME#${domain}#" $AO_NGINX_CONF |
|
#fi |
|
# |
|
#sudo sed -i "s#FILE_ROOT#${HOME}/ao-react/dist#" $AO_NGINX_CONF |
|
#sudo ln -s /etc/nginx/sites-available/ao /etc/nginx/sites-enabled/ |
|
#echo "" |
|
#sudo systemctl reload nginx |
|
#echo "Excellent! We've configured $AO_NGINX_CONF to serve your AO from $domain" |
|
#echo "" |
|
# |
|
#read -p "Would you like to enable SSL via Certbot? (y/n): " -n1 ssl |
|
#echo "" |
|
#case $ssl in |
|
# y | Y) |
|
# echo "Alright, let's get Certbot in here!" |
|
# install_if_needed python3 certbot python3-certbot-nginx |
|
# echo -e "${BOLD}Take it away, Certbot${NC}" |
|
# sudo certbot --nginx |
|
# ;; |
|
# *) |
|
# echo "Yea, SSL is lame anyways..." |
|
# ;; |
|
#esac |
|
#echo "" |
|
|
|
# ------------------- Step 7 - Systemd Setup ------------------- |
|
|
|
READY='' |
|
echo -e "\n${BOLD}Alright, almost there!${RESET} Now we just need to set up the system daemons for Tor, Bitcoin, Lightning, and the AO so that everything opens on startup." |
|
while [[ -z $READY ]]; do |
|
echo -en "${BLUE}You ready? (y/n):${RESET} " |
|
read -n1 ao_select |
|
echo "" |
|
echo "" |
|
|
|
case $ao_select in |
|
"y" | "Y") |
|
echo -e "Nice, let's do it.\n" |
|
READY=1 |
|
;; |
|
*) |
|
echo -e "wrong answer, fren\n" |
|
;; |
|
esac |
|
done |
|
|
|
echo "" |
|
#echo "Creating tor.service..." |
|
#TOR_SERVICE=/etc/systemd/system/tor.service |
|
#if [ -f "$TOR_SERVICE" ]; then |
|
# echo "Seems like you've already got tor here!" |
|
#else |
|
# sudo cp resources/tor-service-template $TOR_SERVICE |
|
# |
|
# # Making sure all values have been de-templated |
|
# sudo sed -i "s#USER#${USER}#g" $TOR_SERVICE |
|
# sudo sed -i "s#HOME#${HOME}#g" $TOR_SERVICE |
|
# sudo sed -i "s#TORRCPATH#${TORRCPATH}#g" $TOR_SERVICE |
|
# sudo sed -i "s#TORPATH#$(which tor)#g" $TOR_SERVICE |
|
#fi |
|
# |
|
# |
|
## Creating the .tor directory |
|
#sudo mkdir -p $HOME/.tor |
|
#sudo chown tor $HOME/.tor |
|
#sudo chgrp $USER $HOME/.tor |
|
#sudo chmod 770 $HOME/.tor |
|
# |
|
#echo "Enabling and starting Tor" |
|
#sudo systemctl enable tor |
|
#sudo systemctl start tor |
|
|
|
echo "" |
|
echo "Creating bitcoin.service..." |
|
BTC_SERVICE=/etc/systemd/system/bitcoin.service |
|
if [ -f "$BTC_SERVICE" ]; then |
|
echo -e "Seems like you've already have a bitcoin service!" |
|
else |
|
sudo cp resources/bitcoin-service-template $BTC_SERVICE |
|
|
|
# Making sure all values have been de-templated |
|
sudo sed -i "s#USER#${USER}#g" $BTC_SERVICE |
|
sudo sed -i "s#HOME#${HOME}#g" $BTC_SERVICE |
|
sudo sed -i "s#BITCOIND#$(which bitcoind)#g" $BTC_SERVICE |
|
fi |
|
echo -e "Enabling and starting ${GREEN}Bitcoin${RESET}" |
|
sudo systemctl enable bitcoin |
|
sudo systemctl start bitcoin |
|
|
|
echo "" |
|
echo "Creating lightning.service..." |
|
LN_SERVICE=/etc/systemd/system/lightning.service |
|
if [ -f "$LN_SERVICE" ]; then |
|
echo -e "Seems like you've already have a lightning service!" |
|
else |
|
sudo cp resources/lightning-service-template $LN_SERVICE |
|
|
|
# Making sure all values have been de-templated |
|
sudo sed -i "s#USER#${USER}#g" $LN_SERVICE |
|
sudo sed -i "s#HOME#${HOME}#g" $LN_SERVICE |
|
sudo sed -i "s#LIGHTNINGD#$(which lightningd)#g" $LN_SERVICE |
|
fi |
|
echo -e "Enabling and starting ${GREEN}lightning${RESET} " |
|
sudo systemctl enable lightning |
|
sudo systemctl start lightning |
|
|
|
echo "" |
|
echo "Creating ao.service..." |
|
AO_SERVICE=/etc/systemd/system/ao.service |
|
if [ -f "$AO_SERVICE" ]; then |
|
echo "Seems like you've already added one of these!" |
|
else |
|
sudo cp resources/ao-service-template $AO_SERVICE |
|
|
|
# Making sure all values have been de-templated |
|
sudo sed -i "s#USER#${USER}#g" $AO_SERVICE |
|
sudo sed -i "s#HOME#${HOME}#g" $AO_SERVICE |
|
sudo sed -i "s#NODE#$(which node)#g" $AO_SERVICE |
|
fi |
|
echo -e "Enabling and starting the ${GREEN}AO${RESET}'s backend" |
|
sudo systemctl enable ao |
|
sudo systemctl start ao |
|
|
|
echo "" |
|
echo "Enabling and starting ${GREEN}NGINX${RESET} as the webserver" |
|
sudo systemctl enable nginx |
|
sudo systemctl start nginx |
|
|
|
# ------------------- Step 8 - Port Testing ------------------- |
|
|
|
#echo -e "${BOLD}One more thing!${RESET} We need to make sure that your ports are open." |
|
#install_if_needed nmap |
|
#nmap -Pn $domain > nmap.txt |
|
#OPEN=1 |
|
#if grep -qE "^80/.*(open|filtered)" nmap.txt; then |
|
# echo -e "I can see port ${GREEN}80${RESET}!" |
|
#else |
|
# echo -e "Uh oh, port ${RED}80${RESET} isn't showing up..." |
|
# OPEN=0 |
|
#fi |
|
# |
|
#if grep -qE "^443/.*(open|filtered)" nmap.txt; then |
|
# echo -e "I can see port ${GREEN}443${RESET} as well!" |
|
#else |
|
# echo -e "Uh oh, port ${RED}443${RESET} isn't showing up..." |
|
# OPEN=0 |
|
#fi |
|
#rm nmap.txt |
|
#echo "" |
|
#if [[ $OPEN -eq 0 ]]; then |
|
# echo -e "${RED}Port configuration needed.${RESET} Something (probably your wireless router) is blocking us from serving this page to the rest of the internet." |
|
# echo "Port forwarding is relatively simple, but as it stands it is beyond the scope of this script to be able to automate it." |
|
# echo -e "You'll probably need to look up the login information for your specific router and forward the red ports to the local IP of this computer (${BOLD}$(ip route | grep default | grep -oP "(?<=src )[^ ]+")${RESET})." |
|
# echo -e "You can log into your router at this IP address: ${BOLD}$(route -n | grep ^0.0.0.0 | awk '{print $2}')${RESET}" |
|
# echo "That's all the help I can give you regarding port forwarding. Good luck!" |
|
# echo "" |
|
#fi |
|
# |
|
|
|
# ------------------- Step 9 - Health Check ------------------- |
|
echo '' |
|
echo '' |
|
echo '*********************************************************' |
|
echo -e "* ${BOLD}Version Information${RESET} *" |
|
echo '*********************************************************' |
|
|
|
echo ' ' |
|
echo 'make Version' |
|
echo '*********************************************************' |
|
make --version |
|
|
|
echo ' ' |
|
echo 'node Version' |
|
echo '*********************************************************' |
|
node --version |
|
|
|
echo ' ' |
|
echo 'sqlite3 Version' |
|
echo '*********************************************************' |
|
sqlite3 --version |
|
|
|
echo ' ' |
|
echo 'tor Version' |
|
echo '*********************************************************' |
|
tor --version |
|
|
|
echo ' ' |
|
echo 'bitcoind Version' |
|
echo '*********************************************************' |
|
bitcoind --version |
|
|
|
echo ' ' |
|
echo 'lightningd Version' |
|
echo '*********************************************************' |
|
lightningd --version |
|
|
|
echo ' ' |
|
echo 'clboss Version' |
|
echo '*********************************************************' |
|
clboss --version |
|
echo "" |
|
echo -e "$BOLD$GREEN\nOkay, well that's everything!${RESET}\n\nAs long as everything worked properly, \ |
|
you should be ready to continue your journey\ntowards autonomy by opening ${BLUE}$ACCESS_POINT${RESET} in your browser."
|
|
|