generated from Dicken/dickendock
Zentrale .env-Konfiguration für alle Umgebungsvariablen
This commit is contained in:
41
.env.example
Normal file
41
.env.example
Normal file
@@ -0,0 +1,41 @@
|
||||
# LaunchPad – Umgebungsvariablen
|
||||
#
|
||||
# Kopiere diese Datei nach ".env" und trage echte Werte ein:
|
||||
# cp .env.example .env
|
||||
#
|
||||
# ".env" ist in .gitignore und wird NIE committet. Auf dem Server
|
||||
# (/opt/LaunchPad) muss sie nach dem ersten `git pull` einmalig manuell
|
||||
# angelegt werden, da git-ignorierte Dateien nicht mitgepullt werden.
|
||||
|
||||
# ─── Backend ─────────────────────────────────────────────────────────
|
||||
# Node-Umgebung: "development" oder "production"
|
||||
NODE_ENV=production
|
||||
|
||||
# Host/Port, auf dem das Backend lauscht (innerhalb des Containers)
|
||||
HOST=0.0.0.0
|
||||
PORT=3001
|
||||
|
||||
# Pfad zur SQLite-Datenbankdatei (im Docker-Container: das gemountete Volume)
|
||||
DATABASE_PATH=/data/launchpad.db
|
||||
|
||||
# Log-Level für Fastify/Pino: fatal | error | warn | info | debug | trace
|
||||
LOG_LEVEL=info
|
||||
|
||||
# CORS-Origin fürs Frontend. "true" erlaubt alle Origins (Default – im lokalen
|
||||
# Betrieb hinter Nginx unbedenklich). Für strengere Regeln z. B.:
|
||||
# CORS_ORIGIN=https://launchpad.home
|
||||
CORS_ORIGIN=true
|
||||
|
||||
# ─── FritzBox-Scan (optional) ───────────────────────────────────────
|
||||
# Nur nötig für POST /api/scan/fritzbox. TR-064-Zugriff muss in der FritzBox
|
||||
# aktiviert sein: Heimnetz -> Netzwerk -> Netzwerkeinstellungen ->
|
||||
# "Zugriff für Anwendungen zulassen". Leer lassen = Scan liefert kontrolliert
|
||||
# HTTP 400 statt zu fehlen.
|
||||
FRITZBOX_HOST=192.168.1.1
|
||||
FRITZBOX_PORT=49000
|
||||
FRITZBOX_USERNAME=
|
||||
FRITZBOX_PASSWORD=
|
||||
|
||||
# ─── Frontend (nur für lokale Entwicklung, `pnpm dev:frontend`) ─────
|
||||
# Ziel für den Vite-Dev-Proxy von /api -> Backend
|
||||
BACKEND_URL=http://localhost:3001
|
||||
35
README.md
35
README.md
@@ -10,6 +10,7 @@ Kein überladenes Dashboard. Keine Kacheln. Im Mittelpunkt steht eine extrem sch
|
||||
```bash
|
||||
git clone <repo-url> LaunchPad
|
||||
cd LaunchPad
|
||||
cp .env.example .env # optional anpassen, siehe unten
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
@@ -78,23 +79,31 @@ Noch **nicht** enthalten (folgt in den nächsten Commits):
|
||||
— beide Backend-APIs existieren bereits vollständig
|
||||
- TanStack Router, Plugin-System, PWA-Manifest, shadcn/ui, RHF
|
||||
|
||||
### FritzBox-Scan konfigurieren
|
||||
### Umgebungsvariablen (.env)
|
||||
|
||||
Der FritzBox-Scan benötigt drei Umgebungsvariablen (z. B. in `docker-compose.yml`
|
||||
beim `backend`-Service oder lokal per `.env`):
|
||||
Alle Umgebungsvariablen sind in `.env.example` dokumentiert. Für die lokale
|
||||
Entwicklung und für Docker Compose:
|
||||
|
||||
```
|
||||
FRITZBOX_HOST=192.168.1.1
|
||||
FRITZBOX_USERNAME=<TR-064-Benutzername>
|
||||
FRITZBOX_PASSWORD=<TR-064-Passwort>
|
||||
FRITZBOX_PORT=49000 # optional, Default 49000
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# .env anpassen (v. a. FRITZBOX_* für den FritzBox-Scan)
|
||||
```
|
||||
|
||||
TR-064-Zugriff muss in der FritzBox unter *Heimnetz → Netzwerk → Netzwerkeinstellungen
|
||||
→ „Zugriff für Anwendungen zulassen"* aktiviert sein. Getestet wurde der komplette
|
||||
SOAP-/Digest-Auth-Ablauf gegen einen Mock-Server mit realistischer TR-064-Antwort
|
||||
(korrektes und falsches Passwort); ein Test gegen eine echte FritzBox war in dieser
|
||||
Entwicklungsumgebung nicht möglich (kein Netzwerkzugriff auf lokale Geräte).
|
||||
`.env` ist in `.gitignore` und wird nie committet. **Auf dem Server
|
||||
(`/opt/LaunchPad`) muss sie nach dem ersten `git pull` einmalig manuell
|
||||
angelegt werden**, da git-ignorierte Dateien nicht mitgepullt werden:
|
||||
|
||||
```bash
|
||||
cd /opt/LaunchPad
|
||||
cp .env.example .env
|
||||
nano .env # FRITZBOX_* eintragen
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Fehlt `.env` komplett, startet alles trotzdem mit den in `docker-compose.yml`
|
||||
hinterlegten Defaults – der FritzBox-Scan liefert dann kontrolliert `HTTP 400`
|
||||
statt abzustürzen. Für `pnpm dev:backend` (ohne Docker) wird `.env` automatisch
|
||||
über `dotenv` geladen (`apps/backend/src/env.ts`, wird als allererstes importiert).
|
||||
|
||||
Siehe [`docs/ROADMAP.md`](./docs/ROADMAP.md) für die geplante Reihenfolge.
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"@launchpad/shared": "workspace:*",
|
||||
"@fastify/cors": "^9.0.1",
|
||||
"better-sqlite3": "^11.3.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"drizzle-orm": "^0.33.0",
|
||||
"fastify": "^4.28.1"
|
||||
},
|
||||
|
||||
11
apps/backend/src/env.ts
Normal file
11
apps/backend/src/env.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { config } from "dotenv";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { dirname, resolve } from "node:path";
|
||||
|
||||
const currentDir = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
// apps/backend/src/env.ts (bzw. apps/backend/dist/env.js) -> Repo-Root liegt
|
||||
// drei Verzeichnisebenen höher. Existiert dort keine .env (z. B. im
|
||||
// Docker-Image), passiert einfach nichts – die Werte kommen dann bereits aus
|
||||
// der Container-Umgebung (docker-compose env_file/environment).
|
||||
config({ path: resolve(currentDir, "../../../.env") });
|
||||
@@ -1,3 +1,4 @@
|
||||
import "./env.js";
|
||||
import Fastify from "fastify";
|
||||
import cors from "@fastify/cors";
|
||||
import { ensureSchema } from "./db/client.js";
|
||||
|
||||
@@ -5,6 +5,9 @@ services:
|
||||
dockerfile: apps/backend/Dockerfile
|
||||
container_name: launchpad-backend
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- path: ./.env
|
||||
required: false
|
||||
environment:
|
||||
- DATABASE_PATH=/data/launchpad.db
|
||||
- PORT=3001
|
||||
|
||||
9
pnpm-lock.yaml
generated
9
pnpm-lock.yaml
generated
@@ -23,6 +23,9 @@ importers:
|
||||
better-sqlite3:
|
||||
specifier: ^11.3.0
|
||||
version: 11.10.0
|
||||
dotenv:
|
||||
specifier: ^16.4.5
|
||||
version: 16.6.1
|
||||
drizzle-orm:
|
||||
specifier: ^0.33.0
|
||||
version: 0.33.0(@types/better-sqlite3@7.6.13)(@types/react@18.3.31)(better-sqlite3@11.10.0)(react@18.3.1)
|
||||
@@ -1157,6 +1160,10 @@ packages:
|
||||
dlv@1.1.3:
|
||||
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
|
||||
|
||||
dotenv@16.6.1:
|
||||
resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
drizzle-kit@0.24.2:
|
||||
resolution: {integrity: sha512-nXOaTSFiuIaTMhS8WJC2d4EBeIcN9OSt2A2cyFbQYBAZbi7lRsVGJNqDpEwPqYfJz38yxbY/UtbvBBahBfnExQ==}
|
||||
hasBin: true
|
||||
@@ -2640,6 +2647,8 @@ snapshots:
|
||||
|
||||
dlv@1.1.3: {}
|
||||
|
||||
dotenv@16.6.1: {}
|
||||
|
||||
drizzle-kit@0.24.2:
|
||||
dependencies:
|
||||
'@drizzle-team/brocli': 0.10.2
|
||||
|
||||
Reference in New Issue
Block a user