233 lines
6.6 KiB
Markdown
233 lines
6.6 KiB
Markdown
<p align="center">
|
|
<h1 align="center">EnvHelper</h1>
|
|
<p align="center">
|
|
Lokale Windows-App zum sauberen Ausfuellen von <code>.env</code>-Vorlagen.
|
|
</p>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img alt="Platform" src="https://img.shields.io/badge/platform-Windows-2563eb">
|
|
<img alt="Stack" src="https://img.shields.io/badge/stack-Electron%20%2B%20React%20%2B%20TypeScript-0f766e">
|
|
<img alt="Build" src="https://img.shields.io/badge/build-Gitea%20Runner-a855f7">
|
|
<img alt="Version" src="https://img.shields.io/badge/version-0.1.0-111827">
|
|
</p>
|
|
|
|
---
|
|
|
|
## Inhalt
|
|
|
|
- [Kurzbeschreibung](#kurzbeschreibung)
|
|
- [Features](#features)
|
|
- [Workflow](#workflow)
|
|
- [Beispiel](#beispiel)
|
|
- [Erkennung](#erkennung)
|
|
- [Standardwerte](#standardwerte)
|
|
- [Download und Artefakte](#download-und-artefakte)
|
|
- [Entwicklung](#entwicklung)
|
|
- [Windows Build](#windows-build)
|
|
- [Sicherheit](#sicherheit)
|
|
- [Projektinfos](#projektinfos)
|
|
|
|
---
|
|
|
|
## Kurzbeschreibung
|
|
|
|
EnvHelper liest `.env`-Dateien oder reinen Text ein, erkennt `CHANGE_ME`-Platzhalter und erzeugt passende Werte im erwarteten Format. Gleiche Platzhalter erhalten denselben Wert, damit zusammenhaengende Variablen wie `DATABASE_URL` und `POSTGRES_PASSWORD` synchron bleiben.
|
|
|
|
Die App arbeitet lokal als Desktop-Tool. Es werden keine Secrets an externe Dienste gesendet.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
| Bereich | Beschreibung |
|
|
| --- | --- |
|
|
| Datei und Text | `.env` laden, Text direkt einfuegen, Ergebnis kopieren oder speichern |
|
|
| Placeholder | Erkennt `CHANGE_ME...` Werte und ersetzt sie formatbewusst |
|
|
| Konsistenz | Gleiche Placeholder werden im gesamten Output identisch ersetzt |
|
|
| Formate | Passwoerter, Secrets, Base64, Hex, UUID, Ports, URLs, E-Mail, API-Key-Praefixe |
|
|
| Standardwerte | Erkennt naheliegende Defaults automatisch und erlaubt manuelle Overrides |
|
|
| Desktop UI | Kompakte Windows-App mit nativer Fensterleiste, Darkmode und Settings |
|
|
| Sprachen | Deutsch, Englisch, Spanisch, Franzoesisch, Niederlaendisch |
|
|
| Build | Windows Setup und Portable EXE ueber Gitea Runner |
|
|
|
|
---
|
|
|
|
## Workflow
|
|
|
|
```text
|
|
1. .env Datei laden oder Text einfuegen
|
|
2. Automatische Standardwerte pruefen oder eigene Defaults ergaenzen
|
|
3. CHANGE_ME Platzhalter generieren lassen
|
|
4. Output kopieren oder als neue .env speichern
|
|
```
|
|
|
|
```text
|
|
Input Verarbeitung Output
|
|
----- ------------ ------
|
|
DATABASE_URL=... Placeholder erkennen DATABASE_URL=...
|
|
POSTGRES_PASSWORD=... -> Format ableiten -> POSTGRES_PASSWORD=...
|
|
SESSION_SECRET=... Werte lokal erzeugen SESSION_SECRET=...
|
|
```
|
|
|
|
---
|
|
|
|
## Beispiel
|
|
|
|
Eingabe:
|
|
|
|
```env
|
|
APP_PORT=3000
|
|
NODE_ENV=production
|
|
PUBLIC_BASE_URL=CHANGE_ME_PUBLIC_URL
|
|
|
|
DATABASE_URL=postgresql://app_user:CHANGE_ME_POSTGRES_PASSWORD@postgres:5432/app_db
|
|
POSTGRES_PASSWORD=CHANGE_ME_POSTGRES_PASSWORD
|
|
|
|
SESSION_SECRET=CHANGE_ME_AT_LEAST_32_RANDOM_CHARACTERS
|
|
ENCRYPTION_KEY_BASE64=CHANGE_ME_32_RANDOM_BYTES_AS_BASE64
|
|
BOOTSTRAP_ADMIN_EMAIL=CHANGE_ME_EMAIL
|
|
BOOTSTRAP_ADMIN_PASSWORD=CHANGE_ME_LONG_INITIAL_ADMIN_PASSWORD
|
|
```
|
|
|
|
Moeglicher Output:
|
|
|
|
```env
|
|
APP_PORT=3000
|
|
NODE_ENV=production
|
|
PUBLIC_BASE_URL=https://example.local
|
|
|
|
DATABASE_URL=postgresql://app_user:K2d8rF7s...@postgres:5432/app_db
|
|
POSTGRES_PASSWORD=K2d8rF7s...
|
|
|
|
SESSION_SECRET=n9pS...urlSafeSecret
|
|
ENCRYPTION_KEY_BASE64=4G8t...base64Value
|
|
BOOTSTRAP_ADMIN_EMAIL=admin@example.local
|
|
BOOTSTRAP_ADMIN_PASSWORD=Wz4...strongPassword
|
|
```
|
|
|
|
Die echten Werte werden zufaellig lokal erzeugt.
|
|
|
|
---
|
|
|
|
## Erkennung
|
|
|
|
EnvHelper priorisiert den Inhalt des Platzhalters vor dem umgebenden Variablennamen. Dadurch wird zum Beispiel `CHANGE_ME_POSTGRES_PASSWORD` innerhalb einer `DATABASE_URL` als Passwort erkannt und nicht faelschlich als URL.
|
|
|
|
Unterstuetzte Muster sind unter anderem:
|
|
|
|
| Muster | Ergebnis |
|
|
| --- | --- |
|
|
| `CHANGE_ME_POSTGRES_PASSWORD` | starkes URL-sicheres Passwort |
|
|
| `CHANGE_ME_32_RANDOM_BYTES_AS_BASE64` | 32 zufaellige Bytes als Base64 |
|
|
| `CHANGE_ME_HEX_TOKEN` | zufaellige Bytes als Hex |
|
|
| `CHANGE_ME_UUID` | UUID v4 |
|
|
| `CHANGE_ME_PUBLIC_URL` | HTTPS URL |
|
|
| `CHANGE_ME_EMAIL` | E-Mail-Adresse |
|
|
| `STRIPE_SECRET_KEY=CHANGE_ME` | Stripe-artiger `sk_test_...` Wert |
|
|
| `STRIPE_WEBHOOK_SECRET=CHANGE_ME` | Stripe-artiger `whsec_...` Wert |
|
|
| `AWS_ACCESS_KEY_ID=CHANGE_ME` | AWS/S3-artiges Access-Key-ID Format |
|
|
|
|
Weitere Heuristiken decken typische `.env.example`-Variablen fuer SMTP, S3/MinIO, Redis, RabbitMQ, CORS, Log-Level, Environment-Flags und API Keys ab.
|
|
|
|
---
|
|
|
|
## Standardwerte
|
|
|
|
Standardwerte werden in einer eigenen Sektion angezeigt. Die App erkennt naheliegende Defaults automatisch, zum Beispiel:
|
|
|
|
| Key | Default |
|
|
| --- | --- |
|
|
| `BOOTSTRAP_ADMIN_EMAIL` | `admin@example.local` |
|
|
| `NODE_ENV` | `production` |
|
|
| `LOG_LEVEL` | `info` |
|
|
| `SMTP_PORT` | `587` |
|
|
| `S3_REGION` | `eu-central-1` |
|
|
| `REDIS_URL` | `redis://redis:6379/0` |
|
|
|
|
Manuelle Defaults koennen jederzeit hinzugefuegt werden. Sie ueberschreiben automatisch erkannte Defaults und wirken nur auf den Output, nicht auf die Eingabevorlage.
|
|
|
|
---
|
|
|
|
## Download und Artefakte
|
|
|
|
Der Windows-Build erzeugt zwei nutzbare Dateien:
|
|
|
|
```text
|
|
EnvHelper-0.1.0-setup-x64.exe
|
|
EnvHelper-0.1.0-portable-x64.exe
|
|
```
|
|
|
|
Die Dateien werden vom Gitea Runner als Actions-Artefakt und als Generic Package veroeffentlicht.
|
|
|
|
---
|
|
|
|
## Entwicklung
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Build pruefen:
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Windows-Paket lokal bauen:
|
|
|
|
```bash
|
|
npm run dist:win
|
|
```
|
|
|
|
---
|
|
|
|
## Windows Build
|
|
|
|
Der produktive Windows-Build laeuft ueber Gitea Actions:
|
|
|
|
```text
|
|
.gitea/workflows/build-windows.yml
|
|
```
|
|
|
|
Der Runner:
|
|
|
|
1. checkt das Repository aus,
|
|
2. installiert Node.js,
|
|
3. installiert Wine fuer Windows-Packaging auf Linux,
|
|
4. baut Vite, TypeScript und Electron,
|
|
5. erzeugt Setup und Portable EXE,
|
|
6. laedt Artefakte und Packages nach Gitea hoch.
|
|
|
|
---
|
|
|
|
## Sicherheit
|
|
|
|
EnvHelper erzeugt Werte lokal im Renderer mit Web-Crypto. Die App ist ein Helfer fuer `.env`-Vorlagen und ersetzt keine zentrale Secret-Verwaltung fuer produktive Infrastruktur.
|
|
|
|
### Windows Defender und SmartScreen
|
|
|
|
Windows kann Apps mit unbekanntem Herausgeber blockieren oder verzoegert starten. Das liegt normalerweise an fehlender Reputation oder fehlendem vertrauenswuerdigem Code-Signing-Zertifikat.
|
|
|
|
Der Workflow ist fuer Code Signing vorbereitet:
|
|
|
|
```text
|
|
WINDOWS_CSC_LINK
|
|
WINDOWS_CSC_KEY_PASSWORD
|
|
```
|
|
|
|
`WINDOWS_CSC_LINK` ist das Zertifikat, zum Beispiel als Base64-kodierte `.pfx` Datei oder als erreichbare Zertifikats-URL. `WINDOWS_CSC_KEY_PASSWORD` ist das Passwort des Zertifikats.
|
|
|
|
---
|
|
|
|
## Projektinfos
|
|
|
|
| Feld | Wert |
|
|
| --- | --- |
|
|
| Autor | `MrSphay` |
|
|
| Repository | `MrSphay/envHelper` |
|
|
| App-ID | `de.wilkensxl.envhelper` |
|
|
| Stack | Electron, React, Vite, TypeScript |
|
|
| README-Stil | Inspiriert von `andreasbm/readme` |
|