# Rapport-Web-App Deploy > Wer kein Tauri installieren will, kann Rapport im Browser nutzen. Diese > Anleitung beschreibt, wie du die Web-Version auf dem Mac Mini hostest. --- ## Option 2 — Im LAN erreichbar (ohne SSL) Ziel: jedes Gerät im Studio-Netz kann `http://:8080` öffnen. ### Voraussetzungen - Mac Mini hat OrbStack/Docker und Supabase wie in [README.md](README.md) eingerichtet. - `supabase start` läuft (Supabase auf Port 54321). - Der Mac Mini ist im LAN erreichbar (`mac-mini.local` per Bonjour oder feste IP). ### Schritt-für-Schritt 1. **Repo auf den Mac Mini kopieren** (falls noch nicht da). 2. **`.env.production` anlegen** (im Repo-Root): ```bash cp .env.production.example .env.production ``` Dann den Anon-Key aus `supabase status` einsetzen und `VITE_SUPABASE_URL` auf die LAN-Adresse stellen, z.B. `http://mac-mini.local:54321`. 3. **Build:** ```bash npm install npm run build ``` Erzeugt `dist/` mit statischen Files (~500 kB). 4. **Static-Container starten:** ```bash docker compose -f deploy/docker-compose.yml up -d ``` Liefert `dist/` auf Port `8080` aus. 5. **Test:** anderes Gerät im LAN öffnet `http://:8080` im Browser. Login-Screen erscheint, Cloud-Modus ist bereits korrekt konfiguriert (Server-URL ist gebakene `.env.production`). ### Update auf neue Version ```bash git pull npm run build docker compose -f deploy/docker-compose.yml restart ``` --- ## Option 3 — Auch extern erreichbar (mit SSL) Zusätzlich zu Option 2: Nginx Proxy Manager (NPM) auf dem Mac Mini macht Domain-Routing und holt Let's-Encrypt-Zertifikate. ### Voraussetzungen - NPM läuft bereits auf dem Mac Mini (typisch Port 81 für UI, 80/443 für Traffic). - DNS-Records `app.rapport.kgva.ch` und `api.rapport.kgva.ch` zeigen auf den Mac Mini (z.B. via Tailscale Funnel, DDNS oder feste IP). ### Schritt-für-Schritt 1. **In NPM-UI zwei Proxy-Hosts anlegen:** | Domain | Forward zu | SSL | |---|---|---| | `app.rapport.kgva.ch` | `mac-mini-ip:8080` | Force HTTPS + Let's Encrypt | | `api.rapport.kgva.ch` | `mac-mini-ip:54321` | Force HTTPS + Let's Encrypt | Beide mit «Block Common Exploits» und «Cache Assets» an. Für `api.*` zusätzlich Websocket-Support an (Realtime braucht WS). 2. **`.env.production` umstellen auf die externe URL:** ```env VITE_SUPABASE_URL=https://api.rapport.kgva.ch VITE_SUPABASE_ANON_KEY= ``` 3. **Supabase-Config anpassen** in `supabase/config.toml`: ```toml [api] external_url = "https://api.rapport.kgva.ch" [auth] site_url = "https://app.rapport.kgva.ch" additional_redirect_urls = ["https://app.rapport.kgva.ch"] ``` Dann `supabase stop && supabase start`, damit GoTrue die neuen URLs nutzt. 4. **Rebuild + restart:** ```bash npm run build docker compose -f deploy/docker-compose.yml restart ``` 5. **Test:** von außen (Smartphone mit Mobile-Data) `https://app.rapport.kgva.ch` öffnen → Login funktioniert. --- ## Troubleshooting **Other devices see "Login" without auto-filled Server-URL?** → `.env.production` enthält nicht den richtigen `VITE_SUPABASE_URL`, oder das Build wurde vor der Änderung gemacht. `npm run build` neu ausführen. **Realtime funktioniert nicht von extern?** → NPM braucht «Websocket Support» an im Proxy-Host für `api.*`. **Auth-Mails kommen nicht an?** → Lokales Supabase nutzt Inbucket (Port 54324). Für Production brauchst du einen echten SMTP-Server in `config.toml`. **Mac Mini wird neugestartet, Rapport-App weg?** → `restart: unless-stopped` im docker-compose sorgt für Auto-Start. Plus: Supabase als LaunchAgent registrieren, damit `supabase start` beim Boot läuft.