Rust desk server установка windows

Уровень сложностиСредний

Время на прочтение5 мин

Количество просмотров30K

RustDesk — приложение для удалённого рабочего стола с открытым исходным кодом, разработанное для самохостинга в качестве альтернативы TeamViewer. Название такое, потому что программа написана на Rust.

Работает из коробки, не требует конфигурации. Если установить сервер синхронизации на своём хостинге, то любые машины в интернете могут синхронизироваться и устанавливать соединение через наш сервер для удалённого управления рабочими столами друг друга. Трафик идёт напрямую между ними, но если это невозможно — тоже через сервер, до 3 Мбит/с (1920×1080).

Клиентское приложение есть для iOS и Android (на КДПВ), что позволяет со смартфона управлять рабочим столом Windows, Linux и MacOS (и наоборот), а также обмениваться файлами. Есть ещё веб-клиент.

Нужно заметить, что серверный компонент RustDesk распространяется с закрытым исходным кодом, что даёт возможность компании взимать плату за его использование (даже на самохостинге, без SaaS). У бесплатной опенсорсной версии ряд ограничений:

В документации описана установка и использование RustDesk в контейнере Docker, на свой сервер под Windows с PM2 или NSSM, на Synology DSM 7.2 и DSM 6, Ubuntu Server, а также Ubuntu Server с Docker. Всё это доступные варианты самохостинга.

Будем устанавливать серверную версию для Ubuntu Server.

Как обычно, выбираем подходящую конфигурацию сервера в конфигураторе RUVDS или из готовых шаблонов. Минималистичные серверы ценой от 139 руб. в месяц находятся в разделе VPS Старт. Для RustDesk такого достаточно:

Аппаратные требования серверного модуля RustDesk очень низкие. В документации сказано, что можно выбирать VPS минимальной конфигурации, а также использовать в качестве сервера Raspberry Pi или другой одноплатник. Что касается канала, то при сбое прямого соединения TCP hole punching трафик пойдёт через сервер ретрансляции. Трафик ретрансляционного соединения составляет от 30 Кбит/с до 3 Мбит/с (разрешение экрана 1920×1080) в зависимости от настроек разрешения и частоты обновления экрана. Для офисной работы достаточно 100 Кбит/с.

На Ubuntu Server есть два способа установки RustDesk: в контейнере Docker или путём обычной установки .deb. Начинающим пользователям рекомендуется использовать контейнер, потому что там достаточно просто скопировать compose.yml, внести некоторые изменения — и всё готово. Свежие контейнеры Docker в репозитории автоматически генерируются при каждом релизе, после чего публикуются в Docker Hub и GitHub Container Registry. Есть два типа контейнеров:

  • классические образы под архитектуры amd64, arm64v8, armv7
  • образы на базе S6-overlay с добавлением бинарных файлов

Но в таком случае минимальной конфигурации VPS будет недостаточно, потому что виртуальной машине на самохостинге нужно минимум 1 ГБ RAM и 32 ГБ места на диске.

▍ Установка скриптом

Что касается простой установки на чистом Linux, то можно использовать специальный инсталляционный скрипт, который проверен под CentOS Linux 7/8, Ubuntu 18/20/22/24 и Debian.

Его мы и используем в первую очередь.

На VPS-сервере после его включения уже установлена операционная система Ubuntu 24.04, а нам выдали IP-адрес и учётные данные для авторизации:

Дальнейший алгоритм действий:

  1. Подключаемся к серверу стандартным способом по SSH:

    Устанавливаем файрвол UFW (стандартный вариант для систем на базе Debian):

    apt-get install ufw

  2. Настраиваем порты файрвола:
    ufw allow 21114:21119/tcp
    ufw allow 8000/tcp
    ufw allow 21116/udp
    sudo ufw enable

    (Теоретически, сначала на файрволе надо открыть порт 22 для SSH, но на нашем VPS от RUVDS он изначально открыт).

  3. Запускаем инсталляционный скрипт:
    wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
    chmod +x install.sh
    ./install.sh

    Скрипт устанавливает все необходимые программы и зависимости, а потом спрашивает о предпочтительном методе подключения к серверу: IP-адрес или домен.

    Выбираем IP-адрес.

    Потом предлагает скачать файлы конфигурации и установить HTTP-сервер:

    Можно согласиться.

  4. Установка сервера завершена с выдачей публичного ключа, админского логина и пароля:

