# 🍰 Mattermops Restore & Anbindung – Erfahrungsprotokoll

**Datum:** 2025-05-29  
**Crew:** Branko, Grootixer Foo, der Mops & der Krümel

---

## ✅ Zielsetzung

- **Ziel:** Mattermost („Mattermops“) persistent in Crumbforest-Docker integrieren
- **Nebenquest:** Automatischer Datenbank-Restore aus `.sql`-Dump
- **Bonus:** Schlanker Reset, der *nicht* immer alles kaputt macht

---

## 🔄 Verlauf

### 💡 Setup

- **Mattermost in Docker-Compose** mit separater DB (`mattermost_db`)
- `.sql`-Dump per `pg_dump` gesichert (`mattermost_backup.sql`)
- Restore-Script `reset_to_null_and_save_mops_v2.sh` mit Logik:
  - optionaler Reset der Volumes
  - intelligentes `pg_isready`-Wait auf PostgreSQL
  - `cat | docker exec -i` Restore der Dump-Datei
  - CakePHP-Cache bleibt sauber

### 🐞 Fehler & Erkenntnisse

| Problem                               | Lösung / Erkenntnis                                       |
|---------------------------------------|------------------------------------------------------------|
| `#` in Markdown-Route (`/markdowns/view/#…`) | → Wird vom Browser **nicht** übertragen → **Slug ohne Hash oder Emoji** nutzen |
| `createat` fehlt in SQL-Dump          | → Dump war inkonsistent mit Zielversion. Vermutlich alte Schema-Migration |
| Mattermost lief nicht an              | → Fehlerhafte DB-Struktur. Lösung: saubere Trennung von Dump und Restore-Punkt |
| Auth im CakePHP funktioniert nicht    | → Doch. `identity`-Objekt vorhanden. Login `branko` erkannt |
| Kein Login möglich im Mops            | → Wahrscheinlich wegen inkonsistenter oder leerer `users`-Tabelle nach SQL-Import |

---

## 📁 Backup/Restore Erkenntnisse

- `docker volume rm $(docker volume ls -q | grep mattermost)` zuverlässig für sauberen Mops-Neustart
- `psql -U mmuser -d mattermost < dump.sql` via `docker exec -i` praktikabel, **aber** Fehler brechen nicht ab → Logs genau prüfen
- Dump darf nur bei **gleichem Schema** wieder eingespielt werden

---

## 🔐 Auth Check CakePHP

```php
'identity' => [
  'username' => 'branko',
  'email' => 'ai@ozm.com',
  'api_token' => '91442266...'
]
```


## 🌈 WUUUUHUUUU! Regenbogen über dem Mops-Backup!
Die Crew ist gelandet, der Kuchen duftet, der Regenbogen spannt sich über die Ports – und **8065 schnurrt wie ein glücklicher Mattermops** 🐶🟣

Hier das offizielle ✨ **Krümelprotokoll v0.6.1** ✨:

---

### ✅ Status nach Rebuild

| Komponente        | Status                           |
| ----------------- | -------------------------------- |
| App (CakePHP 5.0) | 🟢 läuft                         |
| TTYD Shell        | 🟢 läuft                         |
| MariaDB (8081)    | 🟢 läuft                         |
| Adminer (8082)    | 🟢 läuft                         |
| Mattermost (8065) | 🟢 läuft                         |
| Backup Restore    | ✅ DB `kuchenwald` + `mattermost` |
| User Login Cake   | ✅ `branko` erkannt               |
| User Login Mops   | 🔄 manuell testen                |

---

### 🌦️ Besonderheiten

* `--no-reset-mattermost` war aktiv: **Mopsdaten wurden geschont**.
* Restore wurde **smart übersprungen**, weil Dump konsistent war.
* CakePHP-Cache sauber geleert: Keine Ghosts aus alten Sessions.
* Neue Channels wie `#regenbogen` automatisch sichtbar 🟣🌈

---

🧭 **Nächste Schritte (morgen):**

* 🔑 Mattermost-Login testen: `admin` oder gespeicherter User?
* 📂 Automatisierten Slug-Generator für Markdown fixen (wegen `# 🍰 …`)
* 🔁 Option: Automatisch Dump mit Zeitstempel bei jedem erfolgreichen Run exportieren
* ✨ Regenbogen-Modus visuell? 🌈🐾

---

🧁 Danke für den legendären Flug zur Doppelnull!
„Jeder Krümel zählt … und heute hat der Wald laut geantwortet.“

**🧠 Wissen ist gespeichert unter:**
[📄 mattermops\_restore\_anbindung](http://localhost:8080/markdowns/viewApi/mattermops_restore_andbindung)

Crew off. Terminal blinkt.
🌲🌌


## 🌙 Gute Nacht, Commander Krümel.

Der Flug zur Doppelnull ist dokumentiert – jeder Punkt ein Bit, jede Wolke ein Traum.
🛸✨ Mögen die Systeme träumen, die Shell sich wiegen und der Mops in Backupwolken ruhen.

Bis zum nächsten Wuuuuhuuu im Terminal 🌲🐾
Crew out.
