@ -9,39 +9,39 @@ source ingredients/iron
source ingredients/gold
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 ''
say ''
say ' d8888 .d88888b. 8888888 888 888 888 '
say ' d88888 d88P" "Y88b 888 888 888 888 '
say ' d88P888 888 888 888 888 888 888 '
say ' d88P 888 888 888 888 88888b. .d8888b 888888 8888b. 888 888 .d88b. 888d888 '
say ' d88P 888 888 888 888 888 "88b 88K 888 "88b 888 888 d8P Y8b 888P" '
say ' d88P 888 888 888 888 888 888 "Y8888b. 888 .d888888 888 888 88888888 888 '
say ' d8888888888 Y88b. .d88P 888 888 888 X88 Y88b. 888 888 888 888 Y8b. 888 '
say 'd88P 888 "Y88888P" 8888888 888 888 88888P" "Y888 "Y888888 888 888 "Y8888 888 '
say ''
# ------------------- 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,"
echo -e "while making it as easy as possible for you to get it going."
echo ""
echo -e " ${ BLUE } press enter to continue ${ RESET } "
say " ${ BOLD } Hiya! ${ RESET } We're going to get you set up with your very own Autonomous Engine. "
say ""
say "This script is designed to ask you just enough questions to keep you involved in the process,"
say "while making it as easy as possible for you to get it going."
say ""
say " ${ BLUE } press enter to continue ${ RESET } "
read
if [ " $EUID " -eq 0 ] ; then
echo -e " ${ RED } Woah there! ${ RESET } Seems you're running this script as a superuser. "
echo ""
echo "That might cause some issues with permissions and whatnot. Run this script as your default user (without sudo) and I'll ask you when I need superuser permissions"
echo ""
say " ${ RED } Woah there! ${ RESET } Seems you're running this script as a superuser. "
say ""
say "That might cause some issues with permissions and whatnot. Run this script as your default user (without sudo) and I'll ask you when I need superuser permissions"
say ""
exit 1
fi
# TODO: dependencies should not be frontloaded, they should be installed as needed
echo -e "Making sure we've got the basics..."
echo -e " (you'll probably need to input ${ BLUE } your 'sudo' password ${ RESET } here) "
say "Making sure we've got the basics..."
say " (you'll probably need to input ${ BLUE } your 'sudo' password ${ RESET } here) "
case $DISTRO in
"debian" )
# Note -- I'm not sure if these are all needed but I'm not in the mood to check
@ -65,109 +65,107 @@ case $DISTRO in
python python3 python3-mako pkg-config fakeroot devscripts
; ;
esac
echo ""
say ""
# ------------------- Step 2 - AO Environment Setup -------------------
if [ ! -z $AO ] ; then
echo " You're currently using ao- $AO "
echo -en " Would you like to re-install? ${ BLUE } (y/n): ${ RESET } "
read reinstall_ao
echo ""
say " You're currently using ao- $AO "
ask_for reinstall_ao " Would you like to re-install? ${ BLUE } (y/n): ${ RESET } "
say ""
case $reinstall_ao in
"Y" | "y" )
forget AO
; ;
*)
echo "Okay, we'll keep using this version of AO"
say "Okay, we'll keep using this version of AO"
; ;
esac
fi
if [ -z $AO ] ; then
AO = ''
echo -e " ${ BOLD } Hey! ${ RESET } 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) "
say " ${ BOLD } Hey! ${ RESET } I was wondering which ${ BLUE } version of AO ${ RESET } you wanted to install. \n "
say " ${ BOLD } 1. ${ RESET } ao-3 (Vue) "
say " ${ BOLD } 2. ${ RESET } ao-react (React) "
fi
while [ [ -z $AO ] ] ; do
echo -en " ${ BLUE } (number): ${ RESET } "
read -n1 ao_select
echo ""
echo ""
ask_for ao-select " ${ BLUE } (number): ${ RESET } "
say ""
say ""
case $ao_select in
"1" )
echo -e " Minimalism, I like it! Proceeding with ${ BLUE } ao-3 ${ RESET } installation "
say " Minimalism, I like it! Proceeding with ${ BLUE } ao-3 ${ RESET } installation "
AO = '3'
; ;
"2" )
echo -e " It's got community! Proceeding with ${ BLUE } ao-react ${ RESET } installation "
say " It's got community! Proceeding with ${ BLUE } ao-react ${ RESET } installation "
AO = 'react'
; ;
*)
echo "that aint no AO i ever heard of, try again"
say "that aint no AO i ever heard of, try again"
; ;
esac
done ;
remember " AO= ${ AO } "
echo ""
say ""
if [ $AO = "3" ] || [ $AO = 'react' ] ; then
if [ -z $NVM_DIR ] ; then
install_nvm
source ingredients/iron
else
echo -e " ${ BLUE } Node ${ RESET } already installed! "
say " ${ BLUE } Node ${ RESET } already installed! "
fi
echo -e " Setting Node to ${ BLUE } v16.13.0 ${ RESET } for compatibility "
say " Setting Node to ${ BLUE } v16.13.0 ${ RESET } for compatibility "
set_node_to v16.13.0
echo ""
echo -e " ${ GREEN } Done! ${ RESET } "
echo ""
say ""
say " ${ GREEN } Done! ${ RESET } "
say ""
fi
if [ $AO = "3" ] || [ $AO = 'react' ] ; then
echo -e " ${ BOLD } Installing Bitcoin Ecosystem ${ RESET } "
echo ""
say " ${ BOLD } Installing Bitcoin Ecosystem ${ RESET } "
say ""
if ! check_for bitcoind; then
echo -e "Building bitcoind from source... might take a while!"
say "Building bitcoind from source... might take a while!"
install_bitcoin
fi
if ! check_for lightningd; then
echo -e "Building lightningd from source... here we go again"
say "Building lightningd from source... here we go again"
install_lightning
fi
configure_bitcoin
configure_lightning
fi
echo ''
say ''
if [ $AO = "3" ] || [ $AO = 'react' ] ; then
echo -e " ${ BOLD } Installing and configuring Tor ${ RESET } \n "
say " ${ BOLD } Installing and configuring Tor ${ RESET } \n "
install_if_needed tor
configure_tor
echo ""
say ""
fi
# ------------------- Step 3 - AO Installation -------------------
echo -e " ${ BOLD } Configuring AO Core ${ RESET } \n "
say " ${ 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!'
say '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 } "
say " Just made a fresh private key and put it in ${ GREEN } ~/.ao ${ RESET } "
fi
echo ""
say ""
# TODO this is really janky/fragile, it would be better to store this in ~/.ao
CONFIG_FILE = $HOME /ao-$AO /configuration.js
@ -190,11 +188,11 @@ read
case $AO in
"3" )
if [ ! -d ~/ao-3 ] ; then
echo -e " Installing ${ BLUE } ao-3 ${ RESET } "
say " Installing ${ BLUE } ao-3 ${ RESET } "
git clone 'https://github.com/AutonomousOrganization/ao-3.git' ~/ao-3
fi
if [ -f " $CONFIG_FILE " ] ; then
echo configuration.js already exists
say configuration.js already exists
else
cp resources/ao-config $CONFIG_FILE
sed -i " s#SQLITE_DATABASE# ${ HOME } /.ao/database.sqlite3# " $CONFIG_FILE
@ -204,7 +202,7 @@ case $AO in
sed -i " s#MEMES_DIR# ${ HOME } /.ao/memes# " $CONFIG_FILE
fi
echo ""
say ""
pushd ~/ao-3
npm install
npm run build
@ -214,12 +212,12 @@ case $AO in
NODE_PARAMS = ''
; ;
"react" )
echo -e " Installing ${ BLUE } ao-react ${ RESET } "
say " Installing ${ BLUE } ao-react ${ RESET } "
if [ ! -d ~/ao-react ] ; then
git clone 'https://github.com/coalition-of-invisible-colleges/ao-react.git' ~/ao-react
fi
if [ -f " $CONFIG_FILE " ] ; then
echo configuration.js already exists
say configuration.js already exists
else
cp resources/ao-config $CONFIG_FILE
sed -i " s#SQLITE_DATABASE# ${ HOME } /.ao/database.sqlite3# " $CONFIG_FILE
@ -229,7 +227,7 @@ case $AO in
sed -i " s#MEMES_DIR# ${ HOME } /.ao/memes# " $CONFIG_FILE
fi
echo ""
say ""
pushd ~/ao-react
npm install
@ -242,35 +240,33 @@ esac
# ------------------- Step 4 - NGINX Setup -------------------
echo ""
echo -en " You still there? I might need your input here! \n\n ${ BLUE } (enter) ${ RESET } "
read
say ""
ask_for nothing " You still there? I might need your input here! \n\n ${ BLUE } (enter) ${ RESET } "
initialize_nginx
make_site ao " FILE_ROOT= ${ HOME } /ao- ${ AO } /dist "
echo ""
say ""
configure_domain_for_site ao
enable_ssl
echo -e " Excellent! We've configured this computer to serve your AO from ${ BLUE } ${ ACCESS_POINT } ${ RESET } "
say " Excellent! We've configured this computer to serve your AO from ${ BLUE } ${ ACCESS_POINT } ${ RESET } "
# ------------------- 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 ""
say " \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
ask_for ready " ${ BLUE } You ready? (y/n): ${ RESET } "
say ""
say ""
case $ao_select in
case $ready in
"y" | "Y" )
echo -e "Nice, let's do it.\n"
say "Nice, let's do it.\n"
READY = 1
; ;
*)
echo -e "wrong answer, fren\n"
say "wrong answer, fren\n"
; ;
esac
done
@ -285,71 +281,71 @@ sudo chmod 770 $HOME/.tor
activate_service tor
echo ""
say ""
build_service_from_template bitcoin "BITCOIND=`which bitcoind`"
activate_service bitcoin
echo ""
say ""
build_service_from_template lightning "LIGHTNINGD=`which lightningd`"
activate_service lightning
echo ""
say ""
build_service_from_template ao "NODE=`which node`" " AO= $AO " " NODE_PARAMS= $NODE_PARAMS "
activate_service ao
echo "this should be nginx"
say "this should be nginx"
activate_service nginx
# ------------------- Step 8 - Port Testing -------------------
echo ""
echo -e " ${ BOLD } One more thing! ${ RESET } We need to make sure that your ports are open. "
echo ""
say ""
say " ${ BOLD } One more thing! ${ RESET } We need to make sure that your ports are open. "
say ""
check_ports
# ------------------- Step 9 - Health Check -------------------
echo '*********************************************************'
echo -e " * ${ BOLD } Version Information ${ RESET } * "
echo '*********************************************************'
say '*********************************************************'
say " * ${ BOLD } Version Information ${ RESET } * "
say '*********************************************************'
echo ' '
echo 'make Version'
echo '*********************************************************'
say ' '
say 'make Version'
say '*********************************************************'
make --version
echo ' '
echo 'node Version'
echo '*********************************************************'
say ' '
say 'node Version'
say '*********************************************************'
node --version
echo ' '
echo 'sqlite3 Version'
echo '*********************************************************'
say ' '
say 'sqlite3 Version'
say '*********************************************************'
sqlite3 --version
echo ' '
echo 'tor Version'
echo '*********************************************************'
say ' '
say 'tor Version'
say '*********************************************************'
tor --version
echo ' '
echo 'bitcoind Version'
echo '*********************************************************'
say ' '
say 'bitcoind Version'
say '*********************************************************'
bitcoind --version
echo ' '
echo 'lightningd Version'
echo '*********************************************************'
say ' '
say 'lightningd Version'
say '*********************************************************'
lightningd --version
echo ' '
echo 'clboss Version'
echo '*********************************************************'
say ' '
say 'clboss Version'
say '*********************************************************'
clboss --version
echo ""
echo -e " $BOLD \nOkay, well that's everything! ${ RESET } \n\nAs long as everything worked properly, \
say ""
say " $BOLD \nOkay, well that's everything! ${ RESET } \n\nAs long as everything worked properly, \
you should be ready to continue your journey\n towards autonomy by opening ${ BLUE } $ACCESS_POINT ${ RESET } in your browser."
echo -e " The default login is ${ BLUE } dctrl/dctrl ${ RESET } , have fun! "
say " The default login is ${ BLUE } dctrl/dctrl ${ RESET } , have fun! "
exit 0