From a45ceaf9533a3ca5d34a1221a08fa956ac97b67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Wed, 19 Nov 2025 15:19:00 +0100 Subject: [PATCH] allow install from fork --- npm_install.py | 58 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/npm_install.py b/npm_install.py index 809c1d6..b479cac 100644 --- a/npm_install.py +++ b/npm_install.py @@ -24,6 +24,14 @@ from contextlib import contextmanager DEBUG = False +# GitHub Repository Configuration +GITHUB_REPO_OWNER = "NginxProxyManager" +GITHUB_REPO_NAME = "nginx-proxy-manager" +GITHUB_REPO_URL = f"https://github.com/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}" + +# Alternative: Use full URL directly (uncomment to override above) +# GITHUB_REPO_URL = "https://github.com/YourUsername/your-fork-name" + # ========== Configuration ========== # Minimum required Node.js version for NPM 2.13.0+ MIN_NODEJS_VERSION = 20 @@ -512,16 +520,16 @@ def cleanup_build_artifacts(): p.unlink() removed_count += 1 if DEBUG: - printf(f" ✓ Removed: {path}") + print(f" ✓ Removed: {path}") except Exception as e: if DEBUG: - printf(f" ⚠ Could not remove {path}: {e}") + print(f" ⚠ Could not remove {path}: {e}") except Exception as e: if DEBUG: - printf(f" ⚠ Error processing pattern {pattern}: {e}") + print(f" ⚠ Error processing pattern {pattern}: {e}") if DEBUG and removed_count > 0: - printf(f" Cleaned {removed_count} items from /tmp") + print(f" Cleaned {removed_count} items from /tmp") with step("Cleaning up Yarn cache directories"): yarn_cache_dirs = [ @@ -535,7 +543,7 @@ def cleanup_build_artifacts(): if cache_dir.exists(): try: if DEBUG: - printf(f" Cleaning {cache_dir}...") + print(f" Cleaning {cache_dir}...") for subdir in ["cache", "global", "install-state.gz"]: target = cache_dir / subdir @@ -545,12 +553,12 @@ def cleanup_build_artifacts(): else: target.unlink() if DEBUG: - printf(f" ✓ Removed {target}") + print(f" ✓ Removed {target}") except Exception as e: if DEBUG: - printf(f" ⚠ Could not clean {cache_dir}: {e}") + print(f" ⚠ Could not clean {cache_dir}: {e}") def cleanup_swap(): @@ -568,10 +576,13 @@ def cleanup_swap(): print(f"⚠ Could not remove swap: {e}") -def github_latest_release_tag(repo: str, override: str | None) -> str: +def github_latest_release_tag(repo: str, override: str = None) -> str: if override: return override.lstrip("v") + if "/" not in repo: + repo = f"{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}" url = f"https://api.github.com/repos/{repo}/releases/latest" + with step(f"Downloading from GitGub: {repo}"): with urllib.request.urlopen(url) as r: data = json.load(r) @@ -2501,7 +2512,7 @@ def deploy_npm_app_from_git(ref: str) -> str: version = f"{branch_name}-dev-{timestamp}" git_ref = branch_name - url = f"https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/{git_ref}" + url = f"https://codeload.github.com/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}/tar.gz/{git_ref}" tmp = Path(tempfile.mkdtemp(prefix="npm-angie-")) src = download_extract_tar_gz(url, tmp) @@ -2657,9 +2668,8 @@ def deploy_npm_app_from_release(version: str | None) -> str: """ # Get latest version if not specified if not version: - version = github_latest_release_tag( - "NginxProxyManager/nginx-proxy-manager", override=None - ) + repo = f"{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}" + version = github_latest_release_tag(repo, override=None) print(f"✓ Latest stable version: {version}") if version_parsed < (2, 13, 0): @@ -2675,7 +2685,7 @@ def deploy_npm_app_from_release(version: str | None) -> str: return deploy_npm_app_from_git(f"refs/tags/v{version}") # For versions < 2.13.0, download from release archive - url = f"https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/refs/tags/v{version}" + url = f"https://codeload.github.com/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}/tar.gz/refs/tags/v{version}" tmp = Path(tempfile.mkdtemp(prefix="npm-angie-")) src = download_extract_tar_gz(url, tmp) @@ -3557,7 +3567,7 @@ def print_summary( print(f"IPv6: {'ENABLED' if ipv6_enabled else 'DISABLED'}") print( - "Paths: /opt/npm (app), /data (data), /etc/angie (conf), /opt/certbot (cerbot venv)" + "Paths: /opt/npm (app), /data (npm data), /etc/angie (conf), /opt/certbot (cerbot venv)" ) print("Services: systemctl status angie.service / npm.service") @@ -3585,15 +3595,14 @@ def update_only( apt_update_upgrade() cleanup_build_artifacts() - + # Ensure npm exists before trying to install yarn if not shutil.which("npm"): ensure_minimum_nodejs(user_requested_version=node_pkg) - version = github_latest_release_tag( - "NginxProxyManager/nginx-proxy-manager", npm_version_override - ) - url = f"https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/refs/tags/v{version}" + repo = f"{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}" + version = github_latest_release_tag(repo, npm_version_override) + url = f"https://codeload.github.com/{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}/tar.gz/refs/tags/v{version}" tmp = Path(tempfile.mkdtemp(prefix="npm-update-")) src = download_extract_tar_gz(url, tmp) @@ -3897,6 +3906,7 @@ def main(): # Display installation banner print("\n================== NPM + ANGIE installer ==================") print(f"Repository: https://gitea.linuxiarz.pl/gru/npm-angie-auto-install") + print(f"NPM source repo: {GITHUB_REPO_URL}") print(f"Script description: Auto-installer with Angie + Node.js auto-setup") print(f"") print(f"System Information:") @@ -3920,6 +3930,10 @@ def main(): installed_from_branch = installer_config.get("installed_from_branch", False) previous_branch = installer_config.get("branch", "master") + if args.branch: + installed_from_branch = True + previous_branch = args.branch + install_logrotate_for_data_logs() fix_logrotate_permissions_and_wrapper() @@ -4042,10 +4056,8 @@ def main(): else: # Install latest stable with step("Detecting latest stable release"): - latest_version = github_latest_release_tag( - "NginxProxyManager/nginx-proxy-manager", - override=None - ) + repo = f"{GITHUB_REPO_OWNER}/{GITHUB_REPO_NAME}" + latest_version = github_latest_release_tag(repo, override=None) print(f" Latest stable version: {latest_version}") version_parsed = parse_version(latest_version)