From de9de4f69faba1fe27a00bd5164cc5b9fc0be1b3 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 22:20:16 +0100 Subject: [PATCH 1/8] Create install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 install.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/install.sh @@ -0,0 +1 @@ +test From f8be31202f61d044aeb63b80d8ece29c6456abf2 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 22:34:21 +0100 Subject: [PATCH 2/8] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b8d3d77..65d7193 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # rustdesk-sever-pro Some scripts for RustDesk Server Pro are hosted here. + +Scripts are AGPL the server is not! From 3844f75d711c95cb09361701093dfd5113d2126a Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 22:34:45 +0100 Subject: [PATCH 3/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 65d7193..1f3a876 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # rustdesk-sever-pro Some scripts for RustDesk Server Pro are hosted here. -Scripts are AGPL the server is not! +# Scripts are AGPL the server is not! From a21d3c1036e6162bfcc4c561c7721d1da43111f9 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 22:57:02 +0100 Subject: [PATCH 4/8] Update install.sh --- install.sh | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 260 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 9daeafb..34896b1 100644 --- a/install.sh +++ b/install.sh @@ -1 +1,260 @@ -test +#!/bin/bash + +# Get Username +uname=$(whoami) +admintoken=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c16) + +ARCH=$(uname -m) + + +# identify OS +if [ -f /etc/os-release ]; then + # freedesktop.org and systemd + . /etc/os-release + OS=$NAME + VER=$VERSION_ID + + UPSTREAM_ID=${ID_LIKE,,} + + # Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian' + if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then + UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)" + fi + + +elif type lsb_release >/dev/null 2>&1; then + # linuxbase.org + OS=$(lsb_release -si) + VER=$(lsb_release -sr) +elif [ -f /etc/lsb-release ]; then + # For some versions of Debian/Ubuntu without lsb_release command + . /etc/lsb-release + OS=$DISTRIB_ID + VER=$DISTRIB_RELEASE +elif [ -f /etc/debian_version ]; then + # Older Debian/Ubuntu/etc. + OS=Debian + VER=$(cat /etc/debian_version) +elif [ -f /etc/SuSe-release ]; then + # Older SuSE/etc. + OS=SuSE + VER=$(cat /etc/SuSe-release) +elif [ -f /etc/redhat-release ]; then + # Older Red Hat, CentOS, etc. + OS=RedHat + VER=$(cat /etc/redhat-release) +else + # Fall back to uname, e.g. "Linux ", also works for BSD, etc. + OS=$(uname -s) + VER=$(uname -r) +fi + + +# output ebugging info if $DEBUG set +if [ "$DEBUG" = "true" ]; then + echo "OS: $OS" + echo "VER: $VER" + echo "UPSTREAM_ID: $UPSTREAM_ID" + exit 0 +fi + +# Setup prereqs for server +# common named prereqs +PREREQ="curl wget unzip tar" +PREREQDEB="dnsutils ufw" +PREREQRPM="bind-utils" +PREREQARCH="bind" + +echo "Installing prerequisites" +if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then + sudo apt-get update + sudo apt-get install -y ${PREREQ} ${PREREQDEB} # git +elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] ; then +# opensuse 15.4 fails to run the relay service and hangs waiting for it +# needs more work before it can be enabled +# || [ "${UPSTREAM_ID}" = "suse" ] + sudo yum update -y + sudo yum install -y ${PREREQ} ${PREREQRPM} # git +elif [ "${ID}" = "arch" ] || [ "${UPSTREAM_ID}" = "arch" ]; then + sudo pacman -Syu + sudo pacman -S ${PREREQ} ${PREREQARCH} +else + echo "Unsupported OS" + # here you could ask the user for permission to try and install anyway + # if they say yes, then do the install + # if they say no, exit the script + exit 1 +fi + +# Setting up firewall + +ufw allow 21115:21119/tcp +ufw allow 22/tcp +ufw allow 21116/udp +sudo ufw enable + +# Make Folder /opt/rustdesk/ +if [ ! -d "/opt/rustdesk" ]; then + echo "Creating /opt/rustdesk" + sudo mkdir -p /opt/rustdesk/ +fi +sudo chown "${uname}" -R /opt/rustdesk +cd /opt/rustdesk/ || exit 1 + + +#Download latest version of Rustdesk +RDLATEST=$(curl https://api.github.com/repos/rustdesk/rustdesk-server-pro/releases/latest -s | grep "tag_name"| awk '{print substr($2, 2, length($2)-3) }') + +echo "Installing Rustdesk Server" +if [ "${ARCH}" = "x86_64" ] ; then +wget https://github.com/rustdesk/rustdesk-server-pro/releases/download/1.1.8/rustdesk-server-linux-amd64.zip +unzip rustdesk-server-linux-amd64.zip +mv amd64/* /opt/rustdesk/ +elif [ "${ARCH}" = "armv7l" ] ; then +wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.zip" +unzip rustdesk-server-linux-armv7.zip +mv armv7/* /opt/rustdesk/ +elif [ "${ARCH}" = "aarch64" ] ; then +wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.zip" +unzip rustdesk-server-linux-arm64v8.zip +mv arm64v8/* /opt/rustdesk/ +fi + +chmod +x /opt/rustdesk/hbbs +chmod +x /opt/rustdesk/hbbr + + +# Make Folder /var/log/rustdesk/ +if [ ! -d "/var/log/rustdesk" ]; then + echo "Creating /var/log/rustdesk" + sudo mkdir -p /var/log/rustdesk/ +fi +sudo chown "${uname}" -R /var/log/rustdesk/ + +# Setup Systemd to launch hbbs +rustdesksignal="$(cat << EOF +[Unit] +Description=Rustdesk Signal Server +[Service] +Type=simple +LimitNOFILE=1000000 +ExecStart=/opt/rustdesk/hbbs +WorkingDirectory=/opt/rustdesk/ +User=${uname} +Group=${uname} +Restart=always +StandardOutput=append:/var/log/rustdesk/signalserver.log +StandardError=append:/var/log/rustdesk/signalserver.error +# Restart service after 10 seconds if node service crashes +RestartSec=10 +[Install] +WantedBy=multi-user.target +EOF +)" +echo "${rustdesksignal}" | sudo tee /etc/systemd/system/rustdesksignal.service > /dev/null +sudo systemctl daemon-reload +sudo systemctl enable rustdesksignal.service +sudo systemctl start rustdesksignal.service + +# Setup Systemd to launch hbbr +rustdeskrelay="$(cat << EOF +[Unit] +Description=Rustdesk Relay Server +[Service] +Type=simple +LimitNOFILE=1000000 +ExecStart=/opt/rustdesk/hbbr +WorkingDirectory=/opt/rustdesk/ +User=${uname} +Group=${uname} +Restart=always +StandardOutput=append:/var/log/rustdesk/relayserver.log +StandardError=append:/var/log/rustdesk/relayserver.error +# Restart service after 10 seconds if node service crashes +RestartSec=10 +[Install] +WantedBy=multi-user.target +EOF +)" +echo "${rustdeskrelay}" | sudo tee /etc/systemd/system/rustdeskrelay.service > /dev/null +sudo systemctl daemon-reload +sudo systemctl enable rustdeskrelay.service +sudo systemctl start rustdeskrelay.service + +while ! [[ $CHECK_RUSTDESK_READY ]]; do + CHECK_RUSTDESK_READY=$(sudo systemctl status rustdeskrelay.service | grep "Active: active (running)") + echo -ne "Rustdesk Relay not ready yet...${NC}\n" + sleep 3 +done + +pubname=$(find /opt/rustdesk -name "*.pub") +key=$(cat "${pubname}") + +echo "Tidying up install" +if [ "${ARCH}" = "x86_64" ] ; then +rm rustdesk-server-linux-amd64.zip +rm -rf amd64 +elif [ "${ARCH}" = "armv7l" ] ; then +rm rustdesk-server-linux-armv7.zip +rm -rf armv7 +elif [ "${ARCH}" = "aarch64" ] ; then +rm rustdesk-server-linux-arm64v8.zip +rm -rf arm64v8 +fi + +# Choice for DNS or IP +PS3='Choose your preferred option, IP or DNS/Domain:' +WAN=("IP" "DNS/Domain") +select WANOPT in "${WAN[@]}"; do +case $WANOPT in +"IP") +wanip=$(dig @resolver4.opendns.com myip.opendns.com +short) +ufw allow 21114/tcp + +ufw enable && ufw reload +break +;; + +"DNS/Domain") +echo -ne "Enter your preferred domain/dns address ${NC}: " +read wanip +#check wanip is valid domain +if ! [[ $wanip =~ ^[a-zA-Z0-9]+([a-zA-Z0-9.-]*[a-zA-Z0-9]+)?$ ]]; then + echo -e "${RED}Invalid domain/dns address${NC}" + exit 1 +fi +apt -y install nginx +apt -y install python3-certbot-nginx + +rustdesknginx="$( + cat </dev/null + +rm /etc/nginx/sites-available/default +rm /etc/nginx/sites-enabled/default + +sudo ln -s /etc/nginx/sites-available/rustdesk.conf /etc/nginx/sites-enabled/rustdesk.conf + +ufw allow 80/tcp +ufw allow 443/tcp + +ufw enable && ufw reload + +certbot --nginx -d ${wanip} + +break +;; +*) echo "invalid option $REPLY";; +esac +done + +echo -e "Your IP/DNS Address is ${wanip}" +echo -e "Your public key is ${key}" From b79c90af66f552e764c50cefe3e1520fd5d6268b Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 22:59:54 +0100 Subject: [PATCH 5/8] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f3a876..e9b7756 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # rustdesk-sever-pro Some scripts for RustDesk Server Pro are hosted here. -# Scripts are AGPL the server is not! +# Scripts are AGPL the pro server is not! + +If you are looking for the opensource version please go to [Rustdesk Server](https://github.com/rustdesk/rustdesk-server) From d5f4c17877db6ba03afdf4747cd1d792fb7d5565 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 23:17:21 +0100 Subject: [PATCH 6/8] Create update.sh --- update.sh | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 update.sh diff --git a/update.sh b/update.sh new file mode 100644 index 0000000..a55dfcc --- /dev/null +++ b/update.sh @@ -0,0 +1,112 @@ +#!/bin/bash + +# Get Username +uname=$(whoami) # not used btw .. yet + +# Get current release version +RDLATEST=$(curl https://api.github.com/repos/rustdesk/rustdesk-server-pro/releases/latest -s | grep "tag_name"| awk '{print substr($2, 2, length($2)-3) }' | sed 's/-.*//') +RDCURRENT=$(/opt/rustdesk/hbbr --version | sed -r 's/hbbr (.*)-.*/\1/') + +if [ $RDLATEST == $RDCURRENT ]; then + echo "Same version no need to update." + exit 0 +fi + +sudo systemctl stop rustdesksignal.service +sudo systemctl stop rustdeskrelay.service +sleep 20 + +ARCH=$(uname -m) + +# identify OS +if [ -f /etc/os-release ]; then + # freedesktop.org and systemd + . /etc/os-release + OS=$NAME + VER=$VERSION_ID + UPSTREAM_ID=${ID_LIKE,,} + # Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian' + if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then + UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)" + fi + +elif type lsb_release >/dev/null 2>&1; then + # linuxbase.org + OS=$(lsb_release -si) + VER=$(lsb_release -sr) +elif [ -f /etc/lsb-release ]; then + # For some versions of Debian/Ubuntu without lsb_release command + . /etc/lsb-release + OS=$DISTRIB_ID + VER=$DISTRIB_RELEASE +elif [ -f /etc/debian_version ]; then + # Older Debian/Ubuntu/etc. + OS=Debian + VER=$(cat /etc/debian_version) +elif [ -f /etc/SuSe-release ]; then + # Older SuSE/etc. + OS=SuSE + VER=$(cat /etc/SuSe-release) +elif [ -f /etc/redhat-release ]; then + # Older Red Hat, CentOS, etc. + OS=RedHat + VER=$(cat /etc/redhat-release) +else + # Fall back to uname, e.g. "Linux ", also works for BSD, etc. + OS=$(uname -s) + VER=$(uname -r) +fi + + +# output ebugging info if $DEBUG set +if [ "$DEBUG" = "true" ]; then + echo "OS: $OS" + echo "VER: $VER" + echo "UPSTREAM_ID: $UPSTREAM_ID" + exit 0 +fi + + +if ! [ -e /opt/rustdesk ]; then + echo "No directory /opt/rustdesk found. No update of rustdesk possible (used install.sh script ?) " + exit 4 +else + : +fi + +cd /opt/rustdesk/ + +echo "Upgrading Rustdesk Server" +if [ "${ARCH}" = "x86_64" ] ; then +wget https://github.com/rustdesk/rustdesk-server-pro/releases/download/1.1.8/rustdesk-server-linux-amd64.zip +unzip rustdesk-server-linux-amd64.zip +mv amd64/* /opt/rustdesk/ +rm -rf amd64/ +rm -rf rustdesk-server-linux-amd64.zip +elif [ "${ARCH}" = "armv7l" ] ; then +wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.zip" +unzip rustdesk-server-linux-armv7.zip +mv armv7/* /opt/rustdesk/ +rm -rf armv7/ +rm -rf rustdesk-server-linux-armv7.zip +elif [ "${ARCH}" = "aarch64" ] ; then +wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.zip" +unzip rustdesk-server-linux-arm64v8.zip +mv arm64v8/* /opt/rustdesk/ +rm -rf arm64v8/ +rm -rf rustdesk-server-linux-arm64v8.zip +fi + +chmod +x /opt/rustdesk/hbbs +chmod +x /opt/rustdesk/hbbr + +sudo systemctl start rustdesksignal.service +sudo systemctl start rustdeskrelay.service + +while ! [[ $CHECK_RUSTDESK_READY ]]; do + CHECK_RUSTDESK_READY=$(sudo systemctl status rustdeskrelay.service | grep "Active: active (running)") + echo -ne "Rustdesk Relay not ready yet...${NC}\n" + sleep 3 +done + +echo -e "Updates are complete" From 0340d1eccebeeafaead85737dd31f71f46902a35 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 23:17:26 +0100 Subject: [PATCH 7/8] Update install.sh --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 34896b1..774ac79 100644 --- a/install.sh +++ b/install.sh @@ -110,14 +110,20 @@ if [ "${ARCH}" = "x86_64" ] ; then wget https://github.com/rustdesk/rustdesk-server-pro/releases/download/1.1.8/rustdesk-server-linux-amd64.zip unzip rustdesk-server-linux-amd64.zip mv amd64/* /opt/rustdesk/ +rm -rf amd64/ +rm -rf rustdesk-server-linux-amd64.zip elif [ "${ARCH}" = "armv7l" ] ; then wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.zip" unzip rustdesk-server-linux-armv7.zip mv armv7/* /opt/rustdesk/ +rm -rf armv7/ +rm -rf rustdesk-server-linux-armv7.zip elif [ "${ARCH}" = "aarch64" ] ; then wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.zip" unzip rustdesk-server-linux-arm64v8.zip mv arm64v8/* /opt/rustdesk/ +rm -rf arm64v8/ +rm -rf rustdesk-server-linux-arm64v8.zip fi chmod +x /opt/rustdesk/hbbs From 8fb1731ab558d71985fd66d85023a752f936b542 Mon Sep 17 00:00:00 2001 From: dinger1986 Date: Mon, 3 Jul 2023 23:20:57 +0100 Subject: [PATCH 8/8] Update update.sh --- update.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/update.sh b/update.sh index a55dfcc..a00bc14 100644 --- a/update.sh +++ b/update.sh @@ -75,6 +75,7 @@ else fi cd /opt/rustdesk/ +rm -rf static/ echo "Upgrading Rustdesk Server" if [ "${ARCH}" = "x86_64" ] ; then