▍ Установка клиентов

Теперь установим RustDesk на клиентские устройства, откуда будет происходить передача и управление рабочим столом. Клиентские устройства подключаются к серверу по указанному IP-адресу, используя его публичный ключ, выданный ранее:

Your IP/DNS Address is 194.87.103.130
Your public key is 1AQBKNnylHs9ZEq32I2Axl51MJtCNp0Reqngdlu4Hvg=
Install Rustdesk on your machines and change your public key and IP/DNS name to the above
You can access your install scripts for clients by going to http://194.87.103.130:8000
Username is admin and password is 5EIpg7IAH07YYujc

Если зайти к себе на сервер по адресу http://194.87.103.130:8000 с админским паролем, то там лежат скрипты для установки клиентов под Linux и Windows, в том числе PowerShell-скрипт WindowsAgentAIOInstall.ps1 для установки клиента RustDesk под Windows.

Запускаем скрипт на исполнение. Под Windows установка занимает десяток секунд, после чего открывается окно для управления рабочим столом:

Дальнейшее понятно. Если нужно управлять удалённым рабочим столом, то вводим удалённый ID. Если наоборот — то здесь же указан ID данного рабочего стола и пароль.

Примечание. Десктопные версии RustDesk используют библиотеку Flutter или Sciter (устаревшую) для GUI, вторую в случае необходимости придётся скачать отдельно: Windows | Linux | macOS.

В репозитории Techahold есть ещё скрипт для обновления RustDesk, он может пригодиться в будущем:

wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/update.sh
chmod +x update.sh
./update.sh

Установка RustDesk на Ubuntu Server, видеоруководство:

▍ Сборка вручную

Инструкции по сборке см. в официальном репозитории rustdesk-server:

cargo build --release

Эта команда генерирует три исполняемых файла:

  • hbbs — сервер RustDesk ID/Rendezvous
  • hbbr — сервер ретрансляции RustDesk
  • rustdesk-utils — консольные утилиты RustDesk

Отдельно распространяются платная версия RustDesk Server Pro и упрощённая демо-версия rustdesk-server-demo, предназначенная для создания собственных реализаций RustDesk.

У платной версии есть ряд дополнительных опций, по сравнению с бесплатной: в том числе веб-консоль (на порту 21114), через которую можно управлять всеми клиентами, где мы установили RustDesk.

В платной версии для самохостинга есть 2FA, контроль доступа, централизованные настройки и функция распределённых рилей-серверов.

▍ Установка из файла

Скачиваем файлы .deb из раздела Download
в официальном репозитории и устанавливаем командой:

apt-get -f install <filename>.deb

или

dpkg -i <filename>.deb

В этом же разделе лежат исполняемые файлы сервера под Linux и Windows, консольные утилиты и проч.

Если возникают проблемы с пробитием файрвола, см. отдельную статью, где описана настройка технологии NAT Loopback на маршрутизаторе и установка локального DNS-сервера.

▍ P2P Remote Desktop

В качестве бонуса можно упомянуть ещё P2P Remote Desktop: P2P-удалённый десктоп, тоже альтернатива TeamViewer/AnyDesk. Эта портативная программа для Windows работает предельно просто: просто копируем рабочий файл p2p.exe на оба компьютера, которые планируется подключить друг к другу.

Затем на одном из компьютеров нужно скопировать My Wan IP (и порт) или My Lan IP — и передать его на второй, а со второго на первый.

Теперь на каждом из узлов указано по два IP-адреса, так что подключаемся: на обоих ПК нажимаем Connect. После установления связи прямой пиринговой можно обмениваться текстовыми сообщениями или управлять рабочим столом удалённого компьютера, для этого предназначена кнопка Desktop.

Для работы используется протокол UDT, и он должен пробивать большинство файрволов.

Наверное, это самая простая программа для удалённого управления рабочим столом, хотя тут тоже используется промежуточный сервер для синхронизации. Тем не менее, это минималистичная и бесплатная программа.

