Compare commits
No commits in common. "8e28a654bc15abfc7f8a603089fe6c3ba764288d" and "3f07578fb4d6cf71b940b7a2d07fc98be810fd34" have entirely different histories.
8e28a654bc
...
3f07578fb4
4 changed files with 163 additions and 10 deletions
22
.github/workflows/ci.yml
vendored
Normal file
22
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
runs-on: [self-hosted, Linux, X64, docker]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: npm
|
||||
|
||||
- run: npm ci --no-audit --no-fund
|
||||
- run: npm run build
|
||||
- run: npm test --if-present
|
||||
47
.github/workflows/release.yml
vendored
Normal file
47
.github/workflows/release.yml
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
name: Release Build
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [self-hosted, Linux, X64, docker]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: npm
|
||||
|
||||
- name: Install deps
|
||||
run: npm ci --no-audit --no-fund
|
||||
|
||||
- name: Build Next.js
|
||||
run: npm run build
|
||||
|
||||
- name: Package .next/
|
||||
run: |
|
||||
TAG="${GITHUB_REF_NAME}"
|
||||
tar -czf "nexredirect-next-${TAG}.tar.gz" .next
|
||||
ls -lh "nexredirect-next-${TAG}.tar.gz"
|
||||
|
||||
- name: Compute SHA256
|
||||
run: |
|
||||
TAG="${GITHUB_REF_NAME}"
|
||||
sha256sum "nexredirect-next-${TAG}.tar.gz" > "nexredirect-checksums-${TAG}.txt"
|
||||
cat "nexredirect-checksums-${TAG}.txt"
|
||||
|
||||
- name: Attach to release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: |
|
||||
nexredirect-next-*.tar.gz
|
||||
nexredirect-checksums-*.txt
|
||||
tag_name: ${{ github.ref_name }}
|
||||
fail_on_unmatched_files: true
|
||||
27
.github/workflows/security.yml
vendored
Normal file
27
.github/workflows/security.yml
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
name: Security Scan
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
audit:
|
||||
name: npm Audit
|
||||
runs-on: [self-hosted, Linux, X64, docker]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: npm
|
||||
|
||||
- run: npm ci --no-audit --no-fund
|
||||
|
||||
- run: npm audit --audit-level=high
|
||||
continue-on-error: true
|
||||
77
README.md
77
README.md
|
|
@ -1,15 +1,72 @@
|
|||
# CoreX NexRedirect
|
||||
|
||||
> **⚠️ Dieses Repository ist nicht mehr aktiv.**
|
||||
>
|
||||
> Das Projekt wird jetzt auf unserem eigenen Forgejo-Server gehostet:
|
||||
>
|
||||
> **[https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect)**
|
||||
>
|
||||
> Bitte alle Issues, Pull Requests und Releases dort einreichen.
|
||||
Self-hosted Domain-Redirect-Server mit Web-Admin-UI und Per-Domain-Analytics. Viele Domains zeigen via DNS auf einen einzigen Server, der jede Domain auf das jeweilige Ziel weiterleitet und protokolliert, welche Domains tatsächlich noch genutzt werden — ideal um tote Domains zu identifizieren.
|
||||
|
||||
---
|
||||
## Features
|
||||
|
||||
Self-hosted Domain-Redirect-Server mit Web-Admin-UI und Per-Domain-Analytics.
|
||||
- **One-Line Install** auf Debian/Ubuntu (Caddy + Node + systemd)
|
||||
- **Web-Admin-UI** mit Setup-Wizard, Domain-Verwaltung, Analytics
|
||||
- **Auto-HTTPS** via Caddy (Let's Encrypt automatisch)
|
||||
- **DNS-Validierung + Live-Übersicht** aller Records (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA)
|
||||
- **Domain-Gruppen** für gleiches Ziel über mehrere Domains
|
||||
- **Sunset-Notice-Pages** vor Redirect (per Domain oder Bulk)
|
||||
- **Per-Domain-Analytics** (Hits, eindeutige Besucher, Geo, "Tote Domains")
|
||||
- **Bot-Filter** mit Browser-Signal-Heuristik (Sec-Fetch, Accept-Language) + persistenter IP-Blocklist
|
||||
- **PDF-Export** (Gesamt + Per-Domain) via headless Chromium
|
||||
- **CSV-Import + Export** für Domains und Hits
|
||||
- **Audit-Log** aller administrativen Aktionen
|
||||
- **Public REST-API** mit Token-Auth und Scopes
|
||||
- **Multi-User** mit Rollen (admin / user)
|
||||
- **Self-Update** via GitHub-Releases (UI-Banner + Auto-Update opt-in)
|
||||
- **Webhook-Notifications** bei Events (Domain-Verify-Fail etc.)
|
||||
- **DSGVO-freundlich**: IP-Hash mit täglich rotierendem Salt, kein Klartext
|
||||
|
||||
**Neue Heimat:** https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect
|
||||
## Installation
|
||||
|
||||
```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://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki)**.
|
||||
|
||||
## Dokumentation
|
||||
|
||||
Komplette Doku ist im **[GitHub Wiki](https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect/wiki)**:
|
||||
|
||||
- [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
|
||||
|
||||
- Next.js 15 + TypeScript + TailwindCSS + Radix UI + Recharts
|
||||
- better-sqlite3 (eine Datei in `/var/lib/corex-nexredirect/nexredirect.db`)
|
||||
- Caddy (Auto-HTTPS, Reverse-Proxy)
|
||||
- MaxMind GeoLite2-Country (lokal, optional)
|
||||
- NextAuth Credentials + bcryptjs
|
||||
- puppeteer-core + Chromium (PDF-Export)
|
||||
|
||||
## Lokale Entwicklung
|
||||
|
||||
```bash
|
||||
git clone https://forgejo.mgmt.corexmanagement.de/admin_hg/cx-nexredirect
|
||||
cd CoreX-NexRedirect
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Setup unter `http://localhost:3000/setup`.
|
||||
|
||||
## Lizenz
|
||||
|
||||
[MIT](LICENSE) — viel Spaß damit.
|
||||
|
|
|
|||
Loading…
Reference in a new issue