mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-25 11:02:01 -04:00
Compare commits
26 Commits
fix/trek-5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1dee4473eb | ||
|
|
cbefc8590e | ||
|
|
193659402e | ||
|
|
ff2645698a | ||
|
|
359fd5d01a | ||
|
|
43ec20463e | ||
|
|
507b5a1556 | ||
|
|
469da44126 | ||
|
|
b0a39be6c0 | ||
|
|
ecf5376265 | ||
|
|
6717059b8c | ||
|
|
ef0579b39d | ||
|
|
80cc9edf9c | ||
|
|
c50aa2dfe3 | ||
|
|
e045557655 | ||
|
|
bedc06d73f | ||
|
|
74c8ba79fa | ||
|
|
4dd47de8ff | ||
|
|
31560bceba | ||
|
|
d2053aaf6b | ||
|
|
264386a338 | ||
|
|
7595fbf0fe | ||
|
|
714dd4d739 | ||
|
|
f52c8e1ea4 | ||
|
|
6018a31dd1 | ||
|
|
ac51382b21 |
19
CHANGELOG.md
19
CHANGELOG.md
@@ -579,6 +579,16 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Element Synapse: remove the registration line by its text, not line 34 [@MickLesk](https://github.com/MickLesk) ([#18201](https://github.com/community-scripts/ProxmoxVE/pull/18201))
|
||||
- Element Synapse: drop the ::1 listener so a container without IPv6 starts [@MickLesk](https://github.com/MickLesk) ([#18180](https://github.com/community-scripts/ProxmoxVE/pull/18180))
|
||||
- Heimdall: generate the app key without the production prompt [@MickLesk](https://github.com/MickLesk) ([#18156](https://github.com/community-scripts/ProxmoxVE/pull/18156))
|
||||
- Frigate: fetch the Intel graphics key with retries before building the media driver [@MickLesk](https://github.com/MickLesk) ([#18192](https://github.com/community-scripts/ProxmoxVE/pull/18192))
|
||||
- Pterodactyl Panel: default the admin's first and last name when left empty [@MickLesk](https://github.com/MickLesk) ([#18177](https://github.com/community-scripts/ProxmoxVE/pull/18177))
|
||||
- Jellyseerr: point fresh installs to Seerr instead of a missing install script [@MickLesk](https://github.com/MickLesk) ([#18183](https://github.com/community-scripts/ProxmoxVE/pull/18183))
|
||||
- Pi-hole: download the installer before running it [@MickLesk](https://github.com/MickLesk) ([#18182](https://github.com/community-scripts/ProxmoxVE/pull/18182))
|
||||
- OmniTools: give the build a git commit to read [@MickLesk](https://github.com/MickLesk) ([#18181](https://github.com/community-scripts/ProxmoxVE/pull/18181))
|
||||
- iVentoy: stop early in an unprivileged container [@MickLesk](https://github.com/MickLesk) ([#18179](https://github.com/community-scripts/ProxmoxVE/pull/18179))
|
||||
- Immich: stop early on Debian 12 instead of failing at apt [@MickLesk](https://github.com/MickLesk) ([#18178](https://github.com/community-scripts/ProxmoxVE/pull/18178))
|
||||
- paperless-ngx: fix missing index folder [@Segelzwerg](https://github.com/Segelzwerg) ([#18142](https://github.com/community-scripts/ProxmoxVE/pull/18142))
|
||||
- Anytype Server: keep the .env across updates and recreate a lost one [@MickLesk](https://github.com/MickLesk) ([#18155](https://github.com/community-scripts/ProxmoxVE/pull/18155))
|
||||
- changedetection: build Browserless from its lockfile on update [@MickLesk](https://github.com/MickLesk) ([#18157](https://github.com/community-scripts/ProxmoxVE/pull/18157))
|
||||
@@ -589,6 +599,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- Gramps-Web: run the Celery task queue with Redis [@MickLesk](https://github.com/MickLesk) ([#18141](https://github.com/community-scripts/ProxmoxVE/pull/18141))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- tubearchivist: fix: prepare tubearchivist for v0.6.0 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#17867](https://github.com/community-scripts/ProxmoxVE/pull/17867))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- TREK: build 5.0 with 4 GB RAM and without dependency install scripts [@MickLesk](https://github.com/MickLesk) ([#18194](https://github.com/community-scripts/ProxmoxVE/pull/18194))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- alpine: fix uv release url [@mfelipe](https://github.com/mfelipe) ([core#168](https://github.com/community-scripts/core/pull/168))
|
||||
@@ -599,6 +617,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- post-pmg-install: hide the subscription nag in the PMG 9 mobile quarantine [@MickLesk](https://github.com/MickLesk) ([#18140](https://github.com/community-scripts/ProxmoxVE/pull/18140))
|
||||
- post-pve-install: hide the mobile subscription nag in every UI language [@MickLesk](https://github.com/MickLesk) ([#18143](https://github.com/community-scripts/ProxmoxVE/pull/18143))
|
||||
|
||||
## 2026-10-24
|
||||
|
||||
@@ -96,6 +96,12 @@ EOF
|
||||
exit
|
||||
}
|
||||
|
||||
if [[ ! -d /opt/jellyseerr ]]; then
|
||||
msg_error "Jellyseerr is now Seerr and can no longer be installed with this script."
|
||||
msg_warn "Install Seerr instead: https://community-scripts.org/scripts/seerr"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
@@ -34,12 +34,15 @@ function update_script() {
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "omnitools" "iib0011/omni-tools"; then
|
||||
ensure_dependencies git
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "omnitools" "iib0011/omni-tools" "tarball"
|
||||
|
||||
msg_info "Building OmniTools"
|
||||
cd /opt/omnitools
|
||||
export HUSKY=0
|
||||
$STD npm ci --allow-remote=all
|
||||
$STD git init -q
|
||||
$STD git -c user.name=build -c user.email=build@localhost commit -q --allow-empty -m build
|
||||
$STD npm run build
|
||||
msg_ok "Built OmniTools"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_
|
||||
APP="TREK"
|
||||
var_tags="${var_tags:-travel;planning;collaboration}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
@@ -43,6 +43,7 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
ensure_dependencies "libkitinerary-bin"
|
||||
ln -sf "$(find /usr/lib -name kitinerary-extractor -type f | head -1)" /usr/local/bin/kitinerary-extractor
|
||||
|
||||
create_backup /opt/trek/server/.env \
|
||||
/opt/trek/data \
|
||||
@@ -52,7 +53,7 @@ function update_script() {
|
||||
|
||||
msg_info "Building TREK"
|
||||
cd /opt/trek
|
||||
$STD npm ci
|
||||
$STD npm ci --ignore-scripts
|
||||
$STD npm run build --workspace=shared
|
||||
$STD npm run build --workspace=client
|
||||
$STD npm run build --workspace=server
|
||||
@@ -72,7 +73,7 @@ function update_script() {
|
||||
|
||||
rm -rf /opt/trek/node_modules
|
||||
cd /opt/trek
|
||||
$STD npm ci --workspace=server --omit=dev
|
||||
$STD npm ci --workspace=server --omit=dev --ignore-scripts
|
||||
msg_ok "Set up TREK Workspace"
|
||||
|
||||
if [[ "$MIGRATION" == "1" ]]; then
|
||||
|
||||
@@ -71,6 +71,41 @@ EOF
|
||||
|
||||
restore_backup
|
||||
|
||||
if grep -q '^TA_BACKEND_PORT=' /opt/tubearchivist/.env 2>/dev/null; then
|
||||
msg_info "Migrating to v0.6.0 (dropping Nginx)"
|
||||
systemctl disable -q --now nginx
|
||||
$STD apt autoremove --purge -y nginx
|
||||
sed -i 's/^TA_BACKEND_PORT=.*/TA_PORT=8000/' /opt/tubearchivist/.env
|
||||
cat <<'RUNEOF' >/opt/tubearchivist/backend/run.sh
|
||||
#!/bin/bash
|
||||
set -e
|
||||
cd /opt/tubearchivist/backend
|
||||
set -a
|
||||
source /opt/tubearchivist/.env
|
||||
set +a
|
||||
PYTHON=/opt/tubearchivist/.venv/bin/python
|
||||
|
||||
echo "Waiting for ElasticSearch..."
|
||||
for i in $(seq 1 30); do
|
||||
if curl -sf http://localhost:9200/_cluster/health >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
$PYTHON manage.py ta_stop_on_error
|
||||
$PYTHON manage.py migrate
|
||||
$PYTHON manage.py collectstatic --noinput -c
|
||||
$PYTHON manage.py ta_envcheck
|
||||
$PYTHON manage.py ta_connection
|
||||
$PYTHON manage.py ta_startup
|
||||
|
||||
exec $PYTHON backend_start.py
|
||||
RUNEOF
|
||||
chmod +x /opt/tubearchivist/backend/run.sh
|
||||
msg_ok "Migrated to v0.6.0 (dropping Nginx)"
|
||||
fi
|
||||
|
||||
msg_info "Rebuilding Tube Archivist"
|
||||
cd /opt/tubearchivist/frontend
|
||||
$STD npm install
|
||||
@@ -113,7 +148,6 @@ EOF
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start bgutil-provider tubearchivist tubearchivist-celery tubearchivist-beat
|
||||
systemctl reload nginx
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
@@ -128,3 +162,5 @@ msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:8000${CL}"
|
||||
echo -e "${INFO}${YW}Admin credentials saved to ~/tubearchivist.creds${CL}"
|
||||
echo -e "${INFO}${YW}The WebUI may take a couple of minutes to become available on first start, while Elasticsearch and the backend initialize.${CL}"
|
||||
|
||||
@@ -40,7 +40,7 @@ chmod +x /usr/sbin/policy-rc.d
|
||||
$STD apt install matrix-synapse-py3 -y
|
||||
rm -f /usr/sbin/policy-rc.d
|
||||
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml
|
||||
sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml
|
||||
sed -i '/^ *- ::1$/d' /etc/matrix-synapse/homeserver.yaml
|
||||
SECRET=$(openssl rand -hex 32)
|
||||
ADMIN_PASS="$(random_password 13)"
|
||||
echo "enable_registration_without_verification: true" >>/etc/matrix-synapse/homeserver.yaml
|
||||
@@ -71,7 +71,7 @@ Admin username: admin
|
||||
Admin password: $ADMIN_PASS
|
||||
EOF
|
||||
systemctl stop matrix-synapse
|
||||
sed -i '34d' /etc/matrix-synapse/homeserver.yaml
|
||||
sed -i '/^enable_registration_without_verification: true$/d' /etc/matrix-synapse/homeserver.yaml
|
||||
systemctl start matrix-synapse
|
||||
msg_ok "Installed Element Synapse"
|
||||
|
||||
|
||||
@@ -124,6 +124,8 @@ msg_ok "Built SQLite Extensions"
|
||||
|
||||
if [[ "$(arch_resolve)" == "amd64" ]]; then
|
||||
msg_info "Building Intel Media Driver (Patience)"
|
||||
download_gpg_key "https://repositories.intel.com/gpu/intel-graphics.key" "/usr/share/keyrings/intel-graphics.gpg" "dearmor"
|
||||
sed -i '/intel-graphics.key/d' /opt/frigate/docker/main/build_intel_media_driver.sh
|
||||
$STD bash /opt/frigate/docker/main/build_intel_media_driver.sh
|
||||
cp -a /rootfs/. /
|
||||
rm -rf /rootfs
|
||||
|
||||
@@ -25,7 +25,7 @@ msg_info "Setting up Heimdall-Dashboard"
|
||||
cd /opt/Heimdall
|
||||
cp .env.example .env
|
||||
sed -i 's/^APP_ENV=.*/APP_ENV=production/' .env
|
||||
$STD php artisan key:generate
|
||||
$STD php artisan key:generate --force
|
||||
msg_ok "Setup Heimdall-Dashboard"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -13,6 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
if is_debian && [[ "$(get_os_version_major)" -lt 13 ]]; then
|
||||
msg_error "Immich needs Debian 13: its build dependencies and Intel runtime packages are not available on Debian 12."
|
||||
exit 238
|
||||
fi
|
||||
|
||||
RELEASE="v3.3.5"
|
||||
if lscpu | grep -q 'GenuineIntel'; then
|
||||
echo ""
|
||||
|
||||
@@ -13,6 +13,12 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
if [[ "${CTTYPE:-1}" != "0" ]]; then
|
||||
msg_error "iVentoy requires a privileged LXC container."
|
||||
msg_error "Recreate the container with unprivileged=0."
|
||||
exit 10
|
||||
fi
|
||||
|
||||
fetch_and_deploy_gh_release "iventoy" "ventoy/PXE" "prebuild" "latest" "/opt/iventoy" "iventoy-*-linux-$(arch_resolve x86_64-free arm64-trial).tar.gz"
|
||||
mkdir -p /opt/iventoy/{data,iso}
|
||||
|
||||
|
||||
@@ -14,7 +14,9 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y nginx
|
||||
$STD apt install -y \
|
||||
git \
|
||||
nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
@@ -24,6 +26,8 @@ msg_info "Building OmniTools"
|
||||
cd /opt/omnitools
|
||||
export HUSKY=0
|
||||
$STD npm ci --allow-remote=all
|
||||
$STD git init -q
|
||||
$STD git -c user.name=build -c user.email=build@localhost commit -q --allow-empty -m build
|
||||
$STD npm run build
|
||||
msg_ok "Built OmniTools"
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ msg_ok "Installed Dependencies"
|
||||
msg_info "Installing Pi-hole"
|
||||
mkdir -p /etc/pihole
|
||||
touch /etc/pihole/pihole.toml
|
||||
$STD bash <(curl -fsSL https://install.pi-hole.net) --unattended
|
||||
curl_with_retry "https://install.pi-hole.net" /tmp/pihole-install.sh
|
||||
$STD bash /tmp/pihole-install.sh --unattended
|
||||
rm -f /tmp/pihole-install.sh
|
||||
sed -i -E '
|
||||
/^\s*upstreams =/ s|=.*|= ["8.8.8.8", "8.8.4.4"]|
|
||||
/^\s*interface =/ s|=.*|= "eth0"|
|
||||
|
||||
@@ -51,11 +51,11 @@ ADMIN_EMAIL="${var_pterodactyl_panel_admin_email:-}"
|
||||
[[ -n "$ADMIN_EMAIL" ]] || read -r -p "${TAB3}Provide an email address for admin login, this should be a valid email address: " ADMIN_EMAIL || true
|
||||
[[ -n "$ADMIN_EMAIL" ]] || { msg_error "No admin email given; set var_pterodactyl_panel_admin_email or answer the prompt"; exit 64; }
|
||||
NAME_FIRST="${var_pterodactyl_panel_first_name:-}"
|
||||
[[ -n "$NAME_FIRST" ]] || read -r -p "${TAB3}Enter your First Name: " NAME_FIRST || true
|
||||
[[ -n "$NAME_FIRST" ]] || { msg_error "No first name given; set var_pterodactyl_panel_first_name or answer the prompt"; exit 64; }
|
||||
[[ -n "$NAME_FIRST" ]] || read -r -p "${TAB3}Enter your First Name [Admin]: " NAME_FIRST || true
|
||||
NAME_FIRST="${NAME_FIRST:-Admin}"
|
||||
NAME_LAST="${var_pterodactyl_panel_last_name:-}"
|
||||
[[ -n "$NAME_LAST" ]] || read -r -p "${TAB3}Enter your Last Name: " NAME_LAST || true
|
||||
[[ -n "$NAME_LAST" ]] || { msg_error "No last name given; set var_pterodactyl_panel_last_name or answer the prompt"; exit 64; }
|
||||
[[ -n "$NAME_LAST" ]] || read -r -p "${TAB3}Enter your Last Name [User]: " NAME_LAST || true
|
||||
NAME_LAST="${NAME_LAST:-User}"
|
||||
|
||||
fetch_and_deploy_gh_release "pterodactyl-panel" "pterodactyl/panel" "prebuild" "latest" "/opt/pterodactyl-panel" "panel.tar.gz"
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
libkitinerary-bin
|
||||
ln -sf "$(find /usr/lib -name kitinerary-extractor -type f | head -1)" /usr/local/bin/kitinerary-extractor
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
@@ -24,7 +25,7 @@ fetch_and_deploy_gh_release "trek" "liketrek/TREK" "tarball"
|
||||
|
||||
msg_info "Setup TREK"
|
||||
cd /opt/trek
|
||||
$STD npm ci
|
||||
$STD npm ci --ignore-scripts
|
||||
$STD npm run build --workspace=shared
|
||||
$STD npm run build --workspace=client
|
||||
$STD npm run build --workspace=server
|
||||
@@ -43,13 +44,16 @@ mkdir -p \
|
||||
/opt/trek/uploads/files \
|
||||
/opt/trek/uploads/covers \
|
||||
/opt/trek/uploads/avatars \
|
||||
/opt/trek/uploads/photos
|
||||
/opt/trek/uploads/photos \
|
||||
/opt/trek/uploads/journey \
|
||||
/opt/trek/uploads/places
|
||||
rm -rf /opt/trek/server/data
|
||||
rm -rf /opt/trek/server/uploads
|
||||
ln -s /opt/trek/data /opt/trek/server/data
|
||||
ln -s /opt/trek/uploads /opt/trek/server/uploads
|
||||
rm -rf /opt/trek/node_modules
|
||||
cd /opt/trek
|
||||
$STD npm prune --omit=dev
|
||||
$STD npm ci --workspace=server --omit=dev --ignore-scripts
|
||||
msg_ok "Set up TREK Workspace"
|
||||
|
||||
msg_info "Configuring TREK"
|
||||
|
||||
@@ -17,7 +17,6 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
git \
|
||||
nginx \
|
||||
redis-server \
|
||||
atomicparsley \
|
||||
python3-dev \
|
||||
@@ -107,7 +106,7 @@ cat <<EOF >/opt/tubearchivist/.env
|
||||
TA_HOST=http://${LOCAL_IP}:8000
|
||||
TA_USERNAME=admin
|
||||
TA_PASSWORD=${TA_PASSWORD}
|
||||
TA_BACKEND_PORT=8080
|
||||
TA_PORT=8000
|
||||
TA_APP_DIR=/opt/tubearchivist/backend
|
||||
TA_CACHE_DIR=/cache
|
||||
TA_MEDIA_DIR=/youtube
|
||||
@@ -133,92 +132,6 @@ msg_info "Installing yt-dlp Nightly"
|
||||
$STD uv pip install --python /opt/tubearchivist/.venv/bin/python -U --prerelease allow "yt-dlp[default]"
|
||||
msg_ok "Installed yt-dlp Nightly"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
sed -i 's/^user www-data;$/user root;/' /etc/nginx/nginx.conf
|
||||
cat <<'EOF' >/etc/nginx/sites-available/default
|
||||
server {
|
||||
listen 8000;
|
||||
|
||||
location = /_auth {
|
||||
internal;
|
||||
proxy_pass http://localhost:8080/api/ping/;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header Cookie $http_cookie;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
location /cache/videos/ {
|
||||
auth_request /_auth;
|
||||
alias /cache/videos/;
|
||||
}
|
||||
|
||||
location /cache/channels/ {
|
||||
auth_request /_auth;
|
||||
alias /cache/channels/;
|
||||
}
|
||||
|
||||
location /cache/playlists/ {
|
||||
auth_request /_auth;
|
||||
alias /cache/playlists/;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
auth_request /_auth;
|
||||
alias /youtube/;
|
||||
types {
|
||||
text/vtt vtt;
|
||||
}
|
||||
}
|
||||
|
||||
location /youtube/ {
|
||||
auth_request /_auth;
|
||||
alias /youtube/;
|
||||
types {
|
||||
video/mp4 mp4;
|
||||
}
|
||||
}
|
||||
|
||||
location /api {
|
||||
include proxy_params;
|
||||
proxy_pass http://localhost:8080;
|
||||
}
|
||||
|
||||
location /admin {
|
||||
include proxy_params;
|
||||
proxy_pass http://localhost:8080;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
alias /opt/tubearchivist/backend/staticfiles/;
|
||||
}
|
||||
|
||||
root /opt/tubearchivist/backend/static;
|
||||
index index.html;
|
||||
|
||||
location ~* ^/(?!static/|cache/).*\.(?:css|js|png|jpg|jpeg|gif|ico|svg|woff2?)$ {
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
|
||||
location = /index.html {
|
||||
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
||||
add_header Pragma "no-cache";
|
||||
expires 0;
|
||||
}
|
||||
|
||||
location / {
|
||||
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
||||
add_header Pragma "no-cache";
|
||||
expires 0;
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
systemctl enable -q nginx
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<'RUNEOF' >/opt/tubearchivist/backend/run.sh
|
||||
#!/bin/bash
|
||||
@@ -237,6 +150,7 @@ for i in $(seq 1 30); do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
$PYTHON manage.py ta_stop_on_error
|
||||
$PYTHON manage.py migrate
|
||||
$PYTHON manage.py collectstatic --noinput -c
|
||||
$PYTHON manage.py ta_envcheck
|
||||
|
||||
@@ -314,21 +314,54 @@ EOF
|
||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \
|
||||
"Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
|
||||
msg_info "Disabling subscription nag"
|
||||
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
|
||||
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi"; };
|
||||
EOF
|
||||
mkdir -p /usr/local/bin
|
||||
cat >/usr/local/bin/pmg-remove-nag.sh <<'EOF'
|
||||
#!/bin/sh
|
||||
WEB_JS=/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
|
||||
if [ -s "$WEB_JS" ] && ! grep -q NoMoreNagging "$WEB_JS"; then
|
||||
sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' "$WEB_JS"
|
||||
fi
|
||||
|
||||
cat >/etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile <<'EOF'
|
||||
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; fi"; };
|
||||
MOBILE_JS=/usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js
|
||||
if [ -s "$MOBILE_JS" ] && ! grep -q NoMoreNagging "$MOBILE_JS"; then
|
||||
sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' "$MOBILE_JS"
|
||||
fi
|
||||
|
||||
MOBILE_TPL=/usr/share/pmg-mobile-quarantine-ui/pmg-mobile-index.html.tt
|
||||
if [ -s "$MOBILE_TPL" ] && ! grep -q NoMoreNagging "$MOBILE_TPL"; then
|
||||
sed -i '/<head>/r /dev/stdin' "$MOBILE_TPL" <<'HTML'
|
||||
<script>
|
||||
// NoMoreNagging
|
||||
const nativeFetch = window.fetch.bind(window);
|
||||
window.fetch = async (...args) => {
|
||||
const res = await nativeFetch(...args);
|
||||
if (!String(args[0]?.url ?? args[0]).includes('/nodes/localhost/subscription')) return res;
|
||||
const body = await res.clone().json().catch(() => null);
|
||||
if (!body?.data) return res;
|
||||
body.data.status = 'active';
|
||||
return new Response(JSON.stringify(body), { status: res.status, headers: res.headers });
|
||||
};
|
||||
</script>
|
||||
HTML
|
||||
fi
|
||||
EOF
|
||||
chmod 755 /usr/local/bin/pmg-remove-nag.sh
|
||||
|
||||
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
|
||||
DPkg::Post-Invoke { "/usr/local/bin/pmg-remove-nag.sh"; };
|
||||
EOF
|
||||
rm -f /etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile
|
||||
msg_ok "Disabled subscription nag (clear browser cache!)"
|
||||
;;
|
||||
no)
|
||||
msg_error "Selected no to Disabling subscription nag"
|
||||
rm -f /etc/apt/apt.conf.d/no-nag-script 2>/dev/null
|
||||
rm -f /etc/apt/apt.conf.d/no-nag-script /etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile /usr/local/bin/pmg-remove-nag.sh
|
||||
;;
|
||||
esac
|
||||
apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null || msg_error "Widget toolkit reinstall failed"
|
||||
if dpkg -s pmg-mobile-quarantine-ui &>/dev/null; then
|
||||
apt --reinstall install pmg-mobile-quarantine-ui &>/dev/null || msg_error "Mobile quarantine UI reinstall failed"
|
||||
fi
|
||||
|
||||
# ---- UPDATE ----
|
||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --menu \
|
||||
|
||||
Reference in New Issue
Block a user