Self-hosted Domain-Redirect-Server mit Web-Admin-UI und Analytics
Find a file
2026-05-01 20:41:26 +02:00
.github/workflows Prebuilt .next/ via GitHub Releases — install/update fetch tarball, skip build (saves ~25s) 2026-05-01 18:23:48 +02:00
app v0.1.16 — DNS records overview, domain edit form, bulk delete, group edit, CSV export, audit log 2026-05-01 20:41:26 +02:00
bin v0.1.9 — fix Caddy auto-HTTPS: chown Caddyfile to service user so app can regenerate per-domain blocks 2026-05-01 19:06:38 +02:00
components v0.1.16 — DNS records overview, domain edit form, bulk delete, group edit, CSV export, audit log 2026-05-01 20:41:26 +02:00
docs Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
lib v0.1.16 — DNS records overview, domain edit form, bulk delete, group edit, CSV export, audit log 2026-05-01 20:41:26 +02:00
public Add NexRedirect logo (nr) — adapted from CoreXVoice nv-icon 2026-05-01 17:54:13 +02:00
scripts v0.1.14 — direct PDF download via puppeteer + chromium, fix logo on cover 2026-05-01 19:34:08 +02:00
systemd Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
types Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
.gitignore Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
LICENSE Add MIT license 2026-05-01 17:57:40 +02:00
middleware.ts v0.1.14 — direct PDF download via puppeteer + chromium, fix logo on cover 2026-05-01 19:34:08 +02:00
next.config.js v0.1.14 — direct PDF download via puppeteer + chromium, fix logo on cover 2026-05-01 19:34:08 +02:00
package-lock.json v0.1.14 — direct PDF download via puppeteer + chromium, fix logo on cover 2026-05-01 19:34:08 +02:00
package.json v0.1.16 — DNS records overview, domain edit form, bulk delete, group edit, CSV export, audit log 2026-05-01 20:41:26 +02:00
postcss.config.js Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
README.md Add nexredirect CLI: status/logs/update/caddy/domains/hits/tokens/backup/uninstall 2026-05-01 18:22:02 +02:00
server.ts v0.1.12 — bot filter, unique visitors, sunset notice page (per-domain + bulk) 2026-05-01 19:22:04 +02:00
tailwind.config.ts Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00
tsconfig.json Initial NexRedirect: redirect server with admin UI, analytics, API tokens, self-update 2026-05-01 17:51:12 +02:00

CoreX NexRedirect

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

  • 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 beim Hinzufügen einer Domain (zeigt fehlende Records)
  • Domain-Gruppen für gleiches Ziel über mehrere Domains
  • Per-Domain-Analytics (Hits, Geo, Top-Domains, "Tote Domains")
  • Public REST-API mit Token-Auth und Scopes
  • Self-Update via GitHub-Releases (UI-Banner + Auto-Update opt-in)
  • DSGVO-freundlich: IP-Hash mit täglich rotierendem Salt, kein Klartext

Installation

curl -sSL https://raw.githubusercontent.com/CoreXManagement/CoreX-NexRedirect/main/scripts/install.sh | sudo bash

Optional vorab MaxMind-Lizenz für Geo-Lookup:

export MAXMIND_LICENSE_KEY=xxx
curl ... | sudo -E bash

Anschließend Setup unter http://<server-ip>/setup aufrufen und Admin-Account erstellen.

Details: docs/INSTALL.md

Domain hinzufügen

  1. Admin-UI → "Domains" → "+ Domain hinzufügen"
  2. Domain + Ziel-URL (oder Gruppe) eingeben
  3. DNS-Records beim DNS-Provider eintragen (A/AAAA auf Server-IP)
  4. Validieren — Server prüft DNS, aktiviert Domain, Caddy reload

Alternativ via API:

curl -X POST -H "Authorization: Bearer nrx_..." -H "Content-Type: application/json" \
  -d '{"domain":"alt-firma.de","target_url":"https://www.firma.de"}' \
  https://admin.firma.de/api/v1/domains

API

Tokens werden im Web-UI unter Einstellungen → API-Tokens erstellt. Tokens haben Scopes (read:domains, write:domains, read:analytics, read:hits).

curl -H "Authorization: Bearer nrx_..." https://admin.firma.de/api/v1/domains

Vollständige Doku: docs/API.md

Updates

Standardmäßig prüft der Server stündlich auf neue Releases und zeigt einen Banner in der UI. Keine Auto-Updates außer aktiviert.

  • Manuell: Settings → "Update X.Y.Z installieren"
  • Auto: Settings → Auto-Update-Toggle aktivieren

Details: docs/UPDATE.md

CLI

Nach Install: nexredirect <befehl> auf dem Server.

nexredirect status            # Service-Status
nexredirect logs              # Logs streamen
nexredirect update [tag]      # Update auf neueste / Tag
nexredirect version           # current + latest
nexredirect restart           # Service-Restart
nexredirect caddy reload      # Caddy reload
nexredirect caddy show        # Caddyfile dumpen
nexredirect domains           # aktive Domains
nexredirect hits [N]          # letzte N Hits
nexredirect tokens            # API-Token-Liste
nexredirect db                # SQLite-Shell
nexredirect backup [path]     # DB + Caddyfile sichern
nexredirect uninstall         # entfernen (DB bleibt)
nexredirect help

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)
  • NextAuth Credentials + bcryptjs

Lokale Entwicklung

git clone https://github.com/CoreXManagement/CoreX-NexRedirect
cd CoreX-NexRedirect
npm install
npm run dev

Setup unter http://localhost:3000/setup.

Lizenz

MIT — viel Spaß damit.