intendent properly

This commit is contained in:
Daniel Hansson
2023-10-02 14:53:47 +02:00
committed by GitHub
parent 4a70bb3540
commit 97a4c12fa1

View File

@@ -16,7 +16,8 @@ export admintoken
ARCH=$(uname -m) ARCH=$(uname -m)
# Identify OS # Identify OS
if [ -f /etc/os-release ]; then if [ -f /etc/os-release ]
then
# freedesktop.org and systemd # freedesktop.org and systemd
# shellcheck source=/dev/null # shellcheck source=/dev/null
source /etc/os-release source /etc/os-release
@@ -25,29 +26,35 @@ if [ -f /etc/os-release ]; then
UPSTREAM_ID=${ID_LIKE,,} UPSTREAM_ID=${ID_LIKE,,}
# Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian' # Fallback to ID_LIKE if ID was not 'ubuntu' or 'debian'
if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]
then
UPSTREAM_ID="$(echo "${ID_LIKE,,}" | sed s/\"//g | cut -d' ' -f1)" UPSTREAM_ID="$(echo "${ID_LIKE,,}" | sed s/\"//g | cut -d' ' -f1)"
fi fi
elif type lsb_release >/dev/null 2>&1; then elif type lsb_release >/dev/null 2>&1
then
# linuxbase.org # linuxbase.org
OS=$(lsb_release -si) OS=$(lsb_release -si)
VER=$(lsb_release -sr) VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then elif [ -f /etc/lsb-release ]
then
# For some versions of Debian/Ubuntu without lsb_release command # For some versions of Debian/Ubuntu without lsb_release command
# shellcheck source=/dev/null # shellcheck source=/dev/null
source /etc/os-release source /etc/os-release
OS=$DISTRIB_ID OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then elif [ -f /etc/debian_version ]
then
# Older Debian, Ubuntu, etc. # Older Debian, Ubuntu, etc.
OS=Debian OS=Debian
VER=$(cat /etc/debian_version) VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSE-release ]; then elif [ -f /etc/SuSE-release ]
then
# Older SuSE, etc. # Older SuSE, etc.
OS=SuSE OS=SuSE
VER=$(cat /etc/SuSE-release) VER=$(cat /etc/SuSE-release)
elif [ -f /etc/redhat-release ]; then elif [ -f /etc/redhat-release ]
then
# Older Red Hat, CentOS, etc. # Older Red Hat, CentOS, etc.
OS=RedHat OS=RedHat
VER=$(cat /etc/redhat-release) VER=$(cat /etc/redhat-release)
@@ -59,7 +66,8 @@ fi
# Output debugging info if $DEBUG set # Output debugging info if $DEBUG set
if [ "$DEBUG" = "true" ]; then if [ "$DEBUG" = "true" ]
then
echo "OS: $OS" echo "OS: $OS"
echo "VER: $VER" echo "VER: $VER"
echo "UPSTREAM_ID: $UPSTREAM_ID" echo "UPSTREAM_ID: $UPSTREAM_ID"
@@ -74,16 +82,19 @@ PREREQRPM=(bind-utils)
PREREQARCH=(bind) PREREQARCH=(bind)
echo "Installing prerequisites" echo "Installing prerequisites"
if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]
then
sudo apt-get update sudo apt-get update
sudo apt-get install -y "${PREREQ[@]}" "${PREREQDEB[@]}" # git sudo apt-get install -y "${PREREQ[@]}" "${PREREQDEB[@]}" # git
elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "${OS}" = "Almalinux" ] || [ "${UPSTREAM_ID}" = "Rocky*" ] ; then elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "${OS}" = "Almalinux" ] || [ "${UPSTREAM_ID}" = "Rocky*" ]
then
# openSUSE 15.4 fails to run the relay service and hangs waiting for it # openSUSE 15.4 fails to run the relay service and hangs waiting for it
# Needs more work before it can be enabled # Needs more work before it can be enabled
# || [ "${UPSTREAM_ID}" = "suse" ] # || [ "${UPSTREAM_ID}" = "suse" ]
sudo yum update -y sudo yum update -y
sudo yum install -y "${PREREQ[@]}" "${PREREQRPM[@]}" # git sudo yum install -y "${PREREQ[@]}" "${PREREQRPM[@]}" # git
elif [ "${ID}" = "arch" ] || [ "${UPSTREAM_ID}" = "arch" ]; then elif [ "${ID}" = "arch" ] || [ "${UPSTREAM_ID}" = "arch" ]
then
sudo pacman -Syu sudo pacman -Syu
sudo pacman -S "${PREREQ[@]}" "${PREREQARCH[@]}" sudo pacman -S "${PREREQ[@]}" "${PREREQARCH[@]}"
else else
@@ -101,7 +112,8 @@ sudo ufw allow 21116/udp
sudo ufw enable sudo ufw enable
# Make folder /var/lib/rustdesk-server/ # Make folder /var/lib/rustdesk-server/
if [ ! -d "/var/lib/rustdesk-server" ]; then if [ ! -d "/var/lib/rustdesk-server" ]
then
echo "Creating /var/lib/rustdesk-server" echo "Creating /var/lib/rustdesk-server"
sudo mkdir -p /var/lib/rustdesk-server/ sudo mkdir -p /var/lib/rustdesk-server/
fi fi
@@ -109,43 +121,44 @@ fi
sudo chown "${usern}" -R /var/lib/rustdesk-server sudo chown "${usern}" -R /var/lib/rustdesk-server
cd /var/lib/rustdesk-server/ || exit 1 cd /var/lib/rustdesk-server/ || exit 1
# Download latest version of RustDesk # 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) }') 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" echo "Installing RustDesk Server"
if [ "${ARCH}" = "x86_64" ] ; then if [ "${ARCH}" = "x86_64" ]
wget https://github.com/rustdesk/rustdesk-server-pro/releases/download/"${RDLATEST}"/rustdesk-server-linux-amd64.tar.gz then
tar -xf rustdesk-server-linux-amd64.tar.gz wget https://github.com/rustdesk/rustdesk-server-pro/releases/download/"${RDLATEST}"/rustdesk-server-linux-amd64.tar.gz
mv amd64/static /var/lib/rustdesk-server/ tar -xf rustdesk-server-linux-amd64.tar.gz
sudo mv amd64/hbbr /usr/bin/ mv amd64/static /var/lib/rustdesk-server/
sudo mv amd64/hbbs /usr/bin/ sudo mv amd64/hbbr /usr/bin/
rm -rf amd64/ sudo mv amd64/hbbs /usr/bin/
rm -rf rustdesk-server-linux-amd64.tar.gz rm -rf amd64/
elif [ "${ARCH}" = "armv7l" ] ; then rm -rf rustdesk-server-linux-amd64.tar.gz
wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.tar.gz" elif [ "${ARCH}" = "armv7l" ]
tar -xf rustdesk-server-linux-armv7.tar.gz then
mv armv7/static /var/lib/rustdesk-server/ wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.tar.gz"
sudo mv armv7/hbbr /usr/bin/ tar -xf rustdesk-server-linux-armv7.tar.gz
sudo mv armv7/hbbs /usr/bin/ mv armv7/static /var/lib/rustdesk-server/
rm -rf armv7/ sudo mv armv7/hbbr /usr/bin/
rm -rf rustdesk-server-linux-armv7.tar.gz sudo mv armv7/hbbs /usr/bin/
rm -rf armv7/
rm -rf rustdesk-server-linux-armv7.tar.gz
elif [ "${ARCH}" = "aarch64" ] ; then elif [ "${ARCH}" = "aarch64" ] ; then
wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.tar.gz" wget "https://github.com/rustdesk/rustdesk-server-pro/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.tar.gz"
tar -xf rustdesk-server-linux-arm64v8.tar.gz tar -xf rustdesk-server-linux-arm64v8.tar.gz
mv arm64v8/static /var/lib/rustdesk-server/ mv arm64v8/static /var/lib/rustdesk-server/
sudo mv arm64v8/hbbr /usr/bin/ sudo mv arm64v8/hbbr /usr/bin/
sudo mv arm64v8/hbbs /usr/bin/ sudo mv arm64v8/hbbs /usr/bin/
rm -rf arm64v8/ rm -rf arm64v8/
rm -rf rustdesk-server-linux-arm64v8.tar.gz rm -rf rustdesk-server-linux-arm64v8.tar.gz
fi fi
sudo chmod +x /usr/bin/hbbs sudo chmod +x /usr/bin/hbbs
sudo chmod +x /usr/bin/hbbr sudo chmod +x /usr/bin/hbbr
# Make folder /var/log/rustdesk-server/ # Make folder /var/log/rustdesk-server/
if [ ! -d "/var/log/rustdesk-server" ]; then if [ ! -d "/var/log/rustdesk-server" ]
then
echo "Creating /var/log/rustdesk-server" echo "Creating /var/log/rustdesk-server"
sudo mkdir -p /var/log/rustdesk-server/ sudo mkdir -p /var/log/rustdesk-server/
fi fi
@@ -217,15 +230,18 @@ pubname=$(find /var/lib/rustdesk-server/ -name "*.pub")
key=$(cat "${pubname}") key=$(cat "${pubname}")
echo "Tidying up install" echo "Tidying up install"
if [ "${ARCH}" = "x86_64" ] ; then if [ "${ARCH}" = "x86_64" ]
rm rustdesk-server-linux-amd64.zip then
rm -rf amd64 rm rustdesk-server-linux-amd64.zip
elif [ "${ARCH}" = "armv7l" ] ; then rm -rf amd64
rm rustdesk-server-linux-armv7.zip elif [ "${ARCH}" = "armv7l" ]
rm -rf armv7 then
elif [ "${ARCH}" = "aarch64" ] ; then rm rustdesk-server-linux-armv7.zip
rm rustdesk-server-linux-arm64v8.zip rm -rf armv7
rm -rf arm64v8 elif [ "${ARCH}" = "aarch64" ]
then
rm rustdesk-server-linux-arm64v8.zip
rm -rf arm64v8
fi fi
# Choice for DNS or IP # Choice for DNS or IP
@@ -245,23 +261,27 @@ break
echo -ne "Enter your preferred domain/DNS address ${NC}: " echo -ne "Enter your preferred domain/DNS address ${NC}: "
read -r wanip read -r wanip
# Check wanip is valid domain # Check wanip is valid domain
if ! [[ $wanip =~ ^[a-zA-Z0-9]+([a-zA-Z0-9.-]*[a-zA-Z0-9]+)?$ ]]; then if ! [[ $wanip =~ ^[a-zA-Z0-9]+([a-zA-Z0-9.-]*[a-zA-Z0-9]+)?$ ]]
then
echo -e "${RED}Invalid domain/DNS address${NC}" echo -e "${RED}Invalid domain/DNS address${NC}"
exit 1 exit 1
fi fi
echo "Installing nginx" echo "Installing nginx"
if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]
then
sudo apt -y install nginx sudo apt -y install nginx
apt -y install snapd apt -y install snapd
snap install certbot --classic snap install certbot --classic
elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "${OS}" = "Almalinux" ] || [ "${UPSTREAM_ID}" = "Rocky*" ] ; then elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "${OS}" = "Almalinux" ] || [ "${UPSTREAM_ID}" = "Rocky*" ]
then
# openSUSE 15.4 fails to run the relay service and hangs waiting for it # openSUSE 15.4 fails to run the relay service and hangs waiting for it
# Needs more work before it can be enabled # Needs more work before it can be enabled
# || [ "${UPSTREAM_ID}" = "suse" ] # || [ "${UPSTREAM_ID}" = "suse" ]
sudo yum -y install nginx sudo yum -y install nginx
sudo yum -y install python3-certbot-nginx sudo yum -y install python3-certbot-nginx
elif [ "${ID}" = "arch" ] || [ "${UPSTREAM_ID}" = "arch" ]; then elif [ "${ID}" = "arch" ] || [ "${UPSTREAM_ID}" = "arch" ]
then
sudo pacman -S install nginx sudo pacman -S install nginx
sudo pacman -S install python3-certbot-nginx sudo pacman -S install python3-certbot-nginx
else else
@@ -295,7 +315,6 @@ sudo ln -s /etc/nginx/sites-available/rustdesk.conf /etc/nginx/sites-enabled/rus
sudo ufw allow 80/tcp sudo ufw allow 80/tcp
sudo ufw allow 443/tcp sudo ufw allow 443/tcp
sudo ufw enable && ufw reload sudo ufw enable && ufw reload
sudo certbot --nginx --cert-name "${wanip}" --key-type ecdsa --renew-by-default --no-eff-email --agree-tos --server https://acme-v02.api.letsencrypt.org/directory -d "${wanip}" sudo certbot --nginx --cert-name "${wanip}" --key-type ecdsa --renew-by-default --no-eff-email --agree-tos --server https://acme-v02.api.letsencrypt.org/directory -d "${wanip}"