diff --git a/DEPLOY.md b/DEPLOY.md index e029e309..f758d603 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -1,70 +1,110 @@ # DOGFATHER UNIVERSE — Go-Live-Anleitung -## ✅ Status: bereits live, eigene Domain seit 03.08.2026 angeschlossen +## ⚠️ ZUERST LESEN: Die echte Seite läuft auf dem NETCUP-SERVER, nicht auf Cloudflare -Die Website läuft — kostenlos, auf deinem eigenen Cloudflare-Account, unter drei Adressen -gleichzeitig (alle zeigen auf denselben Worker): +Seit dem öffentlichen Start (21.08.2026) wird `dogfather-universe.com` vom **eigenen +Netcup-Server** ausgeliefert. Der alte Cloudflare-Worker existiert zwar noch und lässt sich +auch weiterhin deployen — **er erreicht die echte Domain aber nicht mehr.** -- **Eigene Domain:** https://dogfather-universe.com -- **www-Variante:** https://www.dogfather-universe.com -- **workers.dev (bleibt zusätzlich aktiv):** https://dogfather-universe.dogfather1608.workers.dev -- **Bewerbungs-Postfach-Worker:** https://dogfather-universe-postfach.dogfather1608.workers.dev +Das ist die gefährlichste Stelle im ganzen Projekt: `npx wrangler deploy` läuft ohne Fehler +durch und meldet „Deployed", die Änderung ist danach auf `…workers.dev` sichtbar — und auf +`dogfather-universe.com` passiert **nichts**. Genau so ist es am 22.08.2026 beim Sprachfenster- +Fix passiert (siehe unten). Wer nur die Erfolgsmeldung von Wrangler liest, meldet „ist live", +obwohl Filipe auf dem Handy weiterhin den kaputten Stand sieht. -Domain-Anbindung lief über `routes` mit `custom_domain = true` in `wrangler.toml` — da die Zone -`dogfather-universe.com` schon vorher auf Cloudflare lag, waren DNS + SSL-Zertifikat sofort beim -Deploy automatisch aktiv, kein manueller DNS-Schritt nötig. Alle -`REPLACE-WITH-YOUR-DOMAIN.tld`-Platzhalter im Code sind bereits durch die echte Domain ersetzt -(Social-Media-Vorschaubilder, Sitemap, robots.txt). +| Adresse | Läuft wo | Wird von wo beliefert | +|---|---|---| +| **`dogfather-universe.com`** ← **die echte Seite** | **Netcup**, Caddy → `localhost:4100`, systemd-Dienst `dogiweb.service`, Verzeichnis `/home/dogiweb/dogfather-universe/` | Gitea `git.dogfather-universe.com/DogFatherGit/dogfather-universe`, Zweig `main` | +| `www.dogfather-universe.com` | dasselbe (Caddy nimmt beide Namen) | dasselbe | +| `dogfather-universe.dogfather1608.workers.dev` | Cloudflare Worker (Altbestand) | `npx wrangler deploy` | -**Noch offen:** `assets/img/og-cover.jpg` (1200×630px Social-Preview-Bild) fehlt noch — optional, -nicht blockierend. CORS im Postfach-Worker ist weiterhin bewusst offen (`"*"`) statt auf die -Domain eingeschränkt, siehe TODO-Kommentar in `cloudflare-worker/src/lib/http.js` (eigener, -größerer Umbau nötig, um keine Login-/Zahlungsendpunkte zu riskieren). +Erkennungsmerkmal im Zweifel: `curl -sI https://dogfather-universe.com/ | grep -i via` +→ zeigt `via: 1.1 Caddy`, also Netcup. Käme die Seite von Cloudflare, stünde da kein Caddy. -## Änderungen künftig live schalten - -Jede Änderung an den Dateien im Ordner `DogiHompage/` wird erst live, wenn erneut deployed -wird: +## So wird eine Änderung wirklich live (der einzige gültige Weg) ```bash -cd DogiHompage -npx wrangler deploy +cd ~/Documents/Obelix/DogiHompage +# 1. Änderung committen +git add && git commit +# 2. In die Ablage schieben (Gitea ist die Quelle der Wahrheit) +git push gitea master:main +# 3. Auf dem Server holen +ssh dogfather-server "cd /home/dogiweb/dogfather-universe && git pull --ff-only origin main" ``` -Für Änderungen am Bewerbungs-Postfach-Worker selbst (`cloudflare-worker/src/worker.js`): +Statische Dateien (HTML/CSS/JS/Bilder) sind damit **sofort** live — der Express-Dienst liefert +das Verzeichnis direkt aus, ein Neustart ist dafür **nicht** nötig. + +Nur wenn Server-Code geändert wurde (`server/`, `server-internal/`): ```bash -cd DogiHompage/cloudflare-worker -npx wrangler deploy +ssh dogfather-server "sudo systemctl restart dogiweb.service" # öffentliche Seite +ssh dogfather-server "sudo systemctl restart dogiintern.service" # interner Bereich ``` -## Alternative Hosting-Optionen (falls du weg von Cloudflare willst) +**Achtung bei Zweig-Namen:** lokal heißt der Zweig `master`, auf dem Server und in Gitea `main`. +Deshalb `master:main` beim Push. Ein blankes `git push` schiebt sonst nach `gitea/master` — +einen alten, abgehängten Zweig, den niemand ausliefert. -Die Seite ist reines statisches HTML/CSS/JS und läuft überall. Configs liegen bereit: +## Pflicht-Prüfung nach JEDEM Deploy -- **Netlify:** `netlify.toml` liegt vor — Ordner `DogiHompage/` auf netlify.com hochladen - oder Repo verbinden. -- **GitHub Pages:** `.nojekyll` liegt vor — Repo pushen, unter **Settings → Pages** aktivieren. - -In beiden Fällen bleibt der Bewerbungs-Postfach-Worker unabhängig auf Cloudflare bestehen (er ist -eine reine API, kein Teil des Frontends) — `API_BASE_URL` in `assets/js/forms.js`, `index.html` -und `postfach.html` zeigt bereits dorthin. - -## Git-Repo - -Bereits eingerichtet (`DogiHompage/.git`), erster Commit vorhanden. Bei Bedarf zu GitHub -pushen: +Nicht auf die Erfolgsmeldung des Deploy-Befehls verlassen, sondern **die echte Domain fragen**: ```bash -cd DogiHompage -git remote add origin -git push -u origin main +# Kommt meine Änderung wirklich auf der Seite an, die Filipe benutzt? +curl -s https://dogfather-universe.com/assets/css/main.css | grep "" ``` -## Nach jedem Go-Live-Schritt prüfen +Erst wenn das anschlägt, gilt eine Änderung als erledigt. Bei optischen Änderungen zusätzlich +mit einem echten Browser im Handy-Format nachsehen (Playwright, Viewport 390×844) und einen +Screenshot machen — Text im Quelltext beweist noch nicht, dass es auch richtig aussieht. -- [ ] Website lädt: https://dogfather-universe.dogfather1608.workers.dev -- [ ] Bewerbungsformular sendet erfolgreich (im Postfach zeigt sich ein neuer Eintrag) -- [ ] Live-Punkt auf der Startseite reagiert auf den Toggle im Postfach -- [ ] Nach Domain-Wechsel: Link-Vorschau testen, z.B. mit dem - [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/) +## Der Cloudflare-Worker (Altbestand) + +Bleibt vorerst bestehen, liefert aber nur noch `…workers.dev` aus. Ein Deploy dorthin ändert +an der echten Seite nichts. Der Versuch, die Domain per `wrangler` wieder anzubinden, schlägt +bewusst fehl: + +``` +Hostname 'dogfather-universe.com' already has externally managed DNS records +``` + +Das ist **kein Fehler, den man beheben sollte** — es ist die Schutzwirkung davon, dass die +Domain jetzt auf Netcup zeigt. `routes` mit `custom_domain = true` steht deshalb nur noch aus +historischen Gründen in `wrangler.toml`. + +Der Bewerbungs-Postfach-Worker ist davon unabhängig und läuft weiter auf Cloudflare: +`https://dogfather-universe-postfach.dogfather1608.workers.dev` (`API_BASE_URL` in +`assets/js/forms.js`, `index.html`, `postfach.html`). + +## Git-Ablage + +- **Quelle der Wahrheit:** Gitea, `git.dogfather-universe.com/DogFatherGit/dogfather-universe`, + Zweig `main` (auf dem eigenen Server, kostenlos, in eigener Hand). +- Lokal heißt das Fernziel `gitea`, der Zweig `master`. +- Auf dem Server heißt das Fernziel `origin`, der Zweig `main`. +- `gitea/master` ist ein **alter, abgehängter Zweig** (Stand 44086b0) — nicht benutzen. +- Sicherungszweig `server-stand-vor-abgleich-22-08-2026` auf dem Server: der Stand, bevor die + beiden Fassungen am 22.08.2026 zusammengeführt wurden. Kann irgendwann weg, kostet nichts. + +**Nie direkt auf dem Server Dateien bearbeiten, ohne sie danach in Gitea nachzutragen.** Genau +dadurch waren am 22.08.2026 zwei Reparaturen (Autofokus in `gate.html`, abgeschnittene +Öffnen-Knöpfe in `verwaltung.html`) nur auf dem Server vorhanden und wären beim nächsten +Deploy vom Rechner aus überschrieben worden. + +## Offene Punkte + +- Mehrere Hintergrundbilder liegen **nur auf dem Server und auf Filipes Rechner**, aber in + keiner Git-Ablage (`bg-bewerben-modi*.jpg`, `bg-bewerben-scout*.jpg`, `bg-links-seite*.jpg`, + `bg-medien-casper*.jpg`, `bg-medien-hasidog*.jpg`, `bg-supporter*.jpg`, `bg-modis.jpg`, + Ordner `assets/img/stimmen-avatare/`). Die Seiten `bewerben-modi.html`, `links.html`, + `medien-casper.html`, `supporter.html` u.a. benutzen sie live. Geht der Server verloren, + fehlen sie. Sie sind bewusst **nicht** in `.gitignore` — sie wurden schlicht nie hinzugefügt. +- CORS im Postfach-Worker weiterhin offen (`"*"`), siehe TODO in + `cloudflare-worker/src/lib/http.js`. + +## Alternative Hosting-Optionen (nur als Notfall-Plan) + +Die Seite ist reines statisches HTML/CSS/JS und läuft überall — `netlify.toml` und `.nojekyll` +liegen bereit. Relevant nur, falls der Netcup-Server einmal ausfällt.