#!/bin/bash scuttlebutt() { echo -e "${c_yellow}Onboarding SCUTTLEBUTT...$c_" where_is_ssb_installed=$(which ssb-server) mkdir -p ~/.zen BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" if [[ ! $where_is_ssb_installed ]]; then # BRUTAL WAY... TODO soften killall node # Install dependencies sudo apt-get install -y socat python3-dev libtool python3-setuptools autoconf automake # Install nvm [[ ! $(which nvm) ]] && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash && source ~/.bashrc && nvm install --lts # Install ssb-server and config in ~/.ssb_astroport [[ ! -d ~/.ssb_astroport ]] && mkdir -p ~/.ssb_astroport cd ~/.ssb_astroport ### Install module in ~/.ssb_astroport/node_modules npm install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private npm install -g ssb-server # TODO plugin activation !?? # sbot plugins.enable ### Install oasis & ssb-cli (could replace ssb-server?? TODO: try it) npm -g install fraction/oasis#semver: npm -g install ssb-cli@latest # INSTALL sbotc if [[ ! $(which sbotc) ]]; then sudo apt install libsodium-dev jq -y git clone https://git.scuttlebot.io/%25133ulDgs%2FoC1DXjoK04vDFy6DgVBB%2FZok15YJmuhD5Q%3D.sha256 sbotc cd sbotc make sudo make install fi fi # TEST ssb-server Install ssbSERVER=$(which ssb-server) [[ $ssbSERVER == "" ]] && echo "Check your ssb-server install... Cannot find it !!" && exit 1 # If exists backup ~/.ssb to ~/.ssb_$USER SSB (one time only !) [[ -d ~/.ssb_$USER ]] && echo "BACKUP already existing... ~/.ssb_$USER !!! Manual check please..." && exit 1 [[ -d ~/.ssb ]] && [[ ! -d ~/.ssb_$USER ]] && mv ~/.ssb ~/.ssb_$USER # CREATE ~/.ssb_astroport [[ ! -d ~/.ssb_astroport ]] && mkdir -p ~/.ssb_astroport && cd ~/.ssb_astroport # if exists, keep ~/.ssb_$USER/secret* [[ ! -f ~/.ssb_astroport/secret ]] && [[ -f ~/.ssb_$USER/secret ]] && cp -f ~/.ssb_$USER/secret* ~/.ssb_astroport/ # Symlink ~/.ssb -> ~/.ssb_astroport [[ -L ~/.ssb ]] && rm ~/.ssb [[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb # Create config (TODO: adapt if public Pub or Local Node) # TODO: Create unique hostname in swarm !! uidna nodename=$(cat /etc/hostname) extension=$(echo $nodename | cut -d '.' -f 2) if [[ $extension == $nodename ]]; then nodename=$nodename.home # LOCAL cat > ~/.ssb/config < ~/.zen/run-ssb_server.sh < ~/.zen/ssb.pid.bash while true; do ssb-server start # IF ANY PROBLEM CHANGE TO # ssb-daemon # MANAGE WITH OASIS http://$nodename:3000 # oasis --allow-host $nodename --host $nodename echo _! > ~/.zen/ssb.pid done EOF # REPLACE _ with $ sed -i s/_/\$/g ~/.zen/run-ssb_server.sh chmod 755 ~/.zen/run-ssb_server.sh ssb-server start & else # PUB cat > ~/.ssb/config < ~/.zen/run-ssb_server.sh < ~/.zen/ssb.pid.bash while true; do ssb-server start --host $nodename # IF ANY PROBLEM CHANGE TO # ssb-daemon # MANAGE WITH OASIS http://$nodename:3000 # oasis --allow-host $nodename --host $nodename echo _! > ~/.zen/ssb.pid done EOF # REPLACE _ with $ sed -i s/_/\$/g ~/.zen/run-ssb_server.sh chmod 755 ~/.zen/run-ssb_server.sh ssb-server start --host $nodename & fi echo " _ __ __ _ _ _ .__|_o _ (_ (_ |_) (_(_)| || |(_| __)__)|_) _| $nodename " echo ' __ _ _ _ _ (_ |_|_)\ /|_|_) o._ o_|_ __)|_| \ \/ |_| \ || || |_ ... SCUTTLEBUTT ... OK? ' echo "DOES SCUTTELBUTT IS RUNNING FINE?" echo "CHECK and ADD $HOME/.zen/run-ssb_server.sh & TO '/etc/rc.local' !!! " echo "OASIS NODE MANAGER http://$nodename:3000" oasis --allow-host $nodename --host $nodename & # TODO: Protect behind nginx redirect !!! echo "WAIT 10 seconds before ssb_INIT.sh" sleep 10 $MY_PATH/zen/ssb_INIT.sh } $@