backup .ssb
This commit is contained in:
parent
fb3d19fb8d
commit
0e76a649bc
249
install.sh
249
install.sh
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
################################################################################
|
||||
########################################################################
|
||||
# Authors:
|
||||
# [@cel](@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519)
|
||||
# [@Fred](@9BbJwPDjcyIqrOUPNn0nJZBduWdIrpMk3Cjz5MP361s=.ed25519)
|
||||
|
@ -7,92 +7,142 @@
|
|||
# [@poka]()
|
||||
# Version: 1.0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
###########################################################################################
|
||||
# ADD G1 Layer 10 LOVE to message writer you like !
|
||||
# INSTALL silkaj sbotc
|
||||
# PREVENT DOUBLE PAYEMENT
|
||||
############################################################################################
|
||||
|
||||
# INSTALL requirements
|
||||
[[ ! $(which base58) ]] && sudo apt install build-essential base58 -y
|
||||
########################################################################
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
echo '
|
||||
########################################################################
|
||||
# \\///
|
||||
# qo-op
|
||||
############# '$MY_PATH/$ME'
|
||||
########################################################################
|
||||
# SSB-G1-TX :: INSTALL G1 + SSB for sending G1 Tip on SSB likes
|
||||
########################################################################
|
||||
'
|
||||
|
||||
# INSTALL Silkaj, CLI for Duniter
|
||||
if [[ ! $(which silkaj) ]]; then
|
||||
echo "INSTALL silkaj"
|
||||
echo '**************************************************************
|
||||
__ ___
|
||||
(_ | | |/ /\ |
|
||||
__) _|_ |_ |\ /--\ \_|
|
||||
|
||||
#Libre Money Layer
|
||||
'
|
||||
mkdir -p ~/.zen
|
||||
sudo apt update || true
|
||||
sudo apt install python3-pip python3-setuptools python3-wheel -y && pip3 install silkaj --user
|
||||
sudo apt install build-essential -y
|
||||
sudo pip3 install base58
|
||||
sudo apt install python3-pip python3-setuptools python3-wheel -y
|
||||
pip3 install silkaj --user
|
||||
echo 'PATH=$PATH:.local/bin' >> ~/.bashrc && source ~/.bashrc
|
||||
fi
|
||||
|
||||
# Install ScuttleButt
|
||||
|
||||
if [[ ! $(which sbot) ]]; then
|
||||
# Install ScuttleButt
|
||||
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
__ _ ___ ___ _ _ ___ ___
|
||||
(_ / | | | | | |_ |_) | | | |
|
||||
__) \_ |_| | | |_ |_ |_) |_| | |
|
||||
|
||||
#Libre Social Layer
|
||||
|
||||
Is it a 24/24 Pub?
|
||||
Yes/No: y? (Default No)'
|
||||
read ssb_yes
|
||||
|
||||
nodename=$(cat /etc/hostname)
|
||||
extension=$(echo $nodename | cut -d '.' -f 2)
|
||||
[[ $extension == $nodename ]] && nodename=$nodename.local
|
||||
|
||||
if [[ ! $(which sbot) && "$ssb_yes" == "y" ]]; then
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
|
||||
source ~/.bashrc
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
nvm install --lts
|
||||
sudo apt install libtool autoconf -y
|
||||
npm install sodium-native ssb-backlinks
|
||||
npm install -g ssb-server
|
||||
|
||||
nodename=$(cat /etc/hostname).local
|
||||
echo "SSB Node Hostname (default $nodename)?"
|
||||
read EXTERNAL
|
||||
[[ $EXTERNAL == "" ]] && EXTERNAL=$nodename
|
||||
|
||||
mkdir -p ~/.ssb
|
||||
nvm install --lts
|
||||
|
||||
sudo apt install libtool autoconf -y
|
||||
npm install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private
|
||||
npm install -g ssb-server
|
||||
|
||||
# LOCAL
|
||||
####### BACKUP .ssb to ~/.ssb_$USER && CREATE ~/.ssb_astroport
|
||||
# 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
|
||||
# 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
|
||||
|
||||
cat > ~/.ssb/config <<EOF
|
||||
{
|
||||
"connections": {
|
||||
"incoming": {
|
||||
"net": [
|
||||
{
|
||||
"scope": "public", "external": ["$EXTERNAL"], "transform": "shs", "port": 8008
|
||||
},
|
||||
{ "scope": "private", "transform": "shs", "port": 8008, "host": "127.0.0.1" }
|
||||
{ "scope": "public", "host": "0.0.0.0", "external": ["$nodename"], "transform": "shs", "port": 8008 }
|
||||
],
|
||||
"ws": [
|
||||
{ "scope": ["public", "local", "device"], "host": "0.0.0.0", "port": 8989, "transform": "shs", "http": true }
|
||||
]
|
||||
},
|
||||
"outgoing": {
|
||||
"net": [
|
||||
{
|
||||
"transform": "shs"
|
||||
}
|
||||
]
|
||||
"net": [{ "transform": "shs" }]
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
|
||||
cat > ~/run-ssb-PUB_$EXTERNAL.sh <<EOF
|
||||
cat > ~/.zen/run-ssb_server.sh <<EOF
|
||||
#!/bin/bash
|
||||
echo _$ > ~/.zen/ssb.pid.bash
|
||||
while true; do
|
||||
ssb-server start --host $EXTERNAL
|
||||
ssb-server start
|
||||
echo _! > ~/.zen/ssb.pid
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod 755 ~/run-ssb-PUB_$EXTERNAL.sh
|
||||
~/run-ssb-PUB_$EXTERNAL.sh &
|
||||
# REPLACE _ with $
|
||||
sed -i s/_/\$/g ~/.zen/run-ssb_server.sh
|
||||
chmod 755 ~/.zen/run-ssb_server.sh
|
||||
|
||||
# INSTALL sbotc for CLI API
|
||||
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
|
||||
|
||||
# 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
|
||||
# LOCAL NODE
|
||||
if [[ $extension == $nodename ]] ; then
|
||||
|
||||
echo '
|
||||
_ ___ _ _ _
|
||||
|_) /\ | / |_| \ / / \ |_) |/
|
||||
| /--\ | \_ | | \/\/ \_/ | \ |\
|
||||
|
||||
Install Patchwork...
|
||||
'
|
||||
|
||||
wget -s https://github.com/ssbc/patchwork/releases/download/v3.17.6/ssb-patchwork_3.17.6_amd64.deb > /tmp/
|
||||
sudo dpkg -i /tmp/ssb-patchwork_3.17.6_amd64.deb
|
||||
|
||||
fi
|
||||
|
||||
###########################################################################################
|
||||
####################### G1 SSB ACCOUNT MANAGER ############################################
|
||||
###########################################################################################
|
||||
|
||||
|
||||
|
||||
# If user already has an SSB account, we generate Duniter secret key from SSB secret key
|
||||
if [[ -f ~/.ssb/secret ]]; then
|
||||
|
||||
|
@ -115,54 +165,68 @@ else
|
|||
|
||||
mkdir -p ~/.ssb
|
||||
echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!"
|
||||
echo "CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
|
||||
echo "
|
||||
__ __ __ _
|
||||
/__ /| (_ (_ |_)
|
||||
\_| | __) __) |_)
|
||||
|
||||
CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
|
||||
read salt
|
||||
[[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit
|
||||
[[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1
|
||||
|
||||
# INSTALL Cargo
|
||||
if [[ ! $(which cargo) ]]; then
|
||||
curl https://sh.rustup.rs -sSf | sh
|
||||
PATH=$PATH:~/.cargo/env
|
||||
source $HOME/.cargo/env
|
||||
if [[ "$salt" == "" && "$pepper" == "" ]]; then
|
||||
echo '
|
||||
._ _ ._ _ ._ _ _ ._ o _
|
||||
| | | | | (/_ | | | (_) | | | (_
|
||||
|
||||
passphrase generator...'
|
||||
|
||||
# INSTALL Cargo
|
||||
if [[ ! $(which cargo) ]]; then
|
||||
curl https://sh.rustup.rs -sSf | sh
|
||||
PATH=$PATH:~/.cargo/env
|
||||
source $HOME/.cargo/env
|
||||
fi
|
||||
|
||||
# Install DUP-Mnemonic
|
||||
|
||||
if [[ ! $(which dup-mnemonic) ]]; then
|
||||
cd /tmp
|
||||
git clone https://git.duniter.org/tools/dup-mnemonic-rs
|
||||
cd dup-mnemonic-rs
|
||||
cargo build --release
|
||||
sudo cp target/release/dup-mnemonic /usr/local/bin
|
||||
fi
|
||||
|
||||
# GENERATE MNEMONIC KEY: 9 MOTS
|
||||
if [[ $salt == "" ]]; then
|
||||
declare -a makeyarray
|
||||
makeyarray=($(dup-mnemonic -l $lang))
|
||||
# LOGIN (=SALT) 6 WORDS
|
||||
salt="${makeyarray[0]} ${makeyarray[1]} ${makeyarray[2]} ${makeyarray[3]} ${makeyarray[4]} ${makeyarray[5]}"
|
||||
# PASS (=PEPPER) 3 WORDS
|
||||
pepper="${makeyarray[6]} ${makeyarray[7]} ${makeyarray[8]}"
|
||||
fi
|
||||
echo "........."
|
||||
echo "REMEMBER YOUR CREDENTIALS: $salt / $pepper"
|
||||
fi
|
||||
|
||||
# Install DUP-Mnemonic
|
||||
|
||||
if [[ ! $(which dup-mnemonic) ]]; then
|
||||
cd /tmp
|
||||
git clone https://git.duniter.org/tools/dup-mnemonic-rs
|
||||
cd dup-mnemonic-rs
|
||||
cargo build --release
|
||||
sudo cp target/release/dup-mnemonic /usr/local/bin
|
||||
fi
|
||||
|
||||
# GENERATE MNEMONIC KEY: 9 MOTS
|
||||
if [[ $salt == "" ]]; then
|
||||
declare -a makeyarray
|
||||
makeyarray=($(dup-mnemonic -l $lang))
|
||||
# LOGIN (=SALT) 6 MOTS
|
||||
salt="${makeyarray[0]} ${makeyarray[1]} ${makeyarray[2]} ${makeyarray[3]} ${makeyarray[4]} ${makeyarray[5]}"
|
||||
# PASS (=PEPPER) 3 MOTS
|
||||
pepper="${makeyarray[6]} ${makeyarray[7]} ${makeyarray[8]}"
|
||||
fi
|
||||
echo "........."
|
||||
echo "REMEMBER YOUR CREDENTIALS: $salt / $pepper"
|
||||
|
||||
# CREATE ~/.ssb/secret.dunikey
|
||||
python3 ./key_create_dunikey.py "$salt" "$pepper"
|
||||
mv ./.secret.dunikey ~/.ssb/secret.dunikey
|
||||
python3 $MY_PATH/key_create_dunikey.py "$salt" "$pepper"
|
||||
mv $MY_PATH/.secret.dunikey ~/.ssb/secret.dunikey
|
||||
|
||||
# CREATE SSB secret
|
||||
g1pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
|
||||
g1priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
|
||||
ssbpub=$(echo $g1pub | base58 -d | base64)
|
||||
ssbpriv=$(echo $g1priv | base58 -d | base64)
|
||||
pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
|
||||
priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
|
||||
ssbpub=$(echo $pub | base58 -d | base64)
|
||||
ssbpriv=$(echo $priv | base58 -d | base64)
|
||||
|
||||
cat > ~/.ssb/secret <<EOF
|
||||
# This secret was generated from ~/.ssb/secret.dunikey
|
||||
# G1 Wallet https://cesium.app with Mnemonic Credentials
|
||||
# user: $salt
|
||||
# password: $pepper
|
||||
# THIS KEY IS YOURS! KEEP IT SAFE AS A REAL WALLET
|
||||
# This secret is related to your G1Wallet - https://cesium.app
|
||||
# silkaj balance $pub
|
||||
# ID (salt): $salt / Pass: $pepper
|
||||
# THIS KEY IS YOURS! REMIND IT AND KEEP IT SAFE AS A REAL WALLET
|
||||
# chmod 400 ~/.zen/secret
|
||||
|
||||
{
|
||||
"curve": "ed25519",
|
||||
|
@ -174,16 +238,11 @@ cat > ~/.ssb/secret <<EOF
|
|||
# WARNING! It's vital that you DO NOT edit OR share your secret name
|
||||
# instead, share your public name
|
||||
# your SSB public name: @$ssbpub.ed25519
|
||||
# your G1 wallet public key: $g1pub
|
||||
EOF
|
||||
|
||||
|
||||
fi
|
||||
|
||||
# TODO: Create RAM disk
|
||||
# mkdir -p ~/.ssb/zen/tmp && sudo mount -t tmpfs -osize=64m tmpfs ~/.ssb/zen/tmp
|
||||
# Add it to /etc/fstab
|
||||
|
||||
|
||||
echo -e "Installation complete"
|
||||
|
||||
|
|
Loading…
Reference in New Issue