Skip to content

Commit a03dd43

Browse files
Migrate yt-dlp-webui to ProxmoxVE (#3364)
* 'Add new script' * Update yt-dlp-webui-install.sh * Update yt-dlp-webui.sh * Update yt-dlp-webui.json --------- Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> Co-authored-by: Tobias <[email protected]>
1 parent 42f376c commit a03dd43

File tree

3 files changed

+213
-0
lines changed

3 files changed

+213
-0
lines changed

ct/yt-dlp-webui.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env bash
2+
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: CrazyWolf13
5+
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
6+
# Source: https://github.com/marcopiovanello/yt-dlp-web-ui
7+
8+
APP="yt-dlp-webui"
9+
var_tags="downloads;yt-dlp"
10+
var_cpu="2"
11+
var_ram="1024"
12+
var_disk="4"
13+
var_os="debian"
14+
var_version="12"
15+
var_unprivileged="1"
16+
17+
header_info "$APP"
18+
variables
19+
color
20+
catch_errors
21+
22+
function update_script() {
23+
header_info
24+
check_container_storage
25+
check_container_resources
26+
if [[ ! -f /usr/local/bin/yt-dlp-webui ]]; then
27+
msg_error "No ${APP} Installation Found!"
28+
exit
29+
fi
30+
31+
msg_info "Updating yt-dlp"
32+
$STD yt-dlp -U
33+
msg_ok "Updated yt-dlp"
34+
RELEASE=$(curl -s https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
35+
if [[ "${RELEASE}" != "$(cat /opt/yt-dlp-webui_version.txt)" ]] || [[ ! -f /opt/yt-dlp-webui_version.txt ]]; then
36+
37+
msg_info "Stopping $APP"
38+
systemctl stop yt-dlp-webui
39+
msg_ok "Stopped $APP"
40+
41+
msg_info "Updating $APP to v${RELEASE}"
42+
rm -rf /usr/local/bin/yt-dlp-webui
43+
wget -q "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -O /usr/local/bin/yt-dlp-webui
44+
chmod +x /usr/local/bin/yt-dlp-webui
45+
msg_ok "Updated $APP LXC"
46+
47+
msg_info "Starting $APP"
48+
systemctl start yt-dlp-webui
49+
msg_ok "Started $APP"
50+
else
51+
msg_ok "No update required. ${APP} is already at v${RELEASE}"
52+
fi
53+
exit
54+
}
55+
56+
start
57+
build_container
58+
description
59+
60+
msg_ok "Completed Successfully!\n"
61+
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
62+
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
63+
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3033${CL}"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"name": "yt-dlp-webui",
3+
"slug": "yt-dlp-webui",
4+
"categories": [
5+
14
6+
],
7+
"date_created": "2025-03-21",
8+
"type": "ct",
9+
"updateable": true,
10+
"privileged": false,
11+
"interface_port": 3033,
12+
"documentation": "https://github.com/marcopiovanello/yt-dlp-web-ui",
13+
"website": "https://github.com/marcopiovanello/yt-dlp-web-ui",
14+
"logo": "https://raw.githubusercontent.com/marcopiovanello/yt-dlp-web-ui/refs/heads/master/frontend/src/assets/favicon.ico",
15+
"description": "A not so terrible web ui for yt-dlp.\nHigh performance extendeable web ui and RPC server for yt-dlp with low impact on resources.\nCreated for the only purpose of fetching videos from my server/nas and monitor upcoming livestreams.",
16+
"install_methods": [
17+
{
18+
"type": "default",
19+
"script": "ct/yt-dlp-webui.sh",
20+
"resources": {
21+
"cpu": 2,
22+
"ram": 1024,
23+
"hdd": 4,
24+
"os": "Debian",
25+
"version": "12"
26+
}
27+
}
28+
],
29+
"default_credentials": {
30+
"username": "admin",
31+
"password": null
32+
},
33+
"notes": [
34+
{
35+
"text": "Show password: `cat ~/yt-dlp-webui.creds`",
36+
"type": "info"
37+
},
38+
{
39+
"text": "The config file is located in `/opt/yt-dlp-webui/config.conf`",
40+
"type": "info"
41+
},
42+
{
43+
"text": "Make sure to either mount an external path or increase the Disk space afterwards",
44+
"type": "info"
45+
}
46+
]
47+
}

install/yt-dlp-webui-install.sh

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright (c) 2021-2025 community-scripts ORG
4+
# Author: CrazyWolf13
5+
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
6+
# Source: https://github.com/marcopiovanello/yt-dlp-web-ui
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+
msg_info "Installing Dependencies"
17+
$STD apt-get install -y \
18+
sudo \
19+
mc \
20+
curl \
21+
ffmpeg
22+
msg_ok "Installed Dependencies"
23+
24+
msg_info "Installing ${APPLICATION}"
25+
RELEASE=$(curl -s https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
26+
wget -q "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -O /usr/local/bin/yt-dlp-webui
27+
chmod +x /usr/local/bin/yt-dlp-webui
28+
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
29+
msg_ok "Installed ${APPLICATION}"
30+
31+
msg_info "Installing yt-dlp"
32+
wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
33+
chmod a+rx /usr/local/bin/yt-dlp
34+
msg_ok "Installed yt-dlp"
35+
36+
msg_info "Setting up ${APPLICATION}"
37+
mkdir -p /opt/yt-dlp-webui
38+
mkdir /downloads
39+
RPC_PASSWORD=$(openssl rand -base64 16)
40+
{
41+
echo "yt-dlp-webui-Credentials"
42+
echo "Username: admin"
43+
echo "Password: ${RPC_PASSWORD}"
44+
} >> ~/yt-dlp-webui.creds
45+
46+
cat <<EOF > /opt/yt-dlp-webui/config.conf
47+
# Host where server will listen at (default: "0.0.0.0")
48+
#host: 0.0.0.0
49+
50+
# Port where server will listen at (default: 3033)
51+
port: 3033
52+
53+
# Directory where downloaded files will be stored (default: ".")
54+
downloadPath: /downloads
55+
56+
# [optional] Enable RPC authentication (requires username and password)
57+
require_auth: true
58+
username: admin
59+
password: ${RPC_PASSWORD}
60+
61+
# [optional] The download queue size (default: logical cpu cores)
62+
queue_size: 4 # min. 2
63+
64+
# [optional] Full path to the yt-dlp (default: "yt-dlp")
65+
downloaderPath: /usr/local/bin/yt-dlp
66+
67+
# [optional] Enable file based logging with rotation (default: false)
68+
#enable_file_logging: false
69+
70+
# [optional] Directory where the log file will be stored (default: ".")
71+
#log_path: .
72+
73+
# [optional] Directory where the session database file will be stored (default: ".")
74+
#session_file_path: .
75+
76+
# [optional] Path where the sqlite database will be created/opened (default: "./local.db")
77+
#local_database_path
78+
79+
# [optional] Path where a custom frontend will be loaded (instead of the embedded one)
80+
#frontend_path: ./web/solid-frontend
81+
EOF
82+
83+
cat <<EOF > /etc/systemd/system/yt-dlp-webui.service
84+
[Unit]
85+
Description=yt-dlp-webui service file
86+
After=network.target
87+
88+
[Service]
89+
ExecStart=/usr/local/bin/yt-dlp-webui --conf /opt/yt-dlp-webui/config.conf
90+
91+
[Install]
92+
WantedBy=multi-user.target
93+
EOF
94+
systemctl enable -q --now yt-dlp-webui
95+
msg_ok "Set up ${APPLICATION}"
96+
97+
motd_ssh
98+
customize
99+
100+
msg_info "Cleaning up"
101+
$STD apt-get -y autoremove
102+
$STD apt-get -y autoclean
103+
msg_ok "Cleaned"

0 commit comments

Comments
 (0)