Migrate from GitHub to Forgejo: update all release/update URLs

This commit is contained in:
Hendrik Garske 2026-06-04 22:14:12 +02:00
parent 8317eed72a
commit 3f07578fb4
11 changed files with 100 additions and 39 deletions

View file

@ -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

View file

@ -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://<server-ip>/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

View file

@ -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<ReleaseInfo | null> {
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();

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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://<server-ip>/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.

View file

@ -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/

View file

@ -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

View file

@ -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]]

View file

@ -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)