Skip to content

Commit d372b45

Browse files
authored
Add Alpine-RustDesk Server script (#7191)
* Add RustDesk server * VED>VE
1 parent df564ac commit d372b45

File tree

3 files changed

+207
-0
lines changed

3 files changed

+207
-0
lines changed

ct/alpine-rustdeskserver.sh

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/usr/bin/env bash
2+
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: Slaviša Arežina (tremor021)
5+
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
6+
# Source: https://github.com/rustdesk/rustdesk-server
7+
8+
APP="Alpine-RustDeskServer"
9+
var_tags="${var_tags:-alpine;monitoring}"
10+
var_cpu="${var_cpu:-1}"
11+
var_ram="${var_ram:-512}"
12+
var_disk="${var_disk:-3}"
13+
var_os="${var_os:-alpine}"
14+
var_version="${var_version:-3.22}"
15+
var_unprivileged="${var_unprivileged:-1}"
16+
17+
header_info "$APP"
18+
variables
19+
color
20+
catch_errors
21+
22+
function update_script() {
23+
header_info
24+
if [[ ! -d /opt/rustdesk-server ]]; then
25+
msg_error "No ${APP} Installation Found!"
26+
exit 1
27+
fi
28+
29+
APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
30+
RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
31+
if [ "${RELEASE}" != "$(cat ~/.rustdesk-server 2>/dev/null)" ] || [ ! -f ~/.rustdesk-server ]; then
32+
msg_info "Updating RustDesk Server to v${RELEASE}"
33+
$STD apk -U upgrade
34+
$STD service rustdesk-server-hbbs stop
35+
$STD service rustdesk-server-hbbr stop
36+
temp_file1=$(mktemp)
37+
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
38+
$STD unzip "$temp_file1"
39+
cp -r amd64/* /opt/rustdesk-server/
40+
echo "${RELEASE}" >~/.rustdesk-server
41+
$STD service rustdesk-server-hbbs start
42+
$STD service rustdesk-server-hbbr start
43+
rm -rf amd64
44+
rm -f $temp_file1
45+
msg_ok "Updated RustDesk Server successfully"
46+
else
47+
msg_ok "No update required. ${APP} is already at v${RELEASE}"
48+
fi
49+
if [ "${APIRELEASE}" != "$(cat ~/.rustdesk-api)" ] || [ ! -f ~/.rustdesk-api ]; then
50+
msg_info "Updating RustDesk API to v${APIRELEASE}"
51+
$STD service rustdesk-api stop
52+
temp_file2=$(mktemp)
53+
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2"
54+
$STD tar zxvf "$temp_file2"
55+
cp -r release/* /opt/rustdesk-api
56+
echo "${APIRELEASE}" >~/.rustdesk-api
57+
$STD service rustdesk-api start
58+
rm -rf release
59+
rm -f $temp_file2
60+
msg_ok "Updated RustDesk API"
61+
else
62+
msg_ok "No update required. RustDesk API is already at v${APIRELEASE}"
63+
fi
64+
exit 0
65+
}
66+
67+
start
68+
build_container
69+
description
70+
71+
msg_ok "Completed Successfully!\n"
72+
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
73+
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
74+
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:21114${CL}"

frontend/public/json/rustdeskserver.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@
2525
"os": "debian",
2626
"version": "12"
2727
}
28+
},
29+
{
30+
"type": "alpine",
31+
"script": "ct/alpine-rustdeskserver.sh",
32+
"resources": {
33+
"cpu": 1,
34+
"ram": 512,
35+
"hdd": 2,
36+
"os": "alpine",
37+
"version": "3.22"
38+
}
2839
}
2940
],
3041
"default_credentials": {
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: Slaviša Arežina (tremor021)
5+
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
6+
# Source: https://github.com/rustdesk/rustdesk-server
7+
8+
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
9+
color
10+
verb_ip6
11+
catch_errors
12+
setting_up_container
13+
network_check
14+
update_os
15+
16+
RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
17+
msg_info "Installing RustDesk Server v${RELEASE}"
18+
temp_file1=$(mktemp)
19+
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
20+
$STD unzip "$temp_file1"
21+
mv amd64 /opt/rustdesk-server
22+
mkdir -p /root/.config/rustdesk
23+
cd /opt/rustdesk-server
24+
./rustdesk-utils genkeypair > /tmp/rustdesk_keys.txt
25+
grep "Public Key" /tmp/rustdesk_keys.txt | awk '{print $3}' > /root/.config/rustdesk/id_ed25519.pub
26+
grep "Secret Key" /tmp/rustdesk_keys.txt | awk '{print $3}' > /root/.config/rustdesk/id_ed25519
27+
chmod 600 /root/.config/rustdesk/id_ed25519
28+
chmod 644 /root/.config/rustdesk/id_ed25519.pub
29+
rm /tmp/rustdesk_keys.txt
30+
echo "${RELEASE}" >~/.rustdesk-server
31+
msg_ok "Installed RustDesk Server v${RELEASE}"
32+
33+
APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
34+
msg_info "Installing RustDesk API v${APIRELEASE}"
35+
temp_file2=$(mktemp)
36+
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2"
37+
$STD tar zxvf "$temp_file2"
38+
mv release /opt/rustdesk-api
39+
cd /opt/rustdesk-api
40+
ADMINPASS=$(head -c 16 /dev/urandom | xxd -p -c 16)
41+
$STD ./apimain reset-admin-pwd "$ADMINPASS"
42+
{
43+
echo "RustDesk WebUI"
44+
echo ""
45+
echo "Username: admin"
46+
echo "Password: $ADMINPASS"
47+
} >>~/rustdesk.creds
48+
echo "${APIRELEASE}" >~/.rustdesk-api
49+
msg_ok "Installed RustDesk API v${APIRELEASE}"
50+
51+
msg_info "Enabling RustDesk Server Services"
52+
cat <<EOF >/etc/init.d/rustdesk-server-hbbs
53+
#!/sbin/openrc-run
54+
description="RustDesk HBBS Service"
55+
directory="/opt/rustdesk-server"
56+
command="/opt/rustdesk-server/hbbs"
57+
command_args=""
58+
command_background="true"
59+
command_user="root"
60+
pidfile="/var/run/rustdesk-server-hbbs.pid"
61+
output_log="/var/log/rustdesk-hbbs.log"
62+
error_log="/var/log/rustdesk-hbbs.err"
63+
64+
depend() {
65+
use net
66+
}
67+
EOF
68+
69+
cat <<EOF >/etc/init.d/rustdesk-server-hbbr
70+
#!/sbin/openrc-run
71+
description="RustDesk HBBR Service"
72+
directory="/opt/rustdesk-server"
73+
command="/opt/rustdesk-server/hbbr"
74+
command_args=""
75+
command_background="true"
76+
command_user="root"
77+
pidfile="/var/run/rustdesk-server-hbbr.pid"
78+
output_log="/var/log/rustdesk-hbbr.log"
79+
error_log="/var/log/rustdesk-hbbr.err"
80+
81+
depend() {
82+
use net
83+
}
84+
EOF
85+
86+
cat <<EOF >/etc/init.d/rustdesk-api
87+
#!/sbin/openrc-run
88+
description="RustDesk API Service"
89+
directory="/opt/rustdesk-api"
90+
command="/opt/rustdesk-api/apimain"
91+
command_args=""
92+
command_background="true"
93+
command_user="root"
94+
pidfile="/var/run/rustdesk-api.pid"
95+
output_log="/var/log/rustdesk-api.log"
96+
error_log="/var/log/rustdesk-api.err"
97+
98+
depend() {
99+
use net
100+
}
101+
EOF
102+
chmod +x /etc/init.d/rustdesk-server-hbbs
103+
chmod +x /etc/init.d/rustdesk-server-hbbr
104+
chmod +x /etc/init.d/rustdesk-api
105+
$STD rc-update add rustdesk-server-hbbs default
106+
$STD rc-update add rustdesk-server-hbbr default
107+
$STD rc-update add rustdesk-api default
108+
msg_ok "Enabled RustDesk Server Services"
109+
110+
msg_info "Starting RustDesk Server"
111+
$STD service rustdesk-server-hbbs start
112+
$STD service rustdesk-server-hbbr start
113+
$STD service rustdesk-api start
114+
msg_ok "Started RustDesk Server"
115+
116+
motd_ssh
117+
customize
118+
119+
msg_info "Cleaning up"
120+
rm -f "$temp_file1" "$temp_file2"
121+
$STD apk cache clean
122+
msg_ok "Cleaned"

0 commit comments

Comments
 (0)