#!/bin/bash YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' if [ "$EUID" -ne 0 ] then echo -e "${RED}Install script must be run by root or with sudo${NC}" exit fi echo -e "${YELLOW} ---> Installing required system packages${NC}" apt-get update apt-get -y upgrade DEBIAN_FRONTEND=noninteractive apt-get -y -q install tor htop net-tools iputils-ping zip unzip whois traceroute vim openssh-server curl git libssl-dev libxslt-dev libxml2-dev imagemagick libmagickwand-dev libreadline-dev zlib1g-dev libsqlite3-dev libpq-dev build-essential libxml2-dev build-essential libxslt1-dev zlib1g-dev python-dev vim git sudo iptables network-manager APOLLO_DIR=/opt/apolloapi echo -e "${YELLOW} ---> Adding futurebit user${NC}" adduser -q --disabled-password --gecos "" futurebit grep -qxF 'futurebit ALL=(ALL) NOPASSWD:ALL' /etc/sudoers || echo 'futurebit ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers echo -e "${YELLOW} ---> Cloning Apollo app${NC}" mkdir -p $APOLLO_DIR if [ "$1" = "dev" ]; then echo -e "${YELLOW} ---> Using DEV branch" git clone --single-branch --branch dev-BTC https://github.com/jstefanop/apolloapi.git $APOLLO_DIR rm -rf $APOLLO_DIR/apolloui git clone --single-branch --branch dev-BTC https://github.com/jstefanop/apolloui.git $APOLLO_DIR/apolloui else echo -e "${YELLOW} ---> Using PRODUCTION branch" git clone --single-branch --branch production-BTC https://github.com/jstefanop/apolloapi.git $APOLLO_DIR rm -rf $APOLLO_DIR/apolloui git clone --single-branch --branch production-BTC https://github.com/jstefanop/apolloui.git $APOLLO_DIR/apolloui fi chown -R futurebit $APOLLO_DIR echo -e "${YELLOW} ---> Installing firewall${NC}" RC_LOCAL=/etc/rc.local if [ ! -f "$RC_LOCAL" ]; then touch $RC_LOCAL fi grep -q -F "$APOLLO_DIR/backend/firewall" $RC_LOCAL || sed -i "\$i \/opt\/apolloapi\/backend\/firewall" $RC_LOCAL cd $APOLLO_DIR echo -e "${YELLOW} ---> Installing NVM${NC}" echo "Installing nvm" mkdir /usr/local/nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | NVM_DIR=/usr/local/nvm bash . /usr/local/nvm/nvm.sh nvm install 14.16.1 nvm alias default 14.16.1 ### API ### echo -e "${YELLOW} ---> Installing API modules${NC}" npm -g i yarn yarn ### UI ### echo -e "${YELLOW} ---> Installing UI modules${NC}" cd $APOLLO_DIR/apolloui yarn echo -e "${YELLOW} ---> Building UI (could take few minutes)${NC}" yarn build echo -e "${YELLOW} ---> Starting firewall${NC}" bash $APOLLO_DIR/backend/firewall echo -e "${YELLOW} ---> Installing miner binaries${NC}" arch=$(uname -m) cp $APOLLO_DIR/backend/apollo-miner/bin/$arch/apollo-miner $APOLLO_DIR/backend/apollo-miner/futurebit-miner ### Bitcoind ### cp $APOLLO_DIR/backend/node/bin/$arch/bitcoind $APOLLO_DIR/backend/node/bitcoind cp $APOLLO_DIR/backend/node/bin/bitcoin.conf $APOLLO_DIR/backend/node/bitcoin.conf ### TOR ### usermod -a -G debian-tor futurebit cp $APOLLO_DIR/backend/torrc /etc/tor/torrc ### SYSTEMD ### echo -e "${YELLOW} ---> Installing systemd files${NC}" cp $APOLLO_DIR/backend/systemd/apollo-ui.service /etc/systemd/system/ cp $APOLLO_DIR/backend/systemd/apollo-miner.service /etc/systemd/system/ cp $APOLLO_DIR/backend/systemd/node.service /etc/systemd/system/ cp $APOLLO_DIR/backend/systemd/swap.service /etc/systemd/system/ systemctl daemon-reload systemctl enable swap systemctl enable apollo-ui systemctl enable apollo-miner systemctl enable node systemctl start apollo-ui systemctl start tor echo -e "${YELLOW} Installation complete${NC}"