# Asset-URLs für Multi-Domain Vite-Setup ## Empfohlene Asset-URLs Für dein Multi-Domain-Setup empfehle ich folgende Asset-URLs: ### ✅ Aktuelle Konfiguration (EMPFOHLEN) | Bereich | Domain | Asset-URL | Port | Verwendung | |---------|--------|-----------|------|------------| | **Backend** | presseportale.test | `assets.presseportale.test` | 5177 | Portal + FluxUI | | **Frontend** | presseecho.test
businessportal24.test | `assets-web.presseportale.test` | 5178 | Beide Frontend-Domains | ### Warum diese URLs? #### 1. **assets.presseportale.test** (Portal/Backend) - ✅ Kurz und prägnant - ✅ Eindeutig dem Portal zugeordnet - ✅ Keine zusätzliche Subdomain-Tiefe - ✅ Folgt gängiger Konvention #### 2. **assets-web.presseportale.test** (Web/Frontend) - ✅ Klar als "Web" (Frontend) gekennzeichnet - ✅ Ein Asset-Server für beide Frontend-Domains - ✅ Gute Trennung zu Portal-Assets - ✅ Einfach zu merken ## Alternative Namenskonventionen Falls du andere URLs bevorzugst, hier sind Alternativen: ### Option A: Mit Suffix-Präfix ``` portal-assets.presseportale.test → Port 5177 web-assets.presseportale.test → Port 5178 ``` - ⚠️ Etwas länger - ✅ Sehr explizit ### Option B: Mit "vite" im Namen ``` vite.presseportale.test → Port 5177 vite-web.presseportale.test → Port 5178 ``` - ⚠️ Technologie-spezifisch (was wenn du später zu einem anderen Build-Tool wechselst?) - ⚠️ Weniger klar was geladen wird ### Option C: Separate Domains pro Frontend ``` assets.presseportale.test → Port 5177 (Portal) assets.presseecho.test → Port 5178 (Presseecho) assets.businessportal24.test → Port 5178 (Businessportal24) ``` - ⚠️ Mehr DNS-Einträge nötig - ⚠️ Beide Frontend-Domains würden trotzdem auf denselben Port zeigen - ❌ Unnötig komplex ### ✅ Empfehlung: Bleib bei der aktuellen Lösung! ## Traefik-Konfiguration (aktuell in docker-compose.yml) ```yaml # Portal Assets (Backend) - "traefik.http.routers.assets-portal.rule=Host(`assets.presseportale.test`)" - "traefik.http.routers.assets-portal.entrypoints=websecure" - "traefik.http.routers.assets-portal.tls=true" - "traefik.http.routers.assets-portal.service=assets-portal-service" - "traefik.http.services.assets-portal-service.loadbalancer.server.port=5177" - "traefik.http.services.assets-portal-service.loadbalancer.server.scheme=http" # Web Assets (Frontend) - "traefik.http.routers.assets-web.rule=Host(`assets-web.presseportale.test`)" - "traefik.http.routers.assets-web.entrypoints=websecure" - "traefik.http.routers.assets-web.tls=true" - "traefik.http.routers.assets-web.service=assets-web-service" - "traefik.http.services.assets-web-service.loadbalancer.server.port=5178" - "traefik.http.services.assets-web-service.loadbalancer.server.scheme=http" ``` ## Port-Mapping in docker-compose.yml ```yaml ports: - '${VITE_PORT_PORTAL:-5177}:5177' - '${VITE_PORT_WEB:-5178}:5178' ``` ## Umgebungsvariablen (.env) ```env # Vite Asset Domains ASSET_URL_PORTAL=https://assets.presseportale.test ASSET_URL_WEB=https://assets-web.presseportale.test # Vite Development Ports VITE_PORT_PORTAL=5177 VITE_PORT_WEB=5178 ``` ## DNS / Hosts-Datei Füge folgende Einträge zu deiner `/etc/hosts` (Linux/Mac) oder `C:\Windows\System32\drivers\etc\hosts` (Windows) hinzu: ``` 127.0.0.1 presseportale.test 127.0.0.1 presseecho.test 127.0.0.1 businessportal24.test 127.0.0.1 assets.presseportale.test 127.0.0.1 assets-web.presseportale.test ``` ## Vite-Konfigurationen ### vite.portal.config.js ```javascript export default defineConfig({ // ... server: { https: false, cors: true, host: "0.0.0.0", port: 5177, hmr: { host: "assets.presseportale.test", // ← Asset-URL protocol: "wss", }, }, // ... }); ``` ### vite.web.config.js ```javascript export default defineConfig({ // ... server: { https: false, cors: true, host: "0.0.0.0", port: 5178, hmr: { host: "assets-web.presseportale.test", // ← Asset-URL protocol: "wss", }, }, // ... }); ``` ## Wie funktioniert das Routing? ``` Browser-Request ↓ 1. User besucht: https://presseecho.test ↓ 2. Laravel lädt View mit: @vite(['resources/css/web/theme-presseecho.css', ...]) ↓ 3. Vite-Helper generiert: ↓ 4. Browser requested: assets-web.presseportale.test ↓ 5. Traefik routet zu: Container Port 5178 ↓ 6. Vite Web Server antwortet ↓ 7. HMR WebSocket öffnet: wss://assets-web.presseportale.test ↓ 8. ✅ Hot Module Replacement funktioniert! ``` ## Testing ### 1. DNS-Auflösung testen ```bash # Sollte zu 127.0.0.1 auflösen ping assets.presseportale.test ping assets-web.presseportale.test ``` ### 2. Vite-Server starten ```bash npm run dev:all ``` Du solltest sehen: ``` [PORTAL] VITE v6.0.x ready in xxx ms [PORTAL] ➜ Local: http://0.0.0.0:5177/ [PORTAL] ➜ Network: use --host to expose [WEB] VITE v6.0.x ready in xxx ms [WEB] ➜ Local: http://0.0.0.0:5178/ ``` ### 3. Browser-Test Öffne: - https://presseportale.test (sollte Assets von assets.presseportale.test laden) - https://presseecho.test (sollte Assets von assets-web.presseportale.test laden) - https://businessportal24.test (sollte Assets von assets-web.presseportale.test laden) ### 4. HMR-Test 1. Öffne Browser DevTools (F12) 2. Gehe zu "Network" Tab 3. Filter auf "WS" (WebSocket) 4. Du solltest Verbindungen zu `wss://assets.*.presseportale.test` sehen 5. Ändere eine CSS-Datei 6. Browser sollte automatisch neu laden (ohne vollständigen Page-Refresh) ## Troubleshooting ### Assets werden nicht geladen **Problem:** Assets 404 oder laden nicht **Lösung:** ```bash # 1. Vite-Server läuft? npm run dev:all # 2. Ports erreichbar? curl http://localhost:5177 curl http://localhost:5178 # 3. Traefik routet korrekt? docker compose logs laravel.test | grep traefik ``` ### HMR funktioniert nicht **Problem:** Hot Module Replacement lädt nicht automatisch neu **Lösung:** 1. Browser-Console checken (F12 → Console) 2. WebSocket-Verbindung prüfen (F12 → Network → WS) 3. Falls "WebSocket connection failed": ```bash # Traefik-Logs checken docker compose logs laravel.test # Vite-Server neu starten npm run dev:all ``` ### "Mixed Content"-Fehler **Problem:** Browser blockiert HTTP-Assets auf HTTPS-Site **Lösung:** - Stelle sicher, dass HMR mit `wss://` (nicht `ws://`) läuft - Prüfe `protocol: "wss"` in Vite-Configs - Traefik sollte SSL für Asset-Domains bereitstellen ## Zusammenfassung ### ✅ Verwende diese Asset-URLs: ``` assets.presseportale.test → Port 5177 (Portal/Backend) assets-web.presseportale.test → Port 5178 (Web/Frontend) ``` ### ✅ Vorteile: - Kurz und prägnant - Klare Trennung Backend/Frontend - Ein Asset-Server für beide Frontend-Domains - Einfach zu merken und zu konfigurieren - Folgt Best Practices ### ✅ Bereits konfiguriert in: - ✅ docker-compose.yml (Traefik-Labels + Port-Mapping) - ✅ vite.portal.config.js (HMR-Host) - ✅ vite.web.config.js (HMR-Host) - ✅ .env.example (Variablen-Vorlage) **Du bist ready to go! 🚀**