forked from axiom-team/astroport
106 lines
2.9 KiB
Bash
Executable File
106 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
scuttlebutt() {
|
|
echo -e "${c_yellow}Onboarding SCUTTLEBUTT...$c_"
|
|
where_is_ssb_installed=$(which ssb-server)
|
|
|
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
if [[ ! $where_is_ssb_installed ]]; then
|
|
# Install dependencies
|
|
sudo apt-get install -y socat python3-dev libtool python3-setuptools autoconf automake
|
|
|
|
# Install 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
|
|
npm install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query
|
|
npm install -g ssb-server
|
|
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 ]] && [[ ! -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)
|
|
nodename=$(cat /etc/hostname)
|
|
extension=$(echo $nodename | cut -d '.' -f 2)
|
|
|
|
if [[ $extension == "" ]]; then
|
|
nodename=$nodename.home
|
|
|
|
# LOCAL
|
|
cat > ~/.ssb/config <<EOF
|
|
{
|
|
"incoming": {
|
|
"net": [{ "port": 8008, "scope": "public", "transform": "shs" }]
|
|
},
|
|
"outgoing": {
|
|
"net": [{ "transform": "shs" }]
|
|
}
|
|
}
|
|
EOF
|
|
|
|
else
|
|
|
|
# PUB
|
|
cat > ~/.ssb/config <<EOF
|
|
{
|
|
"connections": {
|
|
"incoming": {
|
|
"net": [
|
|
{
|
|
"scope": "public", "external": ["$nodename"], "transform": "shs", "port": 8008
|
|
},
|
|
{ "scope": "private", "host": "127.0.0.1", "transform": "shs", "port": 8008 }
|
|
]
|
|
},
|
|
"outgoing": {
|
|
"net": [
|
|
{
|
|
"transform": "shs"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
fi
|
|
|
|
# Store current user as sudo will change it
|
|
currentUser=$USER
|
|
[[ -f /etc/systemd/system/ssb.service ]] && sudo rm -f /etc/systemd/system/ssb.service
|
|
# Copy SYSTEMD service to correct location
|
|
cp "$BASE_DIR/ssb.service" /tmp/ssb.service
|
|
# Copy repplace __USER__ place holder to current user
|
|
sed -i "s|__USER__|${currentUser}|g" /tmp/ssb.service
|
|
sed -i "s|__SSBSERVER__|ssb-server|g" /tmp/ssb.service
|
|
|
|
sudo mv /tmp/ssb.service /etc/systemd/system/ssb.service
|
|
|
|
# Reload, Enable and start SSB Service
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable ssb.service
|
|
sudo systemctl restart ssb.service
|
|
|
|
sudo systemctl status ssb.service
|
|
|
|
}
|
|
|
|
$@
|