.env commit
This commit is contained in:
15
.env.example
15
.env.example
@@ -1,4 +1,11 @@
|
|||||||
VITE_APPWRITE_PROJECT_ID="696b82270034001dab69"
|
# Appwrite – Kopie auf dem Server als .env anlegen (wird nicht mit Git gepusht!)
|
||||||
VITE_APPWRITE_ENDPOINT="https://appwrite.webklar.com/v1"
|
# Nach dem Klonen/Pullen: npm run setup:env oder cp .env.example .env
|
||||||
VITE_APPWRITE_DATABASE_ID="contacts"
|
|
||||||
VITE_APPWRITE_CONTACT_COLLECTION_ID="messages"
|
VITE_APPWRITE_ENDPOINT=https://appwrite.webklar.com/v1
|
||||||
|
VITE_APPWRITE_PROJECT_ID=696b82270034001dab69
|
||||||
|
VITE_APPWRITE_DATABASE_ID=698124a20035e8f6dc42
|
||||||
|
VITE_APPWRITE_CONTACT_COLLECTION_ID=contact_submissions
|
||||||
|
|
||||||
|
# Optional: Supabase (falls später genutzt)
|
||||||
|
# VITE_SUPABASE_URL=
|
||||||
|
# VITE_SUPABASE_ANON_KEY=
|
||||||
|
|||||||
34
docs/DEPLOY-SERVER.md
Normal file
34
docs/DEPLOY-SERVER.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Deployment auf dem Server
|
||||||
|
|
||||||
|
## .env wird nicht mit Git übertragen
|
||||||
|
|
||||||
|
Die Datei **`.env`** steht in `.gitignore` und wird beim `git push` **nicht** mit ins Repository übernommen. Auf dem Server fehlen dadurch die Umgebungsvariablen für Appwrite – die Meldung *"Appwrite ist nicht konfiguriert"* entsteht genau deshalb.
|
||||||
|
|
||||||
|
## Lösung: .env auf dem Server anlegen
|
||||||
|
|
||||||
|
**Im Repo mitgepusht:** `.env.example`, `scripts/setup-env.cjs`, und die Script-Einträge in `package.json` (`setup:env`, `deploy:server`). Die `.env` wird weiterhin **nicht** ins Git aufgenommen.
|
||||||
|
|
||||||
|
**Nach dem ersten Klonen oder nach jedem Pullen auf dem Server:**
|
||||||
|
|
||||||
|
**Option A – ein Befehl (empfohlen):**
|
||||||
|
Legt `.env` aus `.env.example` an (falls noch nicht vorhanden) und baut die App:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run deploy:server
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option B – einzeln:**
|
||||||
|
Nur `.env` anlegen (überschreibt keine bestehende `.env`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run setup:env
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option C – mit deploy.sh / Container:**
|
||||||
|
Wenn auf dem Server ein `deploy.sh` und Docker/Compose genutzt werden: Nach `git pull` kann `deploy.sh` die `.env` aus `.env.example` erzeugen (falls fehlend) und vor jedem Build eine `.env.local` aus den Container-Umgebungsvariablen schreiben (z. B. alle `VITE_APPWRITE_*`). So kommt die Appwrite-Konfiguration zuverlässig ins Frontend-Build. Ein Neustart von Nginx ist in der Regel nicht nötig; der neue Build liegt in `/out` (oder dem konfigurierten Ausgabeordner).
|
||||||
|
|
||||||
|
**Option D – manuell:**
|
||||||
|
`.env` selbst anlegen mit dem Inhalt von `.env.example` oder den Werten aus dieser Doku, danach `npm run build`.
|
||||||
|
|
||||||
|
**.env nicht committen** – sie bleibt nur lokal bzw. auf dem Server und enthält projektspezifische Werte.
|
||||||
36
docs/PROMPT-SERVER-SETUP.md
Normal file
36
docs/PROMPT-SERVER-SETUP.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Prompt für KI mit Server-Zugriff (automatisches .env + Build)
|
||||||
|
|
||||||
|
Kopiere den folgenden Block und gib ihn einer KI, die Zugriff auf deinen Server hat (z. B. Cursor Agent, SSH-Terminal, Deployment-KI).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prompt (zum Kopieren)
|
||||||
|
|
||||||
|
```
|
||||||
|
Kontext: Das Projekt ist eine Vite/React-Webapp (Webklar). Die Datei .env wird aus Sicherheitsgründen nicht mit Git mitgepusht. Auf dem Server fehlt sie deshalb nach git pull – dadurch erscheint die Meldung "Appwrite ist nicht konfiguriert".
|
||||||
|
|
||||||
|
Aufgabe:
|
||||||
|
1. In das Projektverzeichnis der Webklar-App wechseln (dort wo package.json und .env.example liegen).
|
||||||
|
2. .env aus der Vorlage anlegen, falls sie noch nicht existiert:
|
||||||
|
- Befehl ausführen: npm run setup:env
|
||||||
|
- (Das Skript kopiert .env.example nach .env und überschreibt keine bestehende .env.)
|
||||||
|
3. Die App neu bauen, damit die Umgebungsvariablen ins Frontend kommen:
|
||||||
|
- Befehl ausführen: npm run build
|
||||||
|
4. Optional: Den Webserver/Prozess neu starten (z. B. PM2, systemd, nginx), der die gebauten Dateien aus dist/ ausliefert oder die App betreibt.
|
||||||
|
|
||||||
|
Alternativ kannst du in einem Schritt beides machen: npm run deploy:server (legt .env an, falls fehlend, und führt danach vite build aus).
|
||||||
|
|
||||||
|
Wichtig: Im Projektroot ausführen, also dort wo package.json und scripts/setup-env.js liegen.
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kurzversion (nur Befehle)
|
||||||
|
|
||||||
|
Wenn die KI schon im richtigen Projektordner ist:
|
||||||
|
|
||||||
|
```
|
||||||
|
Führe nacheinander aus:
|
||||||
|
1. npm run deploy:server
|
||||||
|
2. [Webserver/App neu starten, falls nötig – z. B. pm2 restart webklar oder systemctl restart dein-service]
|
||||||
|
```
|
||||||
@@ -6,6 +6,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
"setup:env": "node scripts/setup-env.cjs",
|
||||||
|
"deploy:server": "npm run setup:env && vite build",
|
||||||
"build:dev": "vite build --mode development",
|
"build:dev": "vite build --mode development",
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
|
|||||||
25
scripts/setup-env.cjs
Normal file
25
scripts/setup-env.cjs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* Legt .env aus .env.example an, falls .env noch nicht existiert.
|
||||||
|
* .cjs damit es unter "type": "module" (package.json) mit require() läuft.
|
||||||
|
* Für Deployment: deploy.sh kann vor dem Build .env.local aus Container-Env schreiben.
|
||||||
|
*/
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const envPath = path.join(process.cwd(), ".env");
|
||||||
|
const examplePath = path.join(process.cwd(), ".env.example");
|
||||||
|
|
||||||
|
if (fs.existsSync(envPath)) {
|
||||||
|
console.log(".env existiert bereits – nichts geändert.");
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(examplePath)) {
|
||||||
|
console.error(".env.example nicht gefunden. Bitte manuell .env anlegen.");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.copyFileSync(examplePath, envPath);
|
||||||
|
console.log(".env wurde aus .env.example erstellt. Bitte danach 'npm run build' ausführen.");
|
||||||
|
process.exit(0);
|
||||||
Reference in New Issue
Block a user