Из других более-менее рабочих опенсорсных альтернатив TeamViewer можно упомянуть Remotely, Screego и MeshCentral+Tactical RMM.

© 2025 ООО «МТ ФИНАНС»

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻

This article discusses how to install and configure the Remote Access Server RustDesk under Windows Server. The guide is written for Windows Server Core but is just as applicable to Windows Server with a GUI.

Introduction

RustDesk is a remote access rendezvous point server which allows a remote support agent to connect to a remote computer remotely while providing screen sharing, remote control and clipboard support. RustDesk is an open source equivalent to the obnoxiously expensive “TeamViewer”, LogMeIn123 and others.

Prerequisites

This article assumes that:

  1. You have a clean install of Windows Server 2016, 2019 or 2022.
  2. You are running on Server Core and wish to do everything via the command line (everything in the guide is fully applicable to Server GUI, and can be executed from the command line or manually using the GUI interfaces where appropriate).
  3. You are running RustDesk on a dedicated server / virtual machine using a dedicated user account
    Note: As of writing, it does not seem possible to run RustDesk as a native Windows Service (it immediately exits out if you try to launch it through a service user account). You must either run it manually as an application within a user account or within a user account via the pm2 process manager. Both methods are outlined below.
  4. You have already configured NAT/PAT port forwards from your router to your virtual machine as appropriate to your environment.
    TCP: 21115, 21116, 21117, 21118, 21119
    UDP: 21116

Installation

  1. Download and install the current version of the Visual C++ Runtime 2015 – 2022 Library for x64 (version 14 is the specific version required).
    Download: Microsoft Visual C++ Runtime
  2. It is recommended that you do not use the default administrator account to run RustDesk. If you do not wish to use the Administrator account, create a dedicated user for RustDesk to run with on your domain or on the local machine (recommended).
    To create a user on the local machine:

    net user <username> <password> /ADD
  3. To add this user to the Administrators group:
    net localgroup Administrators <username> /ADD
  4. Setup automatic logon to Windows by editing and using the following commands (if you are not on a domain, you can omit DefaultDomainName value)
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /t REG_SZ /v "DefaultUserName" /d "Plex" /f
    
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 
    NT\CurrentVersion\Winlogon" /t REG_SZ /v "DefaultPassword" /d 
    "your_password_here" /f
    
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 
    NT\CurrentVersion\Winlogon" /t REG_SZ /v "DefaultDomainName" /d 
    "your_domain_here" /f
    
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /t REG_SZ /v "AutoAdminLogon" /d "1" /f
  5. Create and enable the necessary firewall rules to allow clients to connect to RustDesk. To do this in PowerShell:
    New-NetFirewallRule -Name RustDesk-TCP -DisplayName "RustDesk-TCP" -Description "RustDesk TCP Rules" -Direction Inbound -Protocol TCP -LocalPort 21115-21119 -Action Allow
    New-NetFirewallRule -Name RustDesk-UDP -DisplayName "RustDesk-UDP" -Description "RustDesk UDP Rules" -Direction Inbound -Protocol UDP -LocalPort 21116 -Action Allow
    Enable-NetFirewallRule -Name RustDesk-TCP
    Enable-NetFirewallRule -Name RustDesk-UDP
  6. Download the latest Windows x64 binary of the RustDesk installer
    Download: RustDesk Server
  7. Create the folder C:\Program Files\RustDesk
    mkdir "%ProgramFiles%\RustDesk"
  8. Extract hbbr.exe and hbbs.exe into C:\Program Files\RustDesk

Using node.js & pm2

