#!/bin/bash red='\033[0;31m' # ${red} cyan='\033[0;36m' # ${cyan} green='\033[0;32m' # ${green} white='\033[0;37m' # ${white} erfolgreich=0 fehler=0 skip=0 # Disable prompts, like which service should be restartet export DEBIAN_FRONTEND=noninteractive # Visually seperate different tasks new_task() { echo -e "\n\n$(printf %"$(tput cols)"s | tr " " "=")\n$1\n$(printf %"$(tput cols)"s | tr " " "=")" } # Message and count +1 for success erfolg() { whiptail --title "Erfolgreich!" --msgbox "$1" 20 70 erfolgreich=$((erfolgreich + 1)) } # Message and count +1 for failed fehler() { whiptail --title "Fehler!" --msgbox "$1" 20 70 fehler=$((fehler + 1)) } # Message and count +1 for skipped skip() { echo -e "${cyan}$1${white}" skip=$((skip + 1)) } # Function to install dependencies install_dep() { if sudo apt-get install -y "$@" >/dev/null; then # shellcheck disable=SC2145 erfolg "$@ Pakete wurden installiert" else # shellcheck disable=SC2145 fehler "$@ Pakete konnten nicht installiert werden" fi } messagebox() { whiptail --title "$1" --msgbox "$2" 30 100 3>&1 1>&2 2>&3 } inputbox() { whiptail --title "$1" --inputbox "$2" 30 100 3>&1 1>&2 2>&3 } ebesucher_folder_root="/root/ebesucher" ebesucher_folder_user="/home/"$linux_user"/ebesucher/" # get the last logged in User linux_user=$(w | awk '{print $1}' | tail -n1) # get OS distrib=$(awk 'NR==1 {print $1}' /etc/issue) # Check how many Cores are available (For later use in Limits for ebesucher) availablecores=$(grep -c "processor" /proc/cpuinfo) # Check if it is possible to deactivate all prompts (for future automated Updates) [ -d /etc/needrestart/ ] && sudo sed -i 's/#$nrconf{restart} = '"'"'i'"'"';/$nrconf{restart} = '"'"'a'"'"';/g' /etc/needrestart/needrestart.conf 2>/dev/null # Just for sudo access. sudo echo # Check if whiptail is already installed (not standard on minimal installation) if ! which whiptail >/dev/null; then sudo apt-get update sudo apt-get install whiptail -y fi # Whiptail Progressbar { echo 0 sudo apt-get update >/dev/null echo 14 sudo apt-get upgrade -y >/dev/null echo 30 sudo apt-get install ca-certificates curl gnupg lsb-release zip unzip bc apt-utils cron -y >/dev/null echo 44 # Check if keyrings is present, if not, create folder for keyrings [ -d /etc/apt/keyrings ] || sudo mkdir -p /etc/apt/keyrings echo 61 # check if docker.gpg is in keyrings, if not get docker.gpg and save it in keyrings. # Also check if debian or ubuntu is used. case "$distrib" in Debian) [ -f /etc/apt/keyrings/docker.gpg ] || curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo 75 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list ;; Ubuntu) [ -f /etc/apt/keyrings/docker.gpg ] || curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo 75 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list ;; esac echo 90 if ! sudo apt-get update >/dev/null; then sudo chmod a+r /etc/apt/keyrings/docker.gpg sudo apt-get update fi echo 100 # end whiptail progressbar } | whiptail --gauge "Aktualisiere System installiere Docker" 6 50 0 # Check if Docker is not installed if ! which docker >/dev/null; then # it's not installed, so do: messagebox "Kleinen Moment Geduld, Docker wird Installiert." "Das Fenster wird sich automatisch schließen, sobald Docker installiert wurde." & sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin >/dev/null # Info to user, we need a restart. It's needed, because we add the linux_user to the docker group messagebox "Docker wurde installiert" "Leider ist es notwendig, dass wir nun den PC Neustarten.\nNach dem Neustart, starte einfach von vorne. Das Skript wird dann aber durchlaufen" sudo usermod -aG docker "$linux_user" sudo reboot fi whiptail --title "Passive Income Helperskript" --msgbox "Dieses Skript richtet mehrere Einkommenshelfer für dich ein. Du brauchst lediglich einige Anmeldedaten ausfüllen. Auf folgende Seiten kannst du dich regestrieren: Im nächsten Fenster kannst du auswählen, was eingerichtet werden soll. Du bist also nicht gezwungen, dich überall zu regestrieren. Ebesucher - Ruft werbepartner links auf und Zahlt dich in Punkten aus http://www.ebesucher.de/?ref=Pakobbix Honeygain! Vermiete deine IP-Adresse als Proxy https://r.honeygain.me/PAKOB7875D Peer2Profit. Vermiete deine IP-Adresse als Proxy https://p2pr.me/1664028004632f0d64483e3 Earnapp.Vermiete deine IP-Adresse als Proxy https://earnapp.com/i/VF8ygUXG Packetstream. Vermiete deine IP-Adresse als Proxy https://packetstream.io/?psr=4HUh IpRoyal Pawns.app. Vermiete deine IP-Adresse als Proxy https://pawns.app?r=905162 Traffmonetizer. Vermiete deine IP-Adresse als Proxy https://traffmonetizer.com/?aff=607897" 32 80 # Selection menu. einzurichten=$(whiptail --title "Was möchtest du Einrichten?" --separate-output --checklist "Wähle was du einrichten möchtest:\n\nMit Leertaste haken entfernen/hinzufügen.\nMit Enter bestätigen" 18 100 7 "Ebesucher" "Ruft werbepartner links auf und Zahlt dich in Punkten aus " ON "Honeygain" "Vermiete deine IP-Adresse als Proxy" ON "Peer2Profit" "Vermiete deine IP-Adresse als Proxy" ON "EarnAPP" "Vermiete deine IP-Adresse als Proxy" ON "Packetstream" "Vermiete deine IP-Adresse als Proxy" ON "Pawns.app" "Vermiete deine IP-Adresse als Proxy" ON "Traffmonetizer" "Vermiete deine IP-Adresse als Proxy" ON "Repocket" "Vermiete deine IP-Adresse als Proxy" ON 3>&1 1>&2 2>&3) if [ -z "$einzurichten" ]; then echo "Nichts wurde ausgewählt" exit else for einrichtung in $einzurichten; do case $einrichtung in ######################### # Honeygain Einrichtung # ######################### Honeygain) honeymail=$(whiptail --title "Honeygain E-Mail" --inputbox "Gebe deine Honeygain E-Mail adresse an: " 20 70 3>&1 1>&2 2>&3) honeypass=$(whiptail --title "Honeygain Password" --passwordbox "Gebe dein Honeygain Passwort ein: " 20 70 3>&1 1>&2 2>&3) device_name=$(whiptail --title "Honeygain Gerätenamen" --inputbox "Gebe einen Gerätenamen an: " 20 70 3>&1 1>&2 2>&3) if docker rm -f honeygain || true && docker run -d --name honeygain --restart=always honeygain/honeygain -tou-accept -email "$honeymail" -pass "$honeypass" -device "$device_name"; then erfolg "Honeygain wurde eingerichtet" else fehler "Honeygain konnte nicht eingerichtet werden" fi ;; ########################### # Peer2Profit Einrichtung # ########################### Peer2Profit) P2P_E_MAIL=$(whiptail --title "P2PMail" --inputbox "Gebe deine Peer2Profit Emailadresse ein" 30 80 3>&1 1>&2 2>&3) echo "docker rm -f peer2profit || true && docker run -d --restart=always -e P2P_EMAIL=$P2P_E_MAIL --name peer2profit peer2profit/peer2profit_linux:latest" >>~/peer2profit.sh chmod +x ~/peer2profit.sh if docker rm -f peer2profit || true && docker run -d --restart=always -e P2P_EMAIL="$P2P_E_MAIL" --name peer2profit peer2profit/peer2profit_linux:latest; then erfolg "Peer2Profit wurde eingerichtet" else fehler "Peer2Profit konnte nicht eingerichtet werden" fi ;; ####################### # EarnApp Einrichtung # ####################### EarnAPP) wget -qO- https://brightdata.com/static/earnapp/install.sh >/tmp/earnapp.sh RandomID=$( tr -dc A-Za-z0-9 &1 1>&2 2>&3) if docker rm -f packetstream || true && docker run -d --restart=always -e CID="$pscidh" --name packetstream packetstream/psclient:latest; then erfolg "Packetstream wurde eingerichtet" else fehler "Packetstream konnte nicht eingerichtet werden" fi ;; ######################### # Pawns.App Einrichtung # ######################### "Pawns.app") pawnsmail=$(whiptail --title "IPRoyal Pawns.app E-Mail" --inputbox "Gebe deine IPRoyal Pawns.app E-Mail adresse an: " 20 70 3>&1 1>&2 2>&3) pawnspass=$(whiptail --title "IPRoyal Pawns.app Password" --passwordbox "Gebe dein IPRoyal Pawns.app Passwort ein: " 20 70 3>&1 1>&2 2>&3) if docker rm -f IPRoyal || true && docker run -d --name IPRoyal --restart=always iproyal/pawns-cli:latest -email="$pawnsmail" -password="$pawnspass" -device-name="$device_name" -accept-tos; then erfolg "IPRoyal (Pawns.app) wurde eingerichtet" else fehler "IPRoyal (Pawns.app) konnte nicht eingerichtet werden" fi ;; ############################## # TraffMonetizer Einrichtung # ############################## Traffmonetizer) trafftoken=$(whiptail --title "TraffMonetizer Token" --inputbox "Gebe deinen TraffMonetizer Token an: " 20 70 3>&1 1>&2 2>&3) if docker rm -f traffmonetizer || true && docker run -d --name traffmonetizer --restart unless-stopped traffmonetizer/cli start accept --token "$trafftoken"; then erfolg "TraffMonetizer wurde eingerichtet" else fehler "TraffMonetizer konnte nicht eingerichtet werden" fi ;; Repocket) repocketmail=$(whiptail --title "Repocket E-Mail" --inputbox "Gebe deine Repocket E-Mail adresse an: " 20 70 3>&1 1>&2 2>&3) repocketspass=$(whiptail --title "Repocket Password" --passwordbox "Gebe dein Repocket Passwort ein: " 20 70 3>&1 1>&2 2>&3) if docker rm -f repocket || true && docker run -d --name repocket -e RP_MAIL="$repocketmail" -e RP_PASSWORD="$repocketspass" --restart always repocket/repocket; then erfolg "Repocket wurde eingerichtet" else fehler "Repocket konnte nicht eingerichtet werden" fi ;; ######################### # Ebesucher Einrichtung # ######################### Ebesucher) messagebox "Hinweis:" "WARNUNG: Ebesucher benötigt einen Firefox und ca. 3GB Arbeitsspeicher! Außerdem wird durch das aufrufen von webseiten relativ viel CPU verbraucht! Ebesucher braucht leider etwas mehr Einrichtung. Aber keine Sorge, ich mach es dir relativ einfach. Zunächst erstellen wir einen Firefox Container. Dieser soll im Hintergrund die Werbeseiten aufrufen." # Ebesucher Configuration if user = root if [ "$linux_user" == "root" ] || [ "$linux_user" == "USER" ]; then # Check if ebesucher folder already exists if [ -d /root/ebesucher ]; then skip "Ordner ebesucher exestiert bereits" # check if config exists, if yes, ask to overwrite if [ -f ~/ebesucher/config.zip ]; then if whiptail --title "Alte config gefunden" --yesno "Es wurde bereits ein Firefox Profil angelegt, soll dieses gelöscht und überschrieben werden?" 20 100; then # remove old config rm -f /root/ebesucher/config.zip # download blank config wget -O /root/ebesucher/config.zip https://github.com/Pakobbix/passive-income/raw/master/config.zip # unpack config unzip -o /root/ebesucher/config.zip -d /root/ebesucher/ else # unpack config unzip -o /root/ebesucher/config.zip -d /root/ebesucher/ fi fi else # Create ebesucher folder if mkdir /root/ebesucher; then # download config wget -O /root/ebesucher/config.zip https://github.com/Pakobbix/passive-income/raw/master/config.zip # unpack config unzip -o /root/ebesucher/config.zip -d /root/ebesucher/ erfolg "Ordner für ebesucher wurde erstellt" else fehler "Der Ordner für ebesucher konnte nicht angelegt werden" fi fi while true; do CPUSet=$(inputbox "CPU Begrenzung" "Das System hat $availablecores Kerne. Wieviele davon darf Ebesucher ausnutzen? 4 sind empfohlen") if [[ "$availablecores" -ge "CPUSet" ]]; then break fi done # Ebesucher docker creation function. Will be used in the next step ebesucher_docker() { if docker rm -f ebesucher || true && docker run -d --name=ebesucher -p 3000:5800 -m "$1" --cpus "$CPUSet" -v ~/ebesucher/config:/config:rw --shm-size 2g jlesage/firefox; then erfolg "Firefox-Ebesucher wurde eingerichtet" messagebox "Jetzt bist du gefragt!" "Öffne im browser deiner Wahl von einem anderen Gerät aus $(hostname -I | awk '{print $1}'):3000" else fehler "Firefox-Ebesucher konnte nicht eingerichtet werden" fi } # Check how much ram is available. ram_avail=$(bc <<<"scale=2;$(($(free | awk 'NR==2 {print $2}') / 1000000))") # create ebesucher docker container with specific RAM available (around 1 GB less then available) if ((ram_avail >= 3 && ram_avail <= 4)); then ebesucher_docker "3g" "$CPUSet" elif [[ $ram_avail -ge "5" ]]; then ebesucher_docker "4g" "$CPUSet" fi messagebox "" "Oben Rechts im Firefox Browser, öffne das Ebesucher addon. Gebe in das Feld deinen Ebesucher Nutzernamen ein und mache einen Haken bei Privacy" nutzername=$(inputbox "Ebesucher Nutzername" "Gebe hier deinen Ebesucher Nutzernamen ein: ") messagebox 'Schließt nun alle Tabs im Browser und fahrt fort.' messagebox "Erstelle Sicherungen" "Damit die Einstellungen auch für immer gespeichert werden, erstelle ich eine Sicherung der Firefox-Konfiguration" { echo 10 if [ -f $ebesucher_folder_root/config.zip ]; then # delete blank config.zip rm -f $ebesucher_folder_root/config.zip fi echo 15 docker stop ebesucher echo 20 cd $ebesucher_folder_root || exit echo 30 # pack config folder into new config.zip sudo zip -r config.zip config/ echo 40 # download restart script wget -O $ebesucher_folder_root/restart.sh https://raw.githubusercontent.com/Pakobbix/passive-income/master/restart.sh echo 60 # make restart skript executable chmod +x $ebesucher_folder_root/restart.sh echo 70 # add username to restart skript sed -i "s/username=/&$nutzername/g" $ebesucher_folder_root/restart.sh echo 80 sed -i "s/CPUcores=/CPUcores=$CPUSet/g" $ebesucher_folder_root/restart.sh echo 90 bash $ebesucher_folder_root/restart.sh echo 100 } | whiptail --gauge "Erstelle Sicherung und Lade Restarter Skript herunter" 6 50 0 # Export current crontab crontab -l >/tmp/ebesucher # check if restart script is already configured if ! grep -q "ebesucher/restart.sh" "/tmp/ebesucher"; then # add restart script, reboot and update to crontab echo "0 * * * * /bin/bash /root/ebesucher/restart.sh @reboot /bin/bash /root/ebesucher/restart.sh 0 0 * * 0 reboot 0 4 * * * /bin/bash /root/update_system.sh" >>/tmp/ebesucher # Let cron reload the new configured crontab crontab /tmp/ebesucher # delete the export rm /tmp/ebesucher fi else # Ebesucher Configuration if user != root # Check if ebesucher folder already exists if [ -d $ebesucher_folder_user ]; then skip "Ordner ebesucher exestiert bereits" # check if config exists, if yes, ask to overwrite if [ -f $ebesucher_folder_user/config.zip ]; then if whiptail --title "Alte config gefunden" --yesno "Es wurde bereits ein Firefox Profil angelegt, soll dieses gelöscht und überschrieben werden?" 20 100; then # remove old config rm -f $ebesucher_folder_user/config.zip # download blank config wget -O $ebesucher_folder_user/config.zip https://github.com/Pakobbix/passive-income/raw/master/config.zip # unpack config unzip -o $ebesucher_folder_user/config.zip -d $ebesucher_folder_user else # unpack config unzip -o $ebesucher_folder_user/config.zip -d $ebesucher_folder_user fi fi else # Create ebesucher folder if [ -d $ebesucher_folder_user ]; then # download config wget -O $ebesucher_folder_user/config.zip https://github.com/Pakobbix/passive-income/raw/master/config.zip # unpack config unzip -o $ebesucher_folder_user/config.zip -d /home/"$linux_user"/ebesucher/ fi if mkdir $ebesucher_folder_user; then # download config wget -O $ebesucher_folder_user/config.zip https://github.com/Pakobbix/passive-income/raw/master/config.zip # unpack config unzip -o $ebesucher_folder_user/config.zip -d /home/"$linux_user"/ebesucher/ erfolg "Ordner für ebesucher konnte erstellt werden" else fehler "Der Ordner für ebesucher konnte nicht angelegt werden" fi fi while true; do CPUSet=$(inputbox "CPU Begrenzung" "Das System hat $availablecores Kerne. Wieviele davon darf Ebesucher ausnutzen? 4 sind empfohlen") if [[ "$availablecores" -ge "CPUSet" ]]; then break fi done # Ebesucher docker creation function. Will be used in the next step ebesucher_docker() { if docker rm -f ebesucher || true && docker run -d --name=ebesucher -p 3000:5800 -m "$1" --cpus "$2" -v ~/ebesucher/config:/config:rw --shm-size 2g jlesage/firefox; then erfolg "Firefox-Ebesucher wurde eingerichtet" messagebox "Jetzt bist du gefragt!" "Öffne im browser deiner Wahl von einem anderen Gerät aus $(hostname -I | awk '{print $1}'):3000" else fehler "Firefox-Ebesucher konnte nicht eingerichtet werden" fi } # Check how much ram is available. ram_avail=$(bc <<<"scale=2;$(($(free | awk 'NR==2 {print $2}') / 1000000))") # create ebesucher docker container with specific RAM available (around 1 GB less then available) if ((ram_avail >= 3 && ram_avail <= 4)); then ebesucher_docker "3g" "$CPUSet" elif [[ $ram_avail -ge "5" ]]; then ebesucher_docker "4g" "$CPUSet" fi messagebox "" "Oben Rechts im Firefox Browser, öffne das Ebesucher addon. Gebe in das Feld deinen Ebesucher Nutzernamen ein und mache einen Haken bei Privacy" nutzername=$(inputbox "Ebesucher Nutzername" "Gebe hier deinen Ebesucher Nutzernamen ein: ") messagebox 'Schließt nun alle Tabs im Browser und fahrt fort.' messagebox "Erstelle Sicherungen" "Damit die Einstellungen auch für immer gespeichert werden, erstelle ich eine Sicherung der Firefox-Konfiguration" { echo 10 if [ -f $ebesucher_folder_user/config.zip ]; then # delete blank config.zip sudo rm -f $ebesucher_folder_user/config.zip 2>/dev/null fi echo 15 docker stop ebesucher echo 20 cd $ebesucher_folder_user || exit echo 30 # pack config folder into new config.zip zip -r config.zip config/ 2>/dev/null echo 40 # Give rights back to user sudo chown "$linux_user":"$linux_user" config.zip # download restart script wget -O $ebesucher_folder_user/restart.sh https://raw.githubusercontent.com/Pakobbix/passive-income/master/restart.sh echo 50 # add username to restart skript sed -i "s/username=/&$nutzername/g" $ebesucher_folder_user/restart.sh echo 60 # Add RAM and CPU Settings to restart script sed -i "s/CPUcores=/CPUcores=$CPUSet/g" $ebesucher_folder_user/restart.sh # make restart skript executable chmod +x $ebesucher_folder_user/restart.sh echo 80 bash $ebesucher_folder_user/restart.sh echo 100 } | whiptail --gauge "Erstelle Sicherung und Lade Restarter Skript herunter" 6 50 0 # Export current crontab crontab -l >/tmp/ebesucher # check if restart script is already configured if ! grep -q "ebesucher/restart.sh" "/tmp/ebesucher"; then # add restart script echo "0 * * * * /bin/bash /home/$linux_user/ebesucher/restart.sh @reboot /bin/bash /home/$linux_user/ebesucher/restart.sh" >>/tmp/ebesucher # Let cron reload the new configured crontab crontab /tmp/ebesucher # delete the export rm /tmp/ebesucher fi fi ;; esac done fi if [ "$linux_user" == "root" ]; then # configure update script echo -e "#!/bin/bash\n\nexport DEBIAN_FRONTEND=noninteractive\n\nsudo apt-get update\n\nsudo apt-get upgrade -y\n\nsudo apt-get autoremove -y" >/root/update_system.sh # make update script executable chmod +x /root/update_system.sh else # configure update script echo -e "#!/bin/bash\n\nexport DEBIAN_FRONTEND=noninteractive\n\nsudo apt-get update\n\nsudo apt-get upgrade -y\n\nsudo apt-get autoremove -y" | sudo tee /root/update_system.sh # make update script executable sudo chmod +x /root/update_system.sh # export root crontab sudo crontab -l | sudo tee /tmp/rootcron # add update and reboot to root crontab if ! grep -q "update_system" "/tmp/rootcron"; then echo "0 0 * * 0 reboot 0 4 * * * /bin/bash /root/update_system.sh" | sudo tee -a /tmp/rootcron fi # import root crontab sudo crontab /tmp/rootcron fi if docker ps | grep -q "ebesucher\|traffmonetizer\|peer2profit\|IPRoyal\|packetstream\|honeygain"; then if ! docker ps -a | grep -i "containerr/watchtower"; then if docker run -d --name watchtower --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime:ro containrrr/watchtower --cleanup --interval 86400; then erfolg "Watchtower erfolgreich eingerichtet" else fehler "Watchtower konnte nicht eingerichtet werden" fi else skip "Watchtower ist bereits vorhanden." fi fi messagebox "FERTIG!" "Wir sind nun Fertig! Ich hoffe das alles geklappt hat, wenn nicht, erstelle ein Issue auf https://github.com/Pakobbix/passive-income/issues" new_task "${green}$erfolgreich Erfolgreiche Operationen\n${red}$fehler Fehlerhafte Operationen\n${cyan}$skip Übersprungene Operationen${white}"