Spaces:
Sleeping
Sleeping
File size: 5,384 Bytes
32c5da4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | # ImageForge
ImageForge ist eine lokal laufende Desktop-App zur Bild-Erstellung per Prompt. Die App nutzt ein Python-Backend (FastAPI + Job-Queue) und ein Electron+React-Frontend.
## Features
- Prompt + Negative Prompt
- Modellauswahl (`dummy`, `localai`, `diffusion`)
- Bildtyp-Presets und Stil-Presets
- Image-to-Image (Startbild + Strength)
- Dashboard (Queue, Status, Retry/Cancel, Compare)
- Preset-System (CRUD)
- Export (PNG/JPG/WEBP)
- Prompt-Versionierung (`config_hash` in `meta.json`)
- API-Key + Rollenmodell (`viewer`, `operator`, `admin`)
- Rate-Limit pro Client
- Health + Readiness + Metrics
- Recovery von Job-Status nach Neustart
- Storage-Governance (Retention-Cleanup)
## Setup
```powershell
cd imageforge
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
npm --prefix frontend install
```
## Start
```powershell
npm run dev
```
Für den kompletten lokalen Stack (Backend + Frontend, inkl. Healthcheck):
```powershell
npm run dev:stack
```
## Serverbetrieb
```powershell
$env:IMAGEFORGE_HOST="0.0.0.0"
$env:IMAGEFORGE_PORT="8008"
$env:IMAGEFORGE_CORS_ORIGINS="http://localhost:5173"
$env:IMAGEFORGE_API_KEYS="viewerKey:viewer,opsKey:operator,adminKey:admin"
$env:IMAGEFORGE_RATE_LIMIT_PER_MIN="120"
$env:IMAGEFORGE_CONTENT_PROFILE="internal-relaxed"
$env:IMAGEFORGE_ADMIN_TOKEN="change-me"
python -m backend.app.main
```
## Wichtige Endpunkte
- `GET /health`
- `GET /ready`
- `GET /metrics`
- `GET /metrics/prometheus`
- `POST /generate`
- `GET /jobs`
- `POST /jobs/{id}/retry`
- `POST /jobs/{id}/cancel`
- `GET /dashboard/stats`
- `GET/POST/DELETE /presets`
- `POST /export`
- `GET/PUT /admin/settings`
- `POST /admin/cleanup`
## Security und Policy
- API-Key Header: `X-ImageForge-Api-Key`
- Admin Override Header: `X-ImageForge-Admin-Token`
- Policy Profile:
- `strict`
- `internal-relaxed`
- Audit-Logs:
- `policy_audit.log`
- `admin_audit.log`
## Backup / Restore
```powershell
npm run backup
npm run restore -- -Source backups\imageforge_backup_YYYYMMDD_HHMMSS
```
## Tests
```powershell
npm run test
npm run test:e2e
```
## CI
GitHub Actions Workflow liegt in `.github/workflows/ci.yml`.
## Optional LocalAI / Diffusion
```powershell
pip install diffusers torch transformers accelerate
$env:IMAGEFORGE_LOCALAI_MODEL="stabilityai/sd-turbo"
$env:IMAGEFORGE_LOCALAI_IMAGE_TIMEOUT_SECONDS="180"
$env:IMAGEFORGE_LOCALAI_LOCAL_ONLY="1"
$env:IMAGEFORGE_ENABLE_ATTENTION_SLICING="1"
```
Wenn `torch.cuda.is_available()` auf `False` bleibt, ist oft eine CPU-only Torch-Build installiert.
Für NVIDIA-GPU unter Windows kann eine CUDA-Build so installiert werden:
```powershell
python -m pip install --upgrade --index-url https://download.pytorch.org/whl/cu121 torch torchvision torchaudio
```
## Optional AUTOMATIC1111 Integration
ImageForge kann AUTOMATIC1111 als Provider nutzen (`model = a1111`).
### Empfohlener Produktionspfad (Stability Matrix)
Für stabilen Betrieb auf Windows wird eine **saubere, manager-gesteuerte Installation** empfohlen (statt manuell gepatchter `stable-diffusion-webui`-Klone):
1. Stability Matrix installieren und dort eine frische WebUI-Instanz mit aktivierter API starten.
2. API-Endpunkt prüfen:
```powershell
Invoke-RestMethod http://127.0.0.1:7860/sdapi/v1/sd-models
```
3. ImageForge auf diese Instanz zeigen (Default ist bereits `127.0.0.1:7860`):
```powershell
$env:IMAGEFORGE_A1111_BASE_URL="http://127.0.0.1:7860"
```
1. AUTOMATIC1111 lokal starten (mit API), z. B.:
```powershell
webui-user.bat --api
```
2. Optional URL/Timeout konfigurieren:
```powershell
$env:IMAGEFORGE_A1111_BASE_URL="http://127.0.0.1:7860"
$env:IMAGEFORGE_A1111_TIMEOUT_SECONDS="180"
$env:IMAGEFORGE_A1111_HEALTH_ENDPOINT="/sdapi/v1/sd-models"
$env:IMAGEFORGE_A1111_RETRY_COUNT="2"
$env:IMAGEFORGE_A1111_RETRY_BACKOFF_SECONDS="1.0"
```
Falls A1111 mit `--api-auth user:password` läuft:
```powershell
$env:IMAGEFORGE_A1111_API_USER="user"
$env:IMAGEFORGE_A1111_API_PASSWORD="password"
```
Alternativ als ein String:
```powershell
$env:IMAGEFORGE_A1111_API_AUTH="user:password"
```
Danach erscheint `AUTOMATIC1111` in `/models` als verfügbar, sobald der A1111-Server erreichbar ist.
### Robuster Betrieb bei A1111-Ausfällen
Wenn A1111 nicht erreichbar ist oder Fehler liefert, kann ImageForge automatisch auf andere Provider wechseln (z. B. `localai`, `diffusion`, `dummy`) statt den Job direkt abzubrechen.
```powershell
$env:IMAGEFORGE_ENABLE_AUTO_FALLBACK="1"
$env:IMAGEFORGE_FALLBACK_MODELS="a1111,localai,diffusion,dummy"
$env:IMAGEFORGE_FALLBACK_TIMEOUT_SECONDS="90"
$env:IMAGEFORGE_FALLBACK_MAX_STEPS="24"
```
- `IMAGEFORGE_ENABLE_AUTO_FALLBACK`: `1` aktiviert automatische Umschaltung.
- `IMAGEFORGE_FALLBACK_MODELS`: Priorisierte Reihenfolge der Fallback-Provider.
- `IMAGEFORGE_FALLBACK_TIMEOUT_SECONDS`: Kürzerer Timeout pro Fallback-Versuch.
- `IMAGEFORGE_FALLBACK_MAX_STEPS`: Deckel für Steps bei Fallback, um Laufzeit zu reduzieren.
### Stack-Readiness prüfen
Nach dem Start von Backend und A1111:
```powershell
./scripts/healthcheck-stack.ps1 -RequireA1111
```
Das Skript validiert `/health`, `/ready`, `/models` und optional die A1111-API selbst.
## Troubleshooting
- Falls Desktop-Build auf Windows an Symlink-Rechten scheitert: Entwickler-Modus oder Admin-Rechte aktivieren.
- Logs: `app.log`, `policy_audit.log`, `admin_audit.log`.
|