Files
nebula/.env.example
T
florian.wildeandClaude Opus 5 252c0686df
CI / pruefen (push) Has been cancelled
docs: Benachrichtigungen dokumentieren, Version 0.7.0
FEATURES beschreibt die drei Anlaesse, die Entprellung samt ihrer beiden
Feinheiten, die drei Zustellwege und die Absicherung. README bekommt die
neuen Endpunkte und Umgebungsvariablen, .env.example die SMTP-Vorlage.

ROADMAP: Benachrichtigungen erledigt. Neu an erster Stelle steht das Melden
stillstehender Projekte - das ist der einzige Anlass, der kein Ereignis hat,
an dem er haengt, und braucht deshalb einen eigenen Durchlauf. Ein doppelter
Eintrag zu Webhooks statt Polling ist dabei aufgefallen und entfernt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 10:23:06 +02:00

94 lines
4.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ─────────────────────────────────────────────────────────────
# Nebula – Beispielkonfiguration
# Kopieren nach ".env" und Werte anpassen.
# (Die .env wird sowohl von Next.js als auch von docker compose gelesen.)
# ─────────────────────────────────────────────────────────────
# ── Anwendung ────────────────────────────────────────────────
# Anzeigename: Seitentitel, Kopfzeile und Name im Passkey-Dialog.
APP_NAME="Nebula"
# Kleine Zeile unter dem Namen in der Kopfzeile.
APP_TAGLINE="Vibe Coding"
# Oeffentliche Adresse der Instanz – genau so, wie du sie im Browser aufrufst.
#
# WICHTIG fuer Passkeys: Daraus werden die WebAuthn-Relying-Party-ID (der
# Hostname) und der erwartete Origin abgeleitet. Passt der Wert nicht zur
# aufgerufenen Adresse, lehnt der Browser die Anmeldung ab. Passkeys brauchen
# ausserdem einen sicheren Kontext: https:// – oder http://localhost.
#
# Wird die rpID spaeter geaendert (anderer Hostname), sind bestehende Passkeys
# ungueltig und muessen neu angelegt werden. Passwoerter bleiben davon unberuehrt.
APP_URL="http://localhost:3000"
# Port innerhalb des Containers bzw. im Standalone-Betrieb
PORT="3000"
# Host-Port-Mapping fuer den App-Container (--profile full)
APP_PORT="3000"
# ── Datenbank ────────────────────────────────────────────────
# Standalone-Betrieb: App laeuft lokal, Postgres via "docker compose up -d db"
# oder als nativ installierter Dienst.
DATABASE_URL="postgresql://nebula:nebula@localhost:5432/nebula?schema=public"
# Im Docker-Vollbetrieb (--profile full) setzt compose DATABASE_URL selbst
# auf den Service-Hostnamen "db" – der Wert oben wird dann nicht verwendet.
# Zugangsdaten des Postgres-Containers aus docker-compose.yml
POSTGRES_USER="nebula"
POSTGRES_PASSWORD="nebula"
POSTGRES_DB="nebula"
# Host-Port, unter dem die Datenbank erreichbar ist
POSTGRES_PORT="5432"
# Host-Port fuer Adminer (--profile tools)
ADMINER_PORT="8080"
# ── Sicherheit ───────────────────────────────────────────────
# Schluessel zur Verschluesselung der Git-Access-Tokens (AES-256-GCM).
# Erzeugen mit: openssl rand -base64 32
# oder: node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
# oder: npm run setup (legt die .env inkl. Schluessel an)
# WICHTIG: Wird der Wert nachtraeglich geaendert, sind gespeicherte Git-Tokens
# nicht mehr entschluesselbar und muessen neu hinterlegt werden. Anmeldungen
# und Passkeys sind davon nicht betroffen.
APP_SECRET="bitte-aendern-mindestens-32-zeichen-langer-zufallswert"
# Lebensdauer einer Anmeldung in Tagen.
SESSION_TTL_DAYS="30"
# ── Benachrichtigungen ───────────────────────────────────────
# ntfy und Webhook brauchen nichts weiter – die Ziele werden in der
# Anwendung unter "Mein Konto" eingerichtet.
#
# E-Mail steht erst zur Verfuegung, wenn SMTP_HOST gesetzt ist:
# SMTP_HOST="smtp.example.com"
# SMTP_PORT="587"
# SMTP_SECURE="false" # true bei Port 465, sonst STARTTLS
# SMTP_USER="nebula@example.com"
# SMTP_PASSWORD="geheim"
# SMTP_FROM="Nebula <nebula@example.com>"
# Timeout fuer das Zustellen in Millisekunden
NOTIFY_TIMEOUT_MS="10000"
# ── Ausgehende Git-Zugriffe ──────────────────────────────────
# Timeout fuer Git-API-Aufrufe in Millisekunden
GIT_API_TIMEOUT_MS="15000"
# Schutz vor Server Side Request Forgery: die Basis-URL einer Git-Verbindung
# ist eine Benutzereingabe und wird vom Server abgerufen.
#
# Voreinstellung: Loopback, Link-Local (169.254.x, Cloud-Metadaten), Multicast
# und CGNAT sind gesperrt; das private LAN ist erlaubt, weil dort ueblicherweise
# die eigene Gitea-Instanz steht.
# Gitea laeuft auf demselben Rechner wie Nebula? Dann auf true setzen.
# GIT_ALLOW_LOOPBACK="false"
# Kein Zugriff ins private Netz (10/8, 172.16/12, 192.168/16, fc00::/7)?
# GIT_BLOCK_PRIVATE="false"
# Strengster Modus: nur diese Hosts sind erlaubt, alles andere wird geblockt.
# Eine Angabe hier hebt die beiden Schalter darueber auf.
# GIT_ALLOWED_HOSTS="github.com,gitlab.com,git.meine-firma.de"