mirror of
https://github.com/andrey271192/Domain_web.git
synced 2026-09-20 14:41:58 +00:00
Replace Next.js scanner deploy with static React CDN pages: student VPN cabinet, regional setup, curated blocked-domain lists, and nginx one-line install on port 80 without touching Amnezia/Docker services. Co-authored-by: Cursor <cursoragent@cursor.com>
108 lines
3.2 KiB
Bash
Executable File
108 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Domain Web — lightweight static site (nginx :80)
|
|
# curl -fsSL https://raw.githubusercontent.com/andrey271192/Domain_web/main/install.sh | sudo bash
|
|
set -euo pipefail
|
|
|
|
REPO_URL="${DOMAIN_WEB_REPO_URL:-https://github.com/andrey271192/Domain_web.git}"
|
|
BRANCH="${DOMAIN_WEB_BRANCH:-main}"
|
|
INSTALL_SRC="${DOMAIN_WEB_INSTALL_SRC:-/opt/domain-web-src}"
|
|
WEB_ROOT="${DOMAIN_WEB_ROOT:-/var/www/domain-web}"
|
|
NGINX_SITE="domain-web"
|
|
LEGACY_SERVICES=("domain-scanner" "geoexport-site")
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
log() { echo "[domain-web] $*"; }
|
|
|
|
need_root() {
|
|
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
|
echo "Run as root: sudo bash" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
install_packages() {
|
|
log "Installing nginx, git, curl..."
|
|
apt-get update -qq
|
|
apt-get install -y -qq nginx git curl ca-certificates rsync >/dev/null
|
|
}
|
|
|
|
stop_legacy_scanner() {
|
|
log "Disabling legacy Node scanner site (if present)..."
|
|
for svc in "${LEGACY_SERVICES[@]}"; do
|
|
systemctl stop "${svc}.service" 2>/dev/null || true
|
|
systemctl disable "${svc}.service" 2>/dev/null || true
|
|
rm -f "/etc/systemd/system/${svc}.service"
|
|
done
|
|
rm -f /etc/nginx/sites-enabled/domain-scanner 2>/dev/null || true
|
|
rm -f /etc/nginx/sites-available/domain-scanner 2>/dev/null || true
|
|
systemctl daemon-reload 2>/dev/null || true
|
|
}
|
|
|
|
clone_repo() {
|
|
log "Fetching ${REPO_URL} (${BRANCH})..."
|
|
if [[ -d "${INSTALL_SRC}/.git" ]]; then
|
|
git -C "${INSTALL_SRC}" fetch origin "${BRANCH}"
|
|
git -C "${INSTALL_SRC}" checkout "${BRANCH}"
|
|
git -C "${INSTALL_SRC}" reset --hard "origin/${BRANCH}"
|
|
else
|
|
rm -rf "${INSTALL_SRC}"
|
|
git clone --depth 1 --branch "${BRANCH}" "${REPO_URL}" "${INSTALL_SRC}"
|
|
fi
|
|
}
|
|
|
|
deploy_web() {
|
|
log "Deploying static files to ${WEB_ROOT}..."
|
|
mkdir -p "${WEB_ROOT}"
|
|
rsync -a --delete "${INSTALL_SRC}/web/" "${WEB_ROOT}/"
|
|
chown -R www-data:www-data "${WEB_ROOT}" 2>/dev/null || chown -R nginx:nginx "${WEB_ROOT}" 2>/dev/null || true
|
|
}
|
|
|
|
configure_nginx() {
|
|
log "Configuring nginx (HTTP :80)..."
|
|
local conf_src="${INSTALL_SRC}/nginx/domain-web.conf"
|
|
if [[ ! -f "${conf_src}" ]]; then
|
|
echo "Missing nginx config in repo" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Backup existing default if it listens on 80 and is not ours
|
|
if [[ -f /etc/nginx/sites-enabled/default ]] && ! grep -q "domain-web" /etc/nginx/sites-enabled/default 2>/dev/null; then
|
|
if grep -q "listen 80" /etc/nginx/sites-enabled/default 2>/dev/null; then
|
|
mv /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak.$(date +%s) 2>/dev/null || true
|
|
fi
|
|
fi
|
|
|
|
sed "s|/var/www/domain-web|${WEB_ROOT}|g" "${conf_src}" > "/etc/nginx/sites-available/${NGINX_SITE}"
|
|
ln -sf "/etc/nginx/sites-available/${NGINX_SITE}" "/etc/nginx/sites-enabled/${NGINX_SITE}"
|
|
|
|
nginx -t
|
|
systemctl enable nginx
|
|
systemctl reload nginx
|
|
}
|
|
|
|
print_done() {
|
|
local ip
|
|
ip="$(hostname -I 2>/dev/null | awk '{print $1}' || echo 'SERVER_IP')"
|
|
log "Done."
|
|
echo ""
|
|
echo " Site root: ${WEB_ROOT}"
|
|
echo " URL: http://${ip}/"
|
|
echo " Pages: /connect.html /domains.html"
|
|
echo ""
|
|
echo " Amnezia (443) and Docker containers were not stopped."
|
|
echo ""
|
|
}
|
|
|
|
main() {
|
|
need_root
|
|
install_packages
|
|
stop_legacy_scanner
|
|
clone_repo
|
|
deploy_web
|
|
configure_nginx
|
|
print_done
|
|
}
|
|
|
|
main "$@"
|