Files
telegram-web-proxy/clean-vps/install-with-panel.sh
T
2026-08-29 13:06:55 +04:00

76 lines
3.2 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
umask 077
# Verified bootstrapper for WEB PANEL PROXY v2.0.2.
# Installs the Telegram WEB proxy plus a private management panel.
readonly PANEL_VERSION="v2.0.2"
readonly ARCHIVE_URL="https://github.com/POLESNIESOVETI12/web-panel-proxy/archive/refs/tags/${PANEL_VERSION}.zip"
readonly ARCHIVE_SHA256="ac2258323b71bde13eb45314a0a70449561774697c5e4d3603791e459c55e7bb"
WORK_DIR=""
die() { printf '\nERROR: %s\n' "$*" >&2; exit 1; }
cleanup() { [[ -z "${WORK_DIR}" || ! -d "${WORK_DIR}" ]] || rm -rf -- "${WORK_DIR}"; }
trap cleanup EXIT
[[ "${EUID}" -eq 0 ]] || die "Run as root: sudo bash install-with-panel.sh"
[[ "$(uname -m)" == "x86_64" ]] || die "An x86_64 VPS is required."
[[ -r /etc/os-release ]] || die "Cannot identify the operating system."
# shellcheck disable=SC1091
source /etc/os-release
case "${ID:-}" in
ubuntu) dpkg --compare-versions "${VERSION_ID:-0}" ge 22.04 || die "Ubuntu 22.04+ is required." ;;
debian) dpkg --compare-versions "${VERSION_ID:-0}" ge 12 || die "Debian 12+ is required." ;;
*) die "Supported systems: Ubuntu 22.04+ or Debian 12+." ;;
esac
export DEBIAN_FRONTEND=noninteractive
if ! command -v curl >/dev/null 2>&1 || ! command -v unzip >/dev/null 2>&1; then
apt-get -o DPkg::Lock::Timeout=600 update
apt-get -o DPkg::Lock::Timeout=600 install -y --no-install-recommends curl unzip ca-certificates
fi
command -v sha256sum >/dev/null 2>&1 || die "sha256sum is required."
WORK_DIR="$(mktemp -d /tmp/telegram-web-panel.XXXXXXXX)"
ARCHIVE="${WORK_DIR}/panel.zip"
printf '\n==> Downloading WEB PANEL PROXY %s\n' "${PANEL_VERSION}"
curl --fail --silent --show-error --location \
--proto '=https' --proto-redir '=https' --tlsv1.2 \
--output "${ARCHIVE}" "${ARCHIVE_URL}"
ACTUAL_SHA256="$(sha256sum "${ARCHIVE}" | awk '{print $1}')"
[[ "${ACTUAL_SHA256}" == "${ARCHIVE_SHA256}" ]] ||
die "Downloaded archive checksum mismatch; installation was not started."
unzip -q "${ARCHIVE}" -d "${WORK_DIR}/source"
SOURCE_DIR="${WORK_DIR}/source/web-panel-proxy-${PANEL_VERSION#v}"
for file in install-final.sh install-webproxy-core.sh install-panel.sh uninstall-web-proxy.sh; do
[[ -s "${SOURCE_DIR}/${file}" ]] || die "Installation package is incomplete: ${file}"
done
chmod 0700 "${SOURCE_DIR}"/*.sh
printf '%s\n' \
"" \
"The installer will ask for:" \
" 1. proxy hostname (A record must already point to this VPS);" \
" 2. certificate email;" \
" 3. panel login and password." \
""
bash "${SOURCE_DIR}/install-final.sh"
DOMAIN="$(sed -n 's/^Environment=TPROXY_HOSTNAME=//p' /etc/systemd/system/caddy.service.d/tproxy.conf 2>/dev/null | head -n1 || true)"
PANEL_PATH="$(sed -n 's/^Environment=WEBPROXY_PANEL_PATH=//p' /etc/systemd/system/tproxy-panel.service 2>/dev/null | head -n1 || true)"
if [[ -n "${DOMAIN}" && "${PANEL_PATH}" =~ ^/panel-[a-f0-9]+$ ]]; then
cat > /root/telegram-web-panel-address.txt <<EOF
Panel URL: https://${DOMAIN}${PANEL_PATH}/login
Configuration: /etc/web-proxy-panel
Panel data: /var/lib/tproxy-panel
Diagnostics: systemctl status caddy mtproxy tproxy-server tproxy-panel --no-pager
EOF
chmod 0600 /root/telegram-web-panel-address.txt
printf '\nPanel address saved to /root/telegram-web-panel-address.txt\n'
fi