From 3f07578fb4d6cf71b940b7a2d07fc98be810fd34 Mon Sep 17 00:00:00 2001 From: Hendrik Garske Date: Thu, 4 Jun 2026 22:14:12 +0200 Subject: [PATCH] Migrate from GitHub to Forgejo: update all release/update URLs --- .forgejo/workflows/release.yml | 61 ++++++++++++++++++++++++++++++++++ README.md | 30 ++++++++--------- lib/updater.ts | 8 ++--- scripts/install.sh | 12 +++---- scripts/update.sh | 8 ++--- wiki/Bot-Filter.md | 2 +- wiki/Home.md | 4 +-- wiki/Installation.md | 4 +-- wiki/Sunset-Pages.md | 2 +- wiki/Troubleshooting.md | 2 +- wiki/_Sidebar.md | 6 ++-- 11 files changed, 100 insertions(+), 39 deletions(-) create mode 100644 .forgejo/workflows/release.yml diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml new file mode 100644 index 0000000..27827ee --- /dev/null +++ b/.forgejo/workflows/release.yml @@ -0,0 +1,61 @@ +name: Build & Release + +on: + push: + tags: + - 'v*' + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + token: ${{ github.token }} + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + env: + NEXT_TELEMETRY_DISABLED: 1 + + - name: Package release + run: | + TAG=${GITHUB_REF_NAME} + tar -czf nexredirect-next-${TAG}.tar.gz \ + .next public package.json package-lock.json \ + scripts/ bin/ systemd/ types/ server.ts next.config.js + sha256sum nexredirect-next-${TAG}.tar.gz > nexredirect-checksums-${TAG}.txt + echo "TAG=$TAG" >> $GITHUB_OUTPUT + id: pkg + + - name: Create release + run: | + TAG=${GITHUB_REF_NAME} + curl -fsSL \ + -H "Authorization: Bearer ${{ secrets.FORGEJO_TOKEN }}" \ + -H "Content-Type: application/json" \ + "https://forgejo.mgmt.corexmanagement.de/api/v1/repos/admin_hg/cx-nexredirect/releases" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"draft\":false,\"prerelease\":false}" + + - name: Upload assets + run: | + TAG=${GITHUB_REF_NAME} + RELEASE_ID=$(curl -s \ + -H "Authorization: Bearer ${{ secrets.FORGEJO_TOKEN }}" \ + "https://forgejo.mgmt.corexmanagement.de/api/v1/repos/admin_hg/cx-nexredirect/releases/tags/$TAG" \ + | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") + for FILE in nexredirect-next-${TAG}.tar.gz nexredirect-checksums-${TAG}.txt; do + curl -fsSL \ + -H "Authorization: Bearer ${{ secrets.FORGEJO_TOKEN }}" \ + -H "Content-Type: application/octet-stream" \ + "https://forgejo.mgmt.corexmanagement.de/api/v1/repos/admin_hg/cx-nexredirect/releases/$RELEASE_ID/assets?name=$FILE" \ + --data-binary @"$FILE" + done diff --git a/README.md b/README.md index b19bc1b..47b87e0 100644 --- a/README.md +++ b/README.md @@ -24,28 +24,28 @@ Self-hosted Domain-Redirect-Server mit Web-Admin-UI und Per-Domain-Analytics. Vi ## Installation ```bash -curl -sSL https://raw.githubusercontent.com/CoreXManagement/CoreX-NexRedirect/main/scripts/install.sh | sudo bash +curl -sSL https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/main/scripts/install.sh | sudo bash ``` Anschließend Setup unter `http:///setup` aufrufen. -→ Vollständige Anleitung im **[Wiki](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki)**. +→ Vollständige Anleitung im **[Wiki](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki)**. ## Dokumentation -Komplette Doku ist im **[GitHub Wiki](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki)**: +Komplette Doku ist im **[GitHub Wiki](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki)**: -- [Installation](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Installation) -- [DNS Setup](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/DNS-Setup) -- [Domain Management](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Domain-Management) -- [Sunset Pages](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Sunset-Pages) -- [Analytics & Reports](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Analytics-&-Reports) -- [Bot Filter](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Bot-Filter) -- [CLI](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/CLI) -- [API](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/API) -- [Updates](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Updates) -- [Architecture](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Architecture) -- [Troubleshooting](https://github.com/CoreXManagement/CoreX-NexRedirect/wiki/Troubleshooting) +- [Installation](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Installation) +- [DNS Setup](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/DNS-Setup) +- [Domain Management](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Domain-Management) +- [Sunset Pages](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Sunset-Pages) +- [Analytics & Reports](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Analytics-&-Reports) +- [Bot Filter](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Bot-Filter) +- [CLI](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/CLI) +- [API](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/API) +- [Updates](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Updates) +- [Architecture](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Architecture) +- [Troubleshooting](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki/Troubleshooting) ## Stack @@ -59,7 +59,7 @@ Komplette Doku ist im **[GitHub Wiki](https://github.com/CoreXManagement/CoreX-N ## Lokale Entwicklung ```bash -git clone https://github.com/CoreXManagement/CoreX-NexRedirect +git clone https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect cd CoreX-NexRedirect npm install npm run dev diff --git a/lib/updater.ts b/lib/updater.ts index 978be5b..c009266 100644 --- a/lib/updater.ts +++ b/lib/updater.ts @@ -7,7 +7,7 @@ const execFileAsync = promisify(execFile); const VALID_TAG = /^v?\d+\.\d+\.\d+(-[\w.]+)?$/; -const REPO = process.env.NEXREDIRECT_REPO || "CoreXManagement/CoreX-NexRedirect"; +const REPO = process.env.NEXREDIRECT_REPO || "admin_hg/cx-nexredirect"; export type ReleaseInfo = { tag_name: string; @@ -43,11 +43,11 @@ function cmpVersions(a: string, b: string): number { export async function fetchLatestRelease(includePrerelease = false): Promise { const url = includePrerelease - ? `https://api.github.com/repos/${REPO}/releases?per_page=10` - : `https://api.github.com/repos/${REPO}/releases/latest`; + ? `https://forgejo.mgmt.corexmanagement.de/api/v1/repos/${REPO}/releases?per_page=10` + : `https://forgejo.mgmt.corexmanagement.de/api/v1/repos/${REPO}/releases/latest`; try { const res = await fetch(url, { - headers: { "Accept": "application/vnd.github+json", "User-Agent": "corex-nexredirect" }, + headers: { "Accept": "application/json", "User-Agent": "corex-nexredirect" }, }); if (!res.ok) return null; const data = await res.json(); diff --git a/scripts/install.sh b/scripts/install.sh index fee75fe..6cafda9 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # CoreX NexRedirect — One-line install -# Usage: curl -sSL https://raw.githubusercontent.com/CoreXManagement/CoreX-NexRedirect/main/scripts/install.sh | sudo bash +# Usage: curl -sSL https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/raw/branch/main/scripts/install.sh | sudo bash set -euo pipefail @@ -14,7 +14,7 @@ if ! command -v apt-get >/dev/null 2>&1; then exit 1 fi -REPO="${NEXREDIRECT_REPO:-CoreXManagement/CoreX-NexRedirect}" +REPO="${NEXREDIRECT_REPO:-admin_hg/cx-nexredirect}" INSTALL_DIR="${NEXREDIRECT_DIR:-/opt/corex-nexredirect}" DATA_DIR="${NEXREDIRECT_DATA_DIR:-/var/lib/corex-nexredirect}" SERVICE_USER="nexredirect" @@ -53,7 +53,7 @@ fi echo "==> Latest Release ermitteln" TARGET_TAG="${NEXREDIRECT_TAG:-}" if [[ -z "$TARGET_TAG" ]]; then - TARGET_TAG=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" 2>/dev/null \ + TARGET_TAG=$(curl -fsSL "https://forgejo.mgmt.corexmanagement.de/api/v1/repos/${REPO}/releases/latest" 2>/dev/null \ | grep -m1 '"tag_name"' | sed -E 's/.*"tag_name": *"([^"]+)".*/\1/' || true) fi if [[ -z "$TARGET_TAG" ]]; then @@ -70,7 +70,7 @@ if [[ -d "$INSTALL_DIR/.git" ]]; then git -C "$INSTALL_DIR" reset --hard --quiet "$TARGET_REF" 2>/dev/null || git -C "$INSTALL_DIR" reset --hard --quiet "origin/$TARGET_REF" else rm -rf "$INSTALL_DIR" - git clone --quiet "https://github.com/${REPO}.git" "$INSTALL_DIR" + git clone --quiet "https://forgejo.mgmt.corexmanagement.de/${REPO}.git" "$INSTALL_DIR" git -C "$INSTALL_DIR" checkout --quiet "$TARGET_REF" 2>/dev/null || true fi @@ -84,8 +84,8 @@ sudo -u "$SERVICE_USER" -H bash -c "cd '$INSTALL_DIR' && npm ci --no-audit --no- echo "==> Prebuilt .next/ versuchen (SHA256-verifiziert)" PREBUILT_OK=0 if [[ -n "$TARGET_TAG" ]]; then - ASSET_URL="https://github.com/${REPO}/releases/download/${TARGET_TAG}/nexredirect-next-${TARGET_TAG}.tar.gz" - CHECKSUM_URL="https://github.com/${REPO}/releases/download/${TARGET_TAG}/nexredirect-checksums-${TARGET_TAG}.txt" + ASSET_URL="https://forgejo.mgmt.corexmanagement.de/${REPO}/releases/download/${TARGET_TAG}/nexredirect-next-${TARGET_TAG}.tar.gz" + CHECKSUM_URL="https://forgejo.mgmt.corexmanagement.de/${REPO}/releases/download/${TARGET_TAG}/nexredirect-checksums-${TARGET_TAG}.txt" if curl -fsSL -o /tmp/next-build.tgz "$ASSET_URL" 2>/dev/null; then VERIFIED=0 if curl -fsSL -o /tmp/next-checksums.txt "$CHECKSUM_URL" 2>/dev/null; then diff --git a/scripts/update.sh b/scripts/update.sh index 602ceef..4d18711 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -6,7 +6,7 @@ set -euo pipefail TAG="${1:-}" -REPO="${NEXREDIRECT_REPO:-CoreXManagement/CoreX-NexRedirect}" +REPO="${NEXREDIRECT_REPO:-admin_hg/cx-nexredirect}" INSTALL_DIR="${NEXREDIRECT_DIR:-/opt/corex-nexredirect}" SERVICE_USER="nexredirect" @@ -30,7 +30,7 @@ if [[ -f /etc/caddy/Caddyfile ]]; then fi if [[ -z "$TAG" ]]; then - TAG=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" 2>/dev/null \ + TAG=$(curl -fsSL "https://forgejo.mgmt.corexmanagement.de/api/v1/repos/${REPO}/releases/latest" 2>/dev/null \ | grep -m1 '"tag_name"' | sed -E 's/.*"tag_name": *"([^"]+)".*/\1/' || true) fi @@ -46,8 +46,8 @@ sudo -u "$SERVICE_USER" -H bash -c "cd '$INSTALL_DIR' && npm ci --no-audit --no- PREBUILT_OK=0 if [[ -n "$TAG" ]]; then - ASSET_URL="https://github.com/${REPO}/releases/download/${TAG}/nexredirect-next-${TAG}.tar.gz" - CHECKSUM_URL="https://github.com/${REPO}/releases/download/${TAG}/nexredirect-checksums-${TAG}.txt" + ASSET_URL="https://forgejo.mgmt.corexmanagement.de/${REPO}/releases/download/${TAG}/nexredirect-next-${TAG}.tar.gz" + CHECKSUM_URL="https://forgejo.mgmt.corexmanagement.de/${REPO}/releases/download/${TAG}/nexredirect-checksums-${TAG}.txt" if curl -fsSL -o /tmp/next-build.tgz "$ASSET_URL" 2>/dev/null; then VERIFIED=0 if curl -fsSL -o /tmp/next-checksums.txt "$CHECKSUM_URL" 2>/dev/null; then diff --git a/wiki/Bot-Filter.md b/wiki/Bot-Filter.md index eef8ec7..545b8d9 100644 --- a/wiki/Bot-Filter.md +++ b/wiki/Bot-Filter.md @@ -1,6 +1,6 @@ # Bot Filter -NexRedirect zählt nur "echte" Besucher — Scanner, Crawler und Monitoring-Tools werden serverseitig herausgefiltert. Kombination mehrerer Heuristiken in [`lib/hits.ts`](https://github.com/CoreXManagement/CoreX-NexRedirect/blob/main/lib/hits.ts): +NexRedirect zählt nur "echte" Besucher — Scanner, Crawler und Monitoring-Tools werden serverseitig herausgefiltert. Kombination mehrerer Heuristiken in [`lib/hits.ts`](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/blob/main/lib/hits.ts): ## 1. HTTP-Method diff --git a/wiki/Home.md b/wiki/Home.md index 8067ada..6d1f3e4 100644 --- a/wiki/Home.md +++ b/wiki/Home.md @@ -14,7 +14,7 @@ Du hast viele Domains, die nur auf eine andere Webseite weiterleiten sollen — ## Schnellstart ```bash -curl -sSL https://raw.githubusercontent.com/CoreXManagement/CoreX-NexRedirect/main/scripts/install.sh | sudo bash +curl -sSL https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/main/scripts/install.sh | sudo bash ``` Setup-Wizard danach: `http:///setup` @@ -40,4 +40,4 @@ Next.js 15 + TypeScript + TailwindCSS + better-sqlite3 (eine Datei) + Caddy (Aut ## Lizenz -[MIT](https://github.com/CoreXManagement/CoreX-NexRedirect/blob/main/LICENSE) — viel Spaß damit. +[MIT](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/blob/main/LICENSE) — viel Spaß damit. diff --git a/wiki/Installation.md b/wiki/Installation.md index 24ad72a..0c50fc1 100644 --- a/wiki/Installation.md +++ b/wiki/Installation.md @@ -10,7 +10,7 @@ ## One-Line Install ```bash -curl -sSL https://raw.githubusercontent.com/CoreXManagement/CoreX-NexRedirect/main/scripts/install.sh | sudo bash +curl -sSL https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/main/scripts/install.sh | sudo bash ``` Das Script: @@ -48,7 +48,7 @@ Wer das Curl-Pipe-Bash nicht mag: sudo apt install -y caddy nodejs git sqlite3 chromium sudo useradd --system --home /opt/corex-nexredirect --shell /usr/sbin/nologin nexredirect sudo mkdir -p /opt/corex-nexredirect /var/lib/corex-nexredirect -sudo git clone https://github.com/CoreXManagement/CoreX-NexRedirect /opt/corex-nexredirect +sudo git clone https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect /opt/corex-nexredirect sudo chown -R nexredirect:nexredirect /opt/corex-nexredirect /var/lib/corex-nexredirect sudo -u nexredirect bash -c "cd /opt/corex-nexredirect && npm ci && npm run build" sudo cp /opt/corex-nexredirect/systemd/corex-nexredirect.service /etc/systemd/system/ diff --git a/wiki/Sunset-Pages.md b/wiki/Sunset-Pages.md index 4eb79cf..dbfd82b 100644 --- a/wiki/Sunset-Pages.md +++ b/wiki/Sunset-Pages.md @@ -36,7 +36,7 @@ Custom Server (`server.ts`) prüft beim Resolve eines Hosts: Hit wird beim ERSTEN Request gezählt (Notice-Render). Continue-Click zählt NICHT als zweiter Hit (würde sonst doppeln). -HTML-Page ist in [`lib/sunset-html.ts`](https://github.com/CoreXManagement/CoreX-NexRedirect/blob/main/lib/sunset-html.ts) — schwarz auf weiß, kein JS, kein externes Asset, kein Tracking. Funktioniert auch ohne JS-Browser. +HTML-Page ist in [`lib/sunset-html.ts`](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/blob/main/lib/sunset-html.ts) — schwarz auf weiß, kein JS, kein externes Asset, kein Tracking. Funktioniert auch ohne JS-Browser. ## Wichtige Hinweise diff --git a/wiki/Troubleshooting.md b/wiki/Troubleshooting.md index f8ece20..f7e2b23 100644 --- a/wiki/Troubleshooting.md +++ b/wiki/Troubleshooting.md @@ -131,6 +131,6 @@ sudo systemctl start caddy corex-nexredirect ## Fragen / Bugs -GitHub Issues: https://github.com/CoreXManagement/CoreX-NexRedirect/issues +GitHub Issues: https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/issues → Zurück zu [[Home]] diff --git a/wiki/_Sidebar.md b/wiki/_Sidebar.md index f77fba3..359d011 100644 --- a/wiki/_Sidebar.md +++ b/wiki/_Sidebar.md @@ -15,6 +15,6 @@ --- -[Repo](https://github.com/CoreXManagement/CoreX-NexRedirect) -[Releases](https://github.com/CoreXManagement/CoreX-NexRedirect/releases) -[Issues](https://github.com/CoreXManagement/CoreX-NexRedirect/issues) +[Repo](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect) +[Releases](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/releases) +[Issues](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/issues)