forked from axiom-team/astrXbian
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.0 KiB
122 lines
4.0 KiB
#!/bin/bash |
|
######################################################################## |
|
{ # this ensures the entire script is downloaded # |
|
MY_PATH="`dirname \"$0\"`" # relative |
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized |
|
ME="${0##*/}" |
|
|
|
# CHECK not root user !! |
|
if [ "$EUID" -eq 0 ] |
|
then echo -e "DO NOT EXECUTE AS root. Choose a user for your Astroport Station (we like pi)" |
|
exit 1 |
|
else echo -e "OK $USER, let's go!"; |
|
fi |
|
|
|
# Ask user password on start |
|
sudo true |
|
|
|
## Error funciton |
|
err() { |
|
echo -e "ERREUR: $1" |
|
exit 1 |
|
} |
|
|
|
# CHECK if daemon is already running |
|
if [[ $(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) ]]; then |
|
echo "ipfs daemon already running...! Must STOP ipfs AND remove ~/.ipfs to install again !!" |
|
ipfs id && echo "ipfs swarm peers: " && ipfs swarm peers |
|
echo "ipfs bootstrap list: " && ipfs bootstrap list |
|
echo "Please RUN : sudo service ipfs stop" |
|
exit 1 |
|
fi |
|
|
|
[[ -d ~/.ipfs ]] && echo "IPFS install exist! Please remove or backup before executing this script" && exit 1 |
|
|
|
echo -e "Astroport IPFS Layer installation..." |
|
|
|
# CHECK node IP isLAN? |
|
myIP=$(hostname -I | awk '{print $1}') |
|
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") |
|
|
|
MACHINE_TYPE=`uname -m` |
|
|
|
if [ ${MACHINE_TYPE} == 'x86_64' ]; then |
|
curl -s https://dist.ipfs.io/ipfs-update/v1.6.0/ipfs-update_v1.6.0_linux-amd64.tar.gz -o $MY_PATH/ipfs-update.tar.gz |
|
elif [ ${MACHINE_TYPE:0:3} == 'arm' ]; then |
|
curl -s https://dist.ipfs.io/ipfs-update/v1.6.0/ipfs-update_v1.6.0_linux-arm.tar.gz -o $MY_PATH/ipfs-update.tar.gz |
|
else |
|
[ ! -f $MY_PATH/ipfs-update.tar.gz ] && err "Your $MACHINE_TYPE is not supported yet... Please add an issue." |
|
fi |
|
|
|
echo "INSTALL ipfs-update >>>>>>>>>>>>>>>>>>>>>>>>>>" |
|
sudo tar -xvzf $MY_PATH/ipfs-update.tar.gz -C /usr/src/ || err "Untar ipfs-update" |
|
rm $MY_PATH/ipfs-update.tar.gz |
|
cd /usr/src/ipfs-update/ |
|
sudo ./install.sh || err "Install ipfs-update" |
|
cd $MY_PATH |
|
|
|
echo "INSTALL ipfs 0.7.0 >>>>>>>>>>>>>>>>>>>>>>>>>>" |
|
sudo ipfs-update install 0.7.0 || err "Install IPFS" |
|
|
|
# INIT ipfs |
|
[[ $isLAN ]] && ipfs init -p lowpower \ |
|
|| ipfs init -p server |
|
|
|
## Special Xbian init.d config |
|
if [[ "$USER" == "xbian" ]]; then |
|
sudo cp ~/.zen/astrXbian/.install/templates/ipfs/ipfs-initV.sh /etc/init.d/ipfs |
|
sudo chmod 755 /etc/init.d/ipfs |
|
sudo touch /var/log/ipfs.log && sudo chown xbian /var/log/ipfs.log |
|
else |
|
## DEBIAN |
|
echo "CREATE SYSTEMD ipfs SERVICE >>>>>>>>>>>>>>>>>>" |
|
cat > /tmp/ipfs.service <<EOF |
|
[Unit] |
|
Description=IPFS daemon |
|
After=network.target |
|
|
|
[Service] |
|
User=_USER_ |
|
ExecStart=/usr/local/bin/ipfs daemon --enable-pubsub-experiment --enable-namesys-pubsub --enable-gc |
|
Restart=on-failure |
|
|
|
[Install] |
|
WantedBy=multi-user.target |
|
EOF |
|
|
|
sudo cp -f /tmp/ipfs.service /etc/systemd/system/ |
|
sudo sed -i "s/_USER_/$USER/g" /etc/systemd/system/ipfs.service |
|
|
|
[[ -d ~/.ipfs ]] && sudo chown -R $USER:$USER ~/.ipfs |
|
sudo systemctl daemon-reload |
|
sudo systemctl enable ipfs |
|
fi |
|
|
|
|
|
########################################### |
|
# ACTIVATE IPFS OPTIONS: #swarm0 INIT |
|
########################################### |
|
### IMPORTANT !!!!!!! IMPORTANT !!!!!! |
|
########################################### |
|
# DHT PUBSUB mode |
|
ipfs config Pubsub.Router gossipsub |
|
# MAXSTORAGE = 1/2 available |
|
availableDiskSize=$(df -P ~/ | awk 'NR>1{sum+=$4}END{print sum}') |
|
diskSize="$((availableDiskSize / 2))" |
|
ipfs config Datastore.StorageMax $diskSize |
|
## Activate Rapid "ipfs p2p" |
|
ipfs config --json Experimental.Libp2pStreamMounting true |
|
ipfs config --json Experimental.P2pHttpProxy true |
|
|
|
######### CLEAN DEFAULT BOOTSTRAP TO STAY INVISIBLE ########### |
|
ipfs bootstrap rm --all |
|
########################################### |
|
# BOOTSTRAP NODES ARE ADDED LATER |
|
########################################### |
|
# AVOID CONFLICT WITH KODI REMOTE |
|
ipfs config Addresses.Gateway "/ip4/127.0.0.1/tcp/8181" |
|
|
|
[[ "$USER" != "xbian" ]] && sudo systemctl restart ipfs |
|
|
|
} # this ensures the entire script is downloaded # |
|
# IPFS CONFIG documentation: https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#addressesswarm
|
|
|