359 lines
10 KiB
Bash
Executable File
359 lines
10 KiB
Bash
Executable File
#!/bin/bash
|
|
{
|
|
########################################################################
|
|
MY_PATH="`dirname \"$0\"`" # relative
|
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|
ME="${0##*/}"
|
|
|
|
[[ "$1" == "RAZ" ]]; then
|
|
rm -Rf ~/.ssb*
|
|
else
|
|
echo '
|
|
########################################################################
|
|
# \\///
|
|
# qo-op
|
|
############# '$MY_PATH/$ME'
|
|
########################################################################
|
|
# Make Astroport Station Account
|
|
#
|
|
# You should already be runing ipfs daemon
|
|
|
|
########################################################################
|
|
# - Install silkaj youtube-dl & sbotc
|
|
# - Backup any ~/.ssb to ~/.ssb_$USER
|
|
# - Creates ~/.ssb_astroport and link it to ~/.ssb
|
|
# - Ask for credentials (or auto)
|
|
# - CREATE "~/.ssb/secret" & "~/.ssb/secret.dunikey" of you
|
|
# !!! KEEP CREDENTIALS IN ~/.zen/secret.astroport.key
|
|
########################################################################
|
|
# UnInstall and Recover your ~/.ssb_$USER
|
|
# cd && rm -Rf ~/.zen && rm ~/.ssb && mv ~/.ssb_$USER ~/.ssb
|
|
########################################################################
|
|
I encourage you to read any code you download.
|
|
This one is not perfect, but will not harm your system...
|
|
|
|
Install IPFS (compatible with ARM and X64)
|
|
curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/.install/ipfs_alone.sh | bash
|
|
|
|
HIT ENTER TO CONTINUE
|
|
'
|
|
read letsgo
|
|
fi
|
|
# "ipfs daemon" MUST be RUNNING
|
|
[[ ! $(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) ]] \
|
|
&& echo "EXIT! PLEASE INSTALL & RUN ipfs daemon WITH curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/.install/ipfs_alone.sh | bash " \
|
|
&& exit 1
|
|
|
|
# ~/.zen is ASTROPORT living place.
|
|
[[ ! -d ~/.zen/astroport ]] && mkdir -p ~/.zen/astroport
|
|
|
|
# IS git THERE ?
|
|
[[ ! $(which git) ]] && sudo apt install git -y
|
|
|
|
# USE git pull OR git clone
|
|
if [[ -f ~/.zen/astroport/install.sh ]]; then
|
|
cd ~/.zen/astroport && git pull
|
|
else
|
|
cd ~/.zen
|
|
git clone https://git.p2p.legal/axiom-team/astroport.git
|
|
fi
|
|
|
|
cd ~/.zen/astroport
|
|
# LETS GO
|
|
# Install nvm
|
|
echo '
|
|
__ _
|
|
____ ____ ____/ /__ (_)____
|
|
/ __ \/ __ \/ __ / _ \ / / ___/
|
|
/ / / / /_/ / /_/ / __/ / (__ )
|
|
/_/ /_/\____/\__,_/\___/ __/ /____/
|
|
/___/
|
|
|
|
'
|
|
if [[ ! $(which node) ]]; then
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
|
|
source ~/.bashrc
|
|
export NVM_DIR="$HOME/.nvm"
|
|
nvm install --lts
|
|
fi
|
|
|
|
echo "
|
|
____ ___ _____ _________
|
|
/ __ \/ | / ___// _/ ___/
|
|
/ / / / /| | \__ \ / / \__ \
|
|
/ /_/ / ___ |___/ // / ___/ /
|
|
\____/_/ |_/____/___//____/
|
|
|
|
"
|
|
nodename=$(cat /etc/hostname)
|
|
extension=$(echo $nodename | cut -d '.' -f 2)
|
|
if [[ $extension == $nodename ]]; then
|
|
PUB="false"
|
|
nodename=$nodename.local
|
|
else
|
|
PUB="true"
|
|
fi
|
|
if [[ ! $(which oasis) ]]; then
|
|
echo "INSTALL...."
|
|
npm install -g sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private
|
|
npm -g install fraction/oasis#semver:
|
|
else
|
|
echo "Stopping OASIS"
|
|
kill -9 $(ps auxf --sort=+utime | grep -w oasis | grep -v -E 'color=auto|grep' | tail -n 1 | awk '{print $2}')
|
|
fi
|
|
|
|
|
|
|
|
# INSTALL Silkaj, CLI for Duniter
|
|
echo '**************************************************************
|
|
__ ___
|
|
(_ | | |/ /\ |
|
|
__) _|_ |_ |\ /--\ \_|
|
|
|
|
#Duniter communication client...
|
|
'
|
|
export PATH=$PATH:~/.local/bin
|
|
if [[ ! $(which silkaj) ]]; then
|
|
sudo apt update || true
|
|
libzzz=$(sudo apt-cache search libsodium | awk '{print $1}' | grep libsodium2)
|
|
sudo apt install libffi-dev build-essential qrencode jq bc gawk $libzzz -y
|
|
sudo apt install python3-pip python3-setuptools python3-wheel -y
|
|
sudo pip3 install base58
|
|
pip3 install silkaj --user
|
|
echo 'PATH=$PATH:~/.local/bin' >> ~/.bashrc && source ~/.bashrc
|
|
fi
|
|
|
|
# INSTALL sbotc
|
|
echo '
|
|
__ __
|
|
_____/ /_ ____ / /______
|
|
/ ___/ __ \/ __ \/ __/ ___/
|
|
(__ ) /_/ / /_/ / /_/ /__
|
|
/____/_.___/\____/\__/\___/
|
|
|
|
ScuttleButt communication client...
|
|
'
|
|
if [[ ! $(which sbotc) ]]; then
|
|
|
|
|
|
sudo apt install libsodium-dev build-essential imagemagick -y
|
|
cd /tmp/
|
|
git clone https://git.scuttlebot.io/%25133ulDgs%2FoC1DXjoK04vDFy6DgVBB%2FZok15YJmuhD5Q%3D.sha256 sbotc
|
|
cd sbotc
|
|
make
|
|
sudo make install
|
|
cd ~/.zen/astroport
|
|
fi
|
|
|
|
[[ ! -f ~/.ssb/manifest.json ]] && cp ~/.zen/astroport/.install/templates/ssb/manifest.json ~/.ssb/ && echo "COPY manifest.json"
|
|
|
|
# INSTALL youtube-dl
|
|
echo '
|
|
__ __ ____
|
|
__ ______ __ __/ /___ __/ /_ ___ ____/ / /
|
|
/ / / / __ \/ / / / __/ / / / __ \/ _ \______/ __ / /
|
|
/ /_/ / /_/ / /_/ / /_/ /_/ / /_/ / __/_____/ /_/ / /
|
|
\__, /\____/\__,_/\__/\__,_/_.___/\___/ \__,_/_/
|
|
/____/
|
|
|
|
youtube-dl Swarm audio and video source...
|
|
'
|
|
if [[ ! $(which youtube-dl) ]]; then
|
|
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || exit 1
|
|
sudo chmod a+rx /usr/local/bin/youtube-dl
|
|
sudo chown $USER /usr/local/bin/youtube-dl
|
|
fi
|
|
|
|
|
|
echo '
|
|
__ __
|
|
____ ______/ /__________ ____ ____ _____/ /_
|
|
/ __ `/ ___/ __/ ___/ __ \/ __ \/ __ \/ ___/ __/
|
|
/ /_/ (__ ) /_/ / / /_/ / /_/ / /_/ / / / /_
|
|
\__,_/____/\__/_/ \____/ .___/\____/_/ \__/
|
|
/_/
|
|
|
|
ONBOARDING activation... linking ~/.ssb to ~/.ssb_astroport
|
|
|
|
'
|
|
# CREATE ~/.ssb_astroport
|
|
[[ ! -d ~/.ssb_astroport ]] && mkdir -p ~/.ssb_astroport
|
|
|
|
# If exists backup ~/.ssb to ~/.ssb_$USER SSB (one time only !)
|
|
[[ -d ~/.ssb_$USER ]] && echo "BACKUP already existing... Restore it : rm -Rf ~/.ssb && mv ~/.ssb_$USER ~/.ssb # and Try again..." && exit 1
|
|
|
|
if [[ -d ~/.ssb ]]; then
|
|
[[ -f ~/.ssb/manifest.json ]] && cp -f ~/.ssb/manifest.json ~/.ssb_astroport/
|
|
[[ -f ~/.ssb/conn.json ]] && cp -f ~/.ssb/conn.json ~/.ssb_astroport/
|
|
[[ -f ~/.ssb/gossip.json ]] && cp -f ~/.ssb/gossip.json ~/.ssb_astroport/
|
|
fi
|
|
|
|
# BACKUP ACTUAL SSB ACCOUNT
|
|
[[ -d ~/.ssb ]] && mv ~/.ssb ~/.ssb_$USER
|
|
|
|
# Symlink ~/.ssb -> ~/.ssb_astroport
|
|
[[ -L ~/.ssb ]] && rm ~/.ssb
|
|
[[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb
|
|
|
|
cd ~/.ssb/
|
|
|
|
echo '>>>>>>> METAVERSE KEY CREATION <<<<<<<<
|
|
|
|
__ __ ____
|
|
__/ // /_______ ______ __________ ___ / __ \
|
|
/_ _ __/ ___/ | /| / / __ `/ ___/ __ `__ \/ / / /
|
|
/_ _ __(__ )| |/ |/ / /_/ / / / / / / / / /_/ /
|
|
/_//_/ /____/ |__/|__/\__,_/_/ /_/ /_/ /_/\____/
|
|
|
|
KEY
|
|
|
|
CHOOSE YOU LOGIN (min 8 car. best is more than 6 words!!)...
|
|
or LEAVE BLANK and HIT ENTER FOR diceware AUTO GENERATION
|
|
'
|
|
read salt
|
|
[[ $salt != "" ]] && echo "CHOOSE PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1
|
|
|
|
if [[ "$salt" == "" && "$pepper" == "" ]]; then
|
|
|
|
echo '
|
|
._ _ ._ _ ._ _ _ ._ o _
|
|
| | | | | (/_ | | | (_) | | | (_
|
|
|
|
diceware passphrase generator...'
|
|
# INSTALL diceware files ## TODO REPLACE WITH ipfs links
|
|
|
|
[[ ! -f ~/.zen/astroport/zen/tools/diceware.sh ]] \
|
|
&& mkdir -p ~/.zen/astroport/zen/tools/ \
|
|
&& curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/diceware.sh -o ~/.zen/astroport/zen/tools/diceware.sh \
|
|
&& chmod +x ~/.zen/astroport/zen/tools/diceware.sh
|
|
|
|
[[ ! -f ~/.zen/astroport/zen/tools/diceware-wordlist.txt ]] \
|
|
&& curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/diceware-wordlist.txt -o ~/.zen/astroport/zen/tools/diceware-wordlist.txt
|
|
|
|
# LOGIN (=SALT)
|
|
salt="$(~/.zen/astroport/zen/tools/diceware.sh 6 | xargs)"
|
|
# PASS (=PEPPER)
|
|
pepper="$(~/.zen/astroport/zen/tools/diceware.sh 4 | xargs)"
|
|
|
|
fi
|
|
echo "........."
|
|
|
|
rm -f ~/.zen/secret.astroport.key
|
|
echo "# ASTROPORT #SWARM0 KEY SECRET CREDENTIALS !!!
|
|
ZENID=\"$salt\"
|
|
ZENPWD=\"$pepper\"" > ~/.zen/secret.astroport.key
|
|
sleep 1
|
|
|
|
# CREATE ~/.ssb/secret.dunikey
|
|
python3 ~/.zen/astroport/zen/tools/key_create_dunikey.py "$salt" "$pepper"
|
|
sleep 1
|
|
[[ -f /tmp/secret.dunikey ]] && rm -f ~/.ssb/secret.dunikey && mv /tmp/secret.dunikey ~/.ssb/secret.dunikey || exit 1
|
|
|
|
# CREATE SSB secret
|
|
g1pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
|
|
echo "ZENG1=\"$g1pub\"" >> ~/.zen/secret.astroport.key
|
|
|
|
g1priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
|
|
ssbpub=$(echo $g1pub | base58 -d | base64)
|
|
ssbpriv=$(echo $g1priv | base58 -d | base64 | tr -d "\n" )
|
|
|
|
rm -f ~/.ssb/secret
|
|
cat > ~/.ssb/secret <<EOF
|
|
# THIS KEY IS YOURS! REMIND IT AND KEEP IT SAFE AS A REAL WALLET
|
|
{
|
|
"curve": "ed25519",
|
|
"public": "${ssbpub}.ed25519",
|
|
"private": "${ssbpriv}.ed25519",
|
|
"id": "@${ssbpub}.ed25519"
|
|
}
|
|
|
|
# WARNING! It's vital that you DO NOT edit OR share your secret name
|
|
# ONLY Share your public name : @${ssbpub}.ed25519
|
|
# AND Public G1 WALLET : $g1pub
|
|
|
|
EOF
|
|
|
|
echo "ZENSSB=\"@$ssbpub.ed25519\"" >> ~/.zen/secret.astroport.key
|
|
|
|
echo "
|
|
_
|
|
|__|_ \ / _ o | _.
|
|
|_ |_ \/ (_) | | (_|
|
|
|
|
Your Identity is created !!
|
|
REMEMBER TO KEEP your secret files SECRET !!!
|
|
|
|
Your public name : @${ssbpub}.ed25519
|
|
Your G1 WALLET : $g1pub
|
|
|
|
"
|
|
|
|
chmod 400 ~/.ssb/secret
|
|
chmod 400 ~/.ssb/secret.dunikey
|
|
|
|
echo '
|
|
__
|
|
__________/ /_
|
|
/ ___/ ___/ __ \
|
|
(__ |__ ) /_/ /
|
|
/____/____/_.___/
|
|
|
|
NEW IDENTITY ACTIVATED in ~/.ssb/secret
|
|
|
|
'
|
|
|
|
echo '
|
|
_________
|
|
/ ____< /
|
|
/ / __ / /
|
|
/ /_/ // /
|
|
\____//_/
|
|
|
|
IDENTITY CREATED in ~/.ssb/secret.dunikey
|
|
|
|
Install https://cesium.app to use it !!
|
|
|
|
'
|
|
|
|
cat ~/.zen/secret.astroport.key
|
|
|
|
echo '
|
|
|
|
Now you are going to join #Swarm0 IPFS Metaverse
|
|
ACTIVATE METAVERSE #SWARM0 INIT SEQUENCE...
|
|
ALPHA - ALPHA - ALPHA - ALPHA
|
|
|
|
starting OASIS. http://$nodename:3000
|
|
'
|
|
oasis --allow-host $nodename --host $nodename &
|
|
|
|
sleep 7
|
|
|
|
~/.zen/astroport/zen/ssb_INIT.sh
|
|
~/.zen/astroport/zen/cron_VRFY.sh
|
|
|
|
echo "Finished...
|
|
########################################################################
|
|
!!!! PLEASE TEST THAT EVERYTHING IS ALRIGHT !!!!
|
|
Please try ASTROPORT basic commands:
|
|
1. Test IPFS : ipfs id
|
|
2. Test SSB : sbotc whoami
|
|
3. Test G1 : silkaj balance $g1pub
|
|
4. Test #Swarm0 : crontab -l
|
|
|
|
You should see 'astroport/zen/cron_MINUTE.sh' in last one.
|
|
|
|
Manual activation #Swarm0 Astroport Station:
|
|
~/.zen/astroport/zen/cron_VRFY.sh
|
|
~/.zen/astroport/zen/ssb_INIT.sh
|
|
|
|
!!!!!! ERASE ALL SSB ACCOUNTS FOR NEW INSTALL !!!!!!
|
|
rm -Rf ~/.ssb*
|
|
rm -f .zen/secret.astroport.key
|
|
|
|
Submit issues: https://git.p2p.legal/axiom-team/astroport/issues
|
|
Send ideas to support@qo-op.com
|
|
"
|
|
exit 0
|
|
}
|