If you wish to use node.js and pm2 to manage the process within the user account follow this section. If you do not, skip to the next section.

  1. Download and install the current version of node.js*. The basic installation is sufficient (without installing Chocolaty). Once installed, log off and then back in again to refresh your path environment variables on any open command and PowerShell prompts.
    Download: Node.js
  2. Install pm2 process manager by entering the following commands
    npm install -g pm2
    npm install pm2-windows-startup -g
    pm2-startup install
  3. Register the two RustDesk services with pm2
    pm2 start "C:\Program Files\RustDesk\hbbs.exe" -- --relay-servers <RelayServerIpOrFqdn>:21117
    pm2 start "C:\Program Files\RustDesk\hbbr.exe"
    pm2 save

    Note: If you wish to use a key to provide an additional layer of security for your server. change the first line above to:

    pm2 start "C:\Program Files\RustDesk\hbbs.exe" -- --relay-servers <RelayServerIpOrFqdn>:21117 --key <YourKey>
  4. Test using a RustDesk client
    If you made a mistake and need to change the pm2 parameters use the following commands to delete the records

    pm2 delete "C:\Program Files\RustDesk\hbbs.exe"
    pm2 delete "C:\Program Files\RustDesk\hbbr.exe"

    Then re-add the entry(s) as in step 10 and re-save by entering pm2 save.
    To view the process list enter pm2 list

  5. Check that pm2 was successfully able to start the services and to view the current daemon status’ (and use Ctrl + C on the keyboard to close).
    pm2 log hbbr
    pm2 log hbbs

Without using node.js and pm2

If you do not want to use node.js and pm2 to manage your install, you can use my RustDesk Service Scripts to start, stop and restart RustDesk on your server.

Note: The following is only applicable to Server Core. For GUI Windows Server, add a shortcut to C:\Program Files\RustDesk\Start-RustDesk.cmd in the Startup folder or add an entry to the same file under HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

  1. Download my RustDesk tools zip
    Download: RustDesk-Tools (1KB)
  2. Extract the contents of the zip file into C:\Program Files\RustDesk
  3. Use notepad to edit the Start-RustDesk.cmd script file and set the value for the relayServer IP/FQDN to match your environment.
    If you wish to use a key to secure your server, add --key <YourKey> to the end of the hbbs.exe line e.g.

    start "HBBS-RustDesk" /min "%ProgramFiles%\RustDesk\hbbs.exe" --relay-servers %relayServer%:%relayPort% --key <YourKey>
  4. Enter the command:
    reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /t REG_SZ /v "10" /d "C:\Program Files\RustDesk\Start-RustDesk.cmd" /f
  5. Restart the server and RustDesk should automatically load as two minimised windows in the bottom left of the Server Code screen
  6. Test using a RustDesk client


Rustdesk server Install Script

Easy install Script for Rustdesk on linux, should work on any 64bit (32bit arm will install rustdesk server only) debian or centos based system supporting systemd.
For Rustdesk visit https://rustdesk.com

You can use Hetzner to test this with a $20 credit using this referal code https://hetzner.cloud/?ref=p6iUr7jEXmoB

We provide professional hosting and support for RustDesk OSS and RustDesk Pro, please email hello@techahold.com if you need assistance.

How to Install the server

Please setup your firewall on your server prior to running the script.

Make sure you have got access via ssh or otherwise setup prior setting up the firewall, command for UFW is:

ufw allow proto tcp from YOURIP to any port 22

If you have UFW installed use the following commands (you only need port 8000 if you are using the preconfigured install files):

ufw allow 21115:21119/tcp
ufw allow 8000/tcp
ufw allow 21116/udp
sudo ufw enable

Run the following commands:

wget https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh

Choose your preferences from the options given in the script.

Please Note:
If you allow the script to create preconfigured install files (with your IP/DNS and key set) it will install gohttpserver using port 8000 for you to easily download the install scripts.

How to update the server

Run the following commands:

wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/update.sh
chmod +x update.sh
./update.sh

Rustdesk windows powershell install script

Generates a powershell script for install grabbing WAN IP and Key currently in /opt/rustdesk but will be moved to a web url for easy deployment.

Tips

If you want to restart the services use the following commands:

sudo systemctl restart rustdesksignal
sudo systemctl restart rustdeskrelay

Делаем свой удалённый доступ к компьютеру

Ставим RustDesk на компьютер и сервер

Делаем свой удалённый доступ к компьютеру

Обновлено 28.05.2024

medium

Удалённый доступ к компьютеру — это когда вы сидите у себя дома и со своего компьютера управляете чужим: двигаете мышкой, создаёте папки, нажимаете клавиши и т. д. Обычно это нужно для техподдержки: если у родных проблемы с компьютером, но вам не хочется ехать к ним физически. Или если у вас компьютер на работе, а вам нужно получить к нему доступ из дома. 

Программ для удалённого доступа много — недавно мы делали подборку. Проблема в том, что все они работают через чужой сервер. Если он перестанет работать, сервис закроется или решит уйти из России, удалённого управления не будет. Например, из России ушёл сервис TeamViewer — самый популярный сервис удалённого доступа. 

Сегодня мы поднимем собственный сервер удалённого доступа, чтобы ни от кого не зависеть.

Что нам понадобится

Мы будем использовать RustDesk — бесплатную программу с открытым исходным кодом для удалённого управления компьютером. Её можно поставить на свой сервер и компьютеры и ни от кого не зависеть. 

Софт для удалённой работы состоит из двух частей — серверной и клиентской. Серверная часть — это такой виртуальный центр связи, который соединяется с компьютерами и передаёт данные с одного компьютера на другой. Серверная часть ставится на сервере — для этого мы будем использовать учебный сервер для виртуального хранилища. 

Клиентская часть устанавливается и запускается на тех компьютерах, где нам нужен удалённый доступ — для управления или чтобы кто-то смог к нам удалённо подключиться. 

У RustDesk есть и то и другое, поэтому установим всё по очереди.

Устанавливаем серверную часть

Чтобы установить что-то на сервер, нам нужно сначала получить к нему доступ. Чаще всего доступ к серверу настраивают по SSH и работают из командной строки, поэтому мы будем делать точно так же: подключимся к серверу и введём нужные команды.

Идём на официальный гитхаб проекта, берём оттуда скрипт установки серверной части и вставляем его в командную строку сервера:

wget https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/install.sh

chmod +x install.sh

./install.sh

Делаем свой удалённый доступ к компьютеру

Во время установки у нас спросят: IP или DNS — выбираем IP:

Делаем свой удалённый доступ к компьютеру

Дальше скрипт нам предложить скачать HTTP-сервер, который нужен для работы программы. Соглашаемся и вводим 1:

Делаем свой удалённый доступ к компьютеру

Когда всё будет готово, скрипт отдаст нам пароль администратора и публичны ключ — они нам понадобятся в будущем:

Делаем свой удалённый доступ к компьютеру

Вам может быть интересно:

Устанавливаем программу на компьютер

Заходим на официальный сайт RustDesk и скачиваем программу для своей операционной системы. Мы зашли на сайт с макбука, поэтому нам сразу предложили скачать версию для MacOS:

Делаем свой удалённый доступ к компьютеру

После запуска программа сразу предлагает настроить разрешение на снимки экрана и универсальный доступ (в Windows такого нет, там с этим всё проще):

Делаем свой удалённый доступ к компьютеру

Нажимаем «Настроить», заходим в системные настройки, нажимаем замочек внизу и ставим галочку напротив RustDesk:

Делаем свой удалённый доступ к компьютеру

Теперь укажем адрес нашей серверной части, которую мы установили раньше. Для этого нажимаем на три точки, выбираем «ID/Сервер трансляции» и вводим там IP-адрес нашего сервера. Он совпадает с адресом, по которому мы подключались по SSH, а ещё этот адрес сообщаем нам сам сервер при установке:

Делаем свой удалённый доступ к компьютеру

То, что подчеркнуто красным, — сохраните
Делаем свой удалённый доступ к компьютеру

Также в поле Key нужно будет добавить то, что было сказано в Your Public Key. Если этого не сделать, то при попытке подключения будет ругаться на ключи доступа

Внизу сразу меняется статус подключения на «Готово» — это значит, что сервер и клиент нашли друг друга и готовы работать вместе.

Теперь точно так же устанавливаем и настраиваем эту программу на том компьютере, которым мы хотим удалённо управлять. После этого на одном из них вводим ID другого, нажимаем «Подключиться»:

Делаем свой удалённый доступ к компьютеру

Вёрстка:

Кирилл Климентьев

#!/bin/bash

# Get user options

while getopts i:: option; do

    case «${option}» in

        )

            case «${OPTARG}» in

                help)

                    help=«true»;;

                resolveip)

                    resolveip=«true»;;

                resolvedns)

                    val=«${!OPTIND}»; OPTIND=$(( $OPTIND + 1 ))

                    resolvedns=${val};;

                installhttp)

                    http=«true»;;

                skiphttp)

                    http=«false»;;

            esac;;

        i) resolveip=«true»;;

    esac

done

function displayhelp() {

    if [[ ! z $help ]]; then

        echo ‘usage: install.sh —resolveip —resolvedns «fqdn»‘

        echo «options:»

        echo «—resolveip    Use IP for server name.  Cannot use in combination with —resolvedns or -d»

        echo ‘—resolvedns «fqdn»    Use FQDN for server name.  Cannot use in combination with —resolveip or -i’

        echo «—install-http    Install http server to host installation scripts.  Cannot use in combination with —skip-http or -n»

        echo «—skip-http    Skip installation of http server.  Cannot use in combination with —install-http or -h»

        exit 0

    fi

}

displayhelp

# Get Username

uname=$(whoami)

admintoken=$(head /dev/urandom | tr dc AZaz09 | head c16)

ARCH=$(uname m)

# identify OS

if [ f /etc/osrelease ]; then

    # freedesktop.org and systemd

    . /etc/osrelease

    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/lsbrelease ]; then

    # For some versions of Debian/Ubuntu without lsb_release command

    . /etc/lsbrelease

    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/SuSerelease ]; then

    # Older SuSE/etc.

    OS=SuSE

    VER=$(cat /etc/SuSerelease)

elif [ f /etc/redhatrelease ]; then

    # Older Red Hat, CentOS, etc.

    OS=RedHat

    VER=$(cat /etc/redhatrelease)

else

    # Fall back to uname, e.g. «Linux <version>», also works for BSD, etc.

    OS=$(uname s)

    VER=$(uname r)

fi

# output debugging 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»

PREREQRPM=«bind-utils»

PREREQARCH=«bind»

echo «Installing prerequisites»

if [ «${ID}» = «debian» ] || [ «$OS» = «Ubuntu» ] || [ «$OS» = «Debian» ]  || [ «${UPSTREAM_ID}» = «ubuntu» ] || [ «${UPSTREAM_ID}» = «debian» ]; then

    sudo aptget update

    sudo aptget 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»

    # give them the option to continue

    echo n «Would you like to continue? Dependencies may not be satisfied… [y/n] «

    read continue_no_dependencies

    if [ $continue_no_dependencies == «y» ]; then

        echo «Continuing…»

    elif [ $continue_no_dependencies != «n» ]; then

        echo «Invalid answer, exiting.»

        exit 1

    else

        exit 1

    fi

fi

# Choice for DNS or IP

if [[ z «$resolveip» && z «$resolvedns» ]]; then

    PS3=‘Choose your preferred connection method: auto-resolve current WAN IP or enter your DNS/Domain:’

    WAN=(«IP» «DNS/Domain»)

    select WANOPT in «${WAN[@]}»; do

    case $WANOPT in

    «IP»)

    wanip=$(dig @resolver4.opendns.com myip.opendns.com +short)

    break

    ;;

    «DNS/Domain»)

    echo ne «Enter your preferred domain/dns address ${NC}: «

    read wanip

    #check wanip is valid domain

    if ! [[ $wanip =~ ^[azAZ09]+([azAZ09.]*[azAZ09]+)?$ ]]; then

        echo e «${RED}Invalid domain/dns address${NC}»

        exit 1

    fi

    break

    ;;

    *) echo «invalid option $REPLY»;;

    esac

    done

elif [[ ! z «$resolveip» && ! z «$resolvedns» ]]; then

    echo e «\nERROR: You cannot use both —resolveip & —resolvedns options simultaneously»

    exit 1

elif [[ ! z «$resolveip» && z «$resolvedns» ]]; then

    wanip=$(dig @resolver4.opendns.com myip.opendns.com +short)

elif [[ z «$resolveip» && ! z «$resolvedns» ]]; then

    wanip=«$resolvedns»

    if ! [[ $wanip =~ ^[azAZ09]+([azAZ09.]*[azAZ09]+)?$ ]]; then

        echo e «${RED}Invalid domain/dns address${NC}»

        exit 1

    fi

fi

# 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/rustdeskserver/releases/latest s | grep «tag_name» | awk F‘»‘ ‘{print $4}’)

echo «Installing Rustdesk Server»

if [ «${ARCH}» = «x86_64» ] ; then

wget «https://github.com/rustdesk/rustdesk-server/releases/download/${RDLATEST}/rustdesk-server-linux-amd64.zip»

unzip rustdeskserverlinuxamd64.zip

mv amd64/* /opt/rustdesk/

elif [ «${ARCH}» = «armv7l» ] ; then

wget «https://github.com/rustdesk/rustdesk-server/releases/download/${RDLATEST}/rustdesk-server-linux-armv7.zip»

unzip rustdeskserverlinuxarmv7.zip

mv armv7/* /opt/rustdesk/

elif [ «${ARCH}» = «aarch64» ] ; then

wget «https://github.com/rustdesk/rustdesk-server/releases/download/${RDLATEST}/rustdesk-server-linux-arm64v8.zip»

unzip rustdeskserverlinuxarm64v8.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 k _

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=multiuser.target

EOF

)«

echo «${rustdesksignal}» | sudo tee /etc/systemd/system/rustdesksignal.service > /dev/null

sudo systemctl daemonreload

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 k _

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=multiuser.target

EOF

)«

echo «${rustdeskrelay}» | sudo tee /etc/systemd/system/rustdeskrelay.service > /dev/null

sudo systemctl daemonreload

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 rustdeskserverlinuxamd64.zip

rm rf amd64

elif [ «${ARCH}» = «armv7l» ] ; then

rm rustdeskserverlinuxarmv7.zip

rm rf armv7

elif [ «${ARCH}» = «aarch64» ] ; then

rm rustdeskserverlinuxarm64v8.zip

rm rf arm64v8

fi

echo «Grabbing installers»

string=«{\»host\»:\»${wanip}\»,\»key\»:\»${key}\»,\»api\»:\»https://${wanip}\»}»

string64=$(echo n «$string» | base64 w 0 | tr d ‘=’)

string64rev=$(echo n «$string64» | rev)

echo «$string64rev»

function setuphttp () {

    # Create windows install script

    wget https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/WindowsAgentAIOInstall.ps1

    sudo sed i «s|secure-string|${string64rev}|g» WindowsAgentAIOInstall.ps1

    # Create linux install script

    wget https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/linuxclientinstall.sh

    sudo sed i «s|secure-string|${string64rev}|g» linuxclientinstall.sh

    # Download and install gohttpserver

    # Make Folder /opt/gohttp/

    if [ ! d «/opt/gohttp» ]; then

        echo «Creating /opt/gohttp»

        sudo mkdir p /opt/gohttp/

        sudo mkdir p /opt/gohttp/public

    fi

    sudo chown «${uname}» R /opt/gohttp

    cd /opt/gohttp

    GOHTTPLATEST=$(curl https://api.github.com/repos/codeskyblue/gohttpserver/releases/latest s | grep «tag_name»| awk ‘{print substr($2, 2, length($2)-3) }’)

    echo «Installing Go HTTP Server»

    if [ «${ARCH}» = «x86_64» ] ; then

    wget «https://github.com/codeskyblue/gohttpserver/releases/download/${GOHTTPLATEST}/gohttpserver_${GOHTTPLATEST}_linux_amd64.tar.gz»

    tar xf  gohttpserver_${GOHTTPLATEST}_linux_amd64.tar.gz

    elif [ «${ARCH}» =  «aarch64» ] ; then

    wget «https://github.com/codeskyblue/gohttpserver/releases/download/${GOHTTPLATEST}/gohttpserver_${GOHTTPLATEST}_linux_arm64.tar.gz»

    tar xf  gohttpserver_${GOHTTPLATEST}_linux_arm64.tar.gz

    elif [ «${ARCH}» = «armv7l» ] ; then

    echo «Go HTTP Server not supported on 32bit ARM devices»

    echo e «Your IP/DNS Address is ${wanip}»

    echo e «Your public key is ${key}»

    exit 1

    fi

    # Copy Rustdesk install scripts to folder

    mv /opt/rustdesk/WindowsAgentAIOInstall.ps1 /opt/gohttp/public/

    mv /opt/rustdesk/linuxclientinstall.sh /opt/gohttp/public/

    # Make gohttp log folders

    if [ ! d «/var/log/gohttp» ]; then

        echo «Creating /var/log/gohttp»

        sudo mkdir p /var/log/gohttp/

    fi

    sudo chown «${uname}» R /var/log/gohttp/

    echo «Tidying up Go HTTP Server Install»

    if [ «${ARCH}» = «x86_64» ] ; then

    rm gohttpserver_«${GOHTTPLATEST}»_linux_amd64.tar.gz

    elif [ «${ARCH}» = «armv7l» ] || [ «${ARCH}» =  «aarch64» ]; then

    rm gohttpserver_«${GOHTTPLATEST}»_linux_arm64.tar.gz

    fi

    # Setup Systemd to launch Go HTTP Server

    gohttpserver=«$(cat << EOF

[Unit]

Description=Go HTTP Server

[Service]

Type=simple

LimitNOFILE=1000000

ExecStart=/opt/gohttp/gohttpserver r ./public port 8000 authtype http authhttp admin:${admintoken}

WorkingDirectory=/opt/gohttp/

User=${uname}

Group=${uname}

Restart=always

StandardOutput=append:/var/log/gohttp/gohttpserver.log

StandardError=append:/var/log/gohttp/gohttpserver.error

# Restart service after 10 seconds if node service crashes

RestartSec=10

[Install]

WantedBy=multiuser.target

EOF

)«

    echo «${gohttpserver}» | sudo tee /etc/systemd/system/gohttpserver.service > /dev/null

    sudo systemctl daemonreload

    sudo systemctl enable gohttpserver.service

    sudo systemctl start gohttpserver.service

    echo e «Your IP/DNS Address is ${wanip}»

    echo e «Your public key is ${key}»

    echo e «Install Rustdesk on your machines and change your public key and IP/DNS name to the above»

    echo e «You can access your install scripts for clients by going to http://${wanip}:8000»

    echo e «Username is admin and password is ${admintoken}»

    if [[ z «$http» ]]; then

        echo «Press any key to finish install»

        while [ true ] ; do

        read t 3 n 1

        if [ $? = 0 ] ; then

        exit ;

        else

        echo «waiting for the keypress»

        fi

        done

        break

    fi

}

# Choice for Extras installed

if [[ z «$http» ]]; then

    PS3=‘Please choose if you want to download configs and install HTTP server:’

    EXTRA=(«Yes» «No»)

    select EXTRAOPT in «${EXTRA[@]}»; do

    case $EXTRAOPT in

    «Yes»)

    setuphttp

    break

    ;;

    «No»)

    echo e «Your IP/DNS Address is ${wanip}»

    echo e «Your public key is ${key}»

    echo e «Install Rustdesk on your machines and change your public key and IP/DNS name to the above»

    echo e «You can get a free API with Addressbook etc via https://github.com/infiniteremote/installer»

    echo «Press any key to finish install»

    while [ true ] ; do

    read t 3 n 1

    if [ $? = 0 ] ; then

    exit ;

    else

    echo «waiting for the keypress»

    fi

    done

    break

    ;;

    *) echo «invalid option $REPLY»;;

    esac

    done

elif [ «$http» = «true» ]; then

    setuphttp

elif [ «$http» = «false» ]; then

    echo e «Your IP/DNS Address is ${wanip}»

    echo e «Your public key is ${key}»

    echo e «Install Rustdesk on your machines and change your public key and IP/DNS name to the above»

    echo e «You can get a free API with Addressbook etc via https://github.com/infiniteremote/installer»

fi

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 применить path без перезагрузки
  • Запуск игр на эмуляторе windows
  • Автозагрузка в windows 10 где находится как убрать или добавить программы
  • Vegas pro windows vista
  • Lsi megaraid утилита windows