Files
myspeed/install.sh
Paul Schwarz 73c018f1b0 Farben beim Ablauf optimiert
Vorher war im Download und Installprozess alles Lila, dies wird hier angepasst.
2022-08-30 21:36:39 +02:00

230 lines
7.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Colors for better overview
GREEN='\033[0;32m'
BLUE='\033[1;34m'
YELLOW='\033[1;33m'
RED='\033[1;31m'
NORMAL='\033[0;39m'
PURPLE='\033[0;35m'
INSTALLATION_PATH="/opt/myspeed"
while getopts "d:" o > /dev/null 2>&1; do
# shellcheck disable=SC2220
case "${o}" in
d) INSTALLATION_PATH=${OPTARG} ;;
esac
done
# Root check
if [ $EUID -ne 0 ]; then
echo -e "$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-"
echo -e "$RED✗ ABGEBROCHEN"
echo -e "$NORMAL Die Installation läuft derzeit über einen Benutzer ohne Root-Rechte. Dies ist allerdings erforderlich. Melde dich mit einem Root Account an, um fortzufahren."
echo -e "$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-$RED-$NORMAL-"
exit
fi
echo -e "$GREEN ---------$BLUE Automatische Installation$GREEN ---------"
echo -e "$BLUE MySpeed$YELLOW wird nun installiert."
if [ "$1" == "--beta" ]; then
echo -e "$YELLOW Version:$BLUE MySpeed$PURPLE Beta"
else
echo -e "$YELLOW Version:$BLUE MySpeed Release"
fi
echo -e "$YELLOW Ort:$BLUE $INSTALLATION_PATH"
echo -e "$YELLOW Es wird die Speedtest API von Ookla verwendet."
echo -e "$YELLOW Wenn du damit$RED nicht$YELLOW einverstanden bist,"
echo -e "$YELLOW kannst du die Installation mit$RED STRG + C$YELLOW abbrechen. "
echo -e "$GREEN Die Installation beginnt in 10 Sekunden..."
echo -e "$GREEN ----------------------------------------------"
sleep 10
clear
# Check if installed
if [ -d "$INSTALLATION_PATH" ]; then
clear
echo -e "$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-"
echo -e ""
echo -e "$YELLOW⚠ WARNUNG"
echo -e "$NORMAL MySpeed ist bereits auf diesem System installiert."
echo -e ""
echo -e "$GREEN Info:$NORMAL Neuestes Update wird installiert..."
echo -e ""
echo -e "$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-$YELLOW-$NORMAL-"
sleep 5
fi
if command -v systemctl &> /dev/null && systemctl --all --type service | grep -n "myspeed.service"; then
clear
echo -e "$YELLOW MySpeed Dienst wird gestoppt..."
systemctl stop myspeed
fi
# Update all packages
clear
echo -e ""
echo -e "$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-"
echo -e ""
echo -e "$BLUE🔎 STATUSMELDUNG"
echo -e "$NORMAL Update-Suche für Linux-System gestartet..."
echo -e ""
echo -e "$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-"
echo -e ""
apt-get update -y
clear
echo -e "$GREEN Info:$NORMAL Die Installation wird jetzt vorbereitet. Das kann einen Augenblick dauern..."
sleep 5
function check() {
clear
echo -e "$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-"
echo -e "$BLUE🔎 STATUSMELDUNG"
echo -e "$NORMAL Es wird überprüft, ob $1 vorhanden ist..."
echo -e "$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-$BLUE-$NORMAL-"
echo -e ""
if ! command -v "$1" &> /dev/null
then
echo -e "$YELLOW \"$1\" ist nicht installiert.$NORMAL Die Installation wird gestartet..."
sleep 2
echo -e "$PURPLE Wird installiert..."
apt-get install "$1" -y
fi
}
check "wget"
check "unzip"
check "curl"
# Check for node
clear
echo -e "$BLUE🔎 STATUSMELDUNG"
echo -e "$NORMAL Es wird überprüft, ob node vorhanden ist..."
if ! command -v node &> /dev/null
then
echo -e "$YELLOW \"node\" ist nicht installiert.$NORMAL Die Installation wird gestartet..."
sleep 2
clear
echo -e "$PURPLE Wird heruntergeladen...$NORMAL"
curl -sSL https://deb.nodesource.com/setup_16.x | bash
clear
echo -e "$PURPLE Wird installiert...$NORMAL"
apt-get install nodejs -y
fi
clear
if [ "$1" == "--beta" ]; then
RELEASE_URL=https://github.com/gnmyt/myspeed/archive/refs/heads/development.zip
else
RELEASE_URL=$(curl -s https://api.github.com/repos/gnmyt/myspeed/releases/latest | grep browser_download_url | cut -d '"' -f 4)
fi
echo -e "$GREEN✓ Vorbereitung abgeschlossen:$NORMAL Die Installation von MySpeed wird jetzt gestartet..."
sleep 3
clear
if [ ! -d "$INSTALLATION_PATH" ]
then
clear
echo -e "$BLUE Info: $NORMAL MySpeed wird unter dem Verzeichnis $INSTALLATION_PATH installiert. Der Ordner wird nun erstellt."
sleep 2
mkdir "$INSTALLATION_PATH"
fi
cd "$INSTALLATION_PATH"
clear
echo -e "$BLUE Info: $NORMAL Die aktuelle MySpeed-Instanz wird heruntergeladen. Einen Moment..."
sleep 2
wget "$RELEASE_URL"
echo -e "$BLUE Info: $NORMAL Download abgeschlossen. Entpacken läuft..."
sleep 2
if [ "$1" == "--beta" ]; then
unzip -qo development.zip
rm -R server client docs cli
mv myspeed-*/* .
rm development.zip
rm -R myspeed-development
else
unzip -qo MySpeed*.zip
rm MySpeed-*.zip
fi
clear
echo -e "$BLUE Info: $NORMAL Die notwendigen Abhängigkeiten werden jetzt installiert..."
sleep 2
rm -rf "$INSTALLATION_PATH/node_modules"
npm install --force
if [ "$1" == "--beta" ]; then
clear
echo -e "$BLUE Info: $NORMAL Die Weboberfläche wird kompiliert..."
sleep 2
cd client && npm install --force
cd .. && npm run build
cp -r client/build .
rm -rf client/build
fi
# Install as system service
clear
echo -e "$BLUE🔎 STATUSMELDUNG"
echo -e "$NORMAL Registriere MySpeed als Hintergrunddienst..."
echo -e ""
echo -e ""
sleep 2
if command -v systemctl &> /dev/null && ! systemctl --all --type service | grep -n "myspeed.service"; then
cat << EOF >> /etc/systemd/system/myspeed.service
[Unit]
Description=MySpeed
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=root
Environment=NODE_ENV=production
WorkingDirectory=$INSTALLATION_PATH
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
echo -e "$NORMAL MySpeed wird im Autostart hinzugefügt..."
sleep 1
systemctl enable myspeed
echo -e "$NORMAL MySpeed Dienst wird gestartet..."
sleep 1
systemctl start myspeed
fi
clear
if ! command -v systemctl &> /dev/null; then
echo -e "$YELLOW⚠ Warnung: $NORMAL Dein Linux-System bietet derzeit nicht die Möglichkeit, MySpeed im Hintergrund zu starten. Hierfür wird \"systemd\" benötigt."
echo -e "$BLUE Info: $NORMAL Du kannst, wenn du \"systemd\" installiert hast, die Installation erneut starten. Es wird dann automatisch eingestellt."
sleep 5
else
echo -e "$GREEN MySpeed wird neu gestartet..."
sleep 2
systemctl restart myspeed
fi
clear
echo -e "$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-" #multicolor
echo -e "$GREEN✓ Installation abgeschlossen: $NORMAL MySpeed wurde unter $INSTALLATION_PATH installiert."
echo -e "Die Weboberfläche findest du im Browser unter$BLUE http://$(curl -s ifconfig.me):5216$NORMAL."
if [ -d "$INSTALLATION_PATH" ]; then
echo -e "$BLUE Info:$NORMAL Sollte das Update nicht erfolgreich angewendet worden sein, bitte starte MySpeed mal neu:$BLUE systemctl restart myspeed"
fi
echo -e "$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-$GREEN-$NORMAL-" #multicolor
# MySpeed is installed successfully.