Initial commit: Crumbforest Architecture Refinement v1 (Clean)
This commit is contained in:
215
docs/crumbforest/project_honeypot.md
Normal file
215
docs/crumbforest/project_honeypot.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# Honigtopf 🍯 – Tür der Täuschung (Crumbforest)
|
||||
|
||||
> **Epigraph**
|
||||
> Honig findet man im Wald, und wer den Topf findet, muss wohl zuerst mit **Schraubär** reden 🐻🔧, der 🕊️ der 🦉 sich vorstellen…
|
||||
> Der Wald atmet – **jeder Krümel zählt** – **jeder zählt mit** – **nur einer entscheidet** – nach Freigabe **Menschen vs. Maschinen** – *nach Liebe durch ein Kind* ❤️
|
||||
|
||||
---
|
||||
|
||||
## 1) Warum der Honigtopf?
|
||||
|
||||
* **Kein Fallensteller**, sondern **Fragenraum**: Wir fangen alles auf, was „falsch“ oder „schräg“ in den Wald ruft – ohne zu schaden.
|
||||
* **Pädagogik**: Fehler ≠ Schuld. Fehler = Start.
|
||||
* **Transparenz**: Sichtbares Logging als **KrümelLog** (menschlich lesbar) + **JSONL** (auswertbar).
|
||||
* **Satire statt Zynismus**: Kunst & Humor entschärfen Angst und zeigen Muster – *Tür der Täuschung* als Spiegel, nicht als Knüppel.
|
||||
|
||||
---
|
||||
|
||||
## 2) Prinzipien (Eulencode)
|
||||
|
||||
1. **Spirale, nicht Falle** → Frage → Beobachtung → Echo → Anpassung → Frage.
|
||||
2. **Sichere Trennung** → eigener Container, keine Berührung mit Produktiv-Wald.
|
||||
3. **Freundlicher Ton** → Feedback *friendly/echo/silent*.
|
||||
4. **Datensparsam** → IP nur zweckgebunden; Rotation; Delete-Path.
|
||||
5. **Klar gekennzeichnete Satire** → Kunstprojekt, Rollen/Masken statt Personen-Hetze.
|
||||
|
||||
---
|
||||
|
||||
## 3) Rollen im Honigtopf
|
||||
|
||||
* **Schraubär 🐻🔧** – Ranger der Grenzen. Erklärt Werkzeuge, Ports, sichere Handhabung.
|
||||
* **Eule 🦉** – Klarheit & Kontext. Gibt Hinweise, wo die richtige Tür ist.
|
||||
* **Bugsy 🐞** – erklärt Fehlversuche kindgerecht.
|
||||
* **FunkFox 🦊** – rappt das Echo, wenn Satire tanzen soll.
|
||||
* **Taube 🕊️** – trägt die Nachricht nach draußen (Webhook an CrumbAPI/Eule).
|
||||
|
||||
---
|
||||
|
||||
## 4) Architektur (leichtgewichtig)
|
||||
|
||||
* **Service**: `honigtopf` als eigener Docker-Container (FastAPI + Uvicorn).
|
||||
* **Eingänge**: HTTP (alle Routen), WebSocket `/ws`.
|
||||
* **Ausgänge**:
|
||||
|
||||
* `krumellog.log` (menschlich),
|
||||
* `events.jsonl` (Maschine),
|
||||
* optional `WEBHOOK_URL` (CrumbAPI/Eule/Bugsy).
|
||||
* **Feedback**: konfigurierbar via ENV (`FEEDBACK_MODE`, `HONIGTOPF_ECHO_ROLE`).
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml (Ausschnitt)
|
||||
services:
|
||||
honigtopf:
|
||||
build:
|
||||
context: ./honigtopf
|
||||
container_name: honigtopf
|
||||
environment:
|
||||
HONIGTOPF_NAME: "Honigtopf Nordlicht"
|
||||
HONIGTOPF_ENV: "sandbox"
|
||||
HONIGTOPF_ECHO_ROLE: "Bugsy"
|
||||
LOG_DIR: "/var/log/honigtopf"
|
||||
LOG_ROTATE_SIZE: "10_000_000"
|
||||
FEEDBACK_MODE: "friendly" # friendly|silent|echo
|
||||
WEBHOOK_URL: "" # z.B. https://crumbapi.local/hooks/honigtopf
|
||||
volumes:
|
||||
- ./honigtopf/var/log:/var/log/honigtopf
|
||||
ports:
|
||||
- "8088:8088"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- crumbforest_sandbox
|
||||
|
||||
networks:
|
||||
crumbforest_sandbox:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
```dockerfile
|
||||
# honigtopf/Dockerfile
|
||||
FROM python:3.11-slim
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends tzdata curl ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
COPY app ./app
|
||||
ENV LOG_DIR=/var/log/honigtopf
|
||||
RUN mkdir -p $LOG_DIR && useradd -ms /bin/bash honey && chown -R honey:honey $LOG_DIR /app
|
||||
USER honey
|
||||
EXPOSE 8088
|
||||
CMD ["python", "-m", "app.main"]
|
||||
```
|
||||
|
||||
```text
|
||||
# honigtopf/requirements.txt
|
||||
fastapi==0.115.0
|
||||
uvicorn[standard]==0.30.6
|
||||
orjson==3.10.7
|
||||
pydantic==2.9.2
|
||||
```
|
||||
|
||||
```python
|
||||
# honigtopf/app/main.py (gekürzt – Kernlogik)
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5) Satire-Futter: „Tür der Täuschung“ (Kunst & Satire)
|
||||
|
||||
> **Ziel**: *Lockfutter*, das zum Lachen und Nachdenken anregt – klar markiert als Satire, mit Masken/Rollen statt Personenangriffen.
|
||||
|
||||
**Module (Ideen):**
|
||||
|
||||
* **Trump‑o‑Meter** 🎺 → Skala: *Teleprompter‑Flüstern* bis *Saxophon‑Solo*.
|
||||
* **Putin‑Scale** 🐻 → *Bärenmütze* bis *Raketen‑Balalaika* (Rollen‑Meme).
|
||||
* **Adenauer‑N.W.A.** 🎤 → 50s‑Zitate über 90s‑Beats (Kontextverschiebung zeigt Absurdität).
|
||||
* **Blaue A‑Schlümpfe** 💙🧩 → Figuren ohne Herz, die im Regenbogenfeld kurz transparent werden – visuelles Meme, keine Person.
|
||||
|
||||
**Beispiel‑Event (JSONL‑Snack für `events.jsonl`):**
|
||||
|
||||
```json
|
||||
{"type":"satire","channel":"tuer-der-taeuschung","payload":{"module":"trump-o-meter","level":"saxophon-solo","caption":"Der Teleprompter tanzt."}}
|
||||
```
|
||||
|
||||
**Kennzeichnung & Schutz:**
|
||||
|
||||
* Jedes Satire‑Snippet trägt `satire:true` und einen **Masken‑Tag** (z.B. `mask: "balalaika"`).
|
||||
* Keine Aufrufe, keine Hetze, nur Überzeichnung & Humor.
|
||||
* Für Kinder: *„Maske erklärt die Rolle – nicht den Menschen.“*
|
||||
|
||||
---
|
||||
|
||||
## 6) Relikttelefon – Wählscheibe & Saturn
|
||||
|
||||
* **Relikt**: ein Wählscheiben-Telefon als Honigtopf-Interface.
|
||||
* **Aufgabe für Kinder**: „Schreib mir eine SMS!“ → unmöglich, aber witzig.
|
||||
* **Antwort des Honigtopfes**: „📞 Deine Nachricht reist 124 Bars/Jahre durch die Spirale …“
|
||||
* **Nordpol vom Saturn**: auf der Wählscheibe erscheinen alte Nummern als Punkte, wie ein kosmisches Muster.
|
||||
* **Meta-Lernmoment**: Technik = Zeitreise. Heute lachen wir über Relikte, morgen über unsere eigenen Geräte.
|
||||
|
||||
**KrümelLog-Beispiel:**
|
||||
|
||||
```
|
||||
2025-09-25 19:12:44+0200 ☎️ DIAL 0172 — SMS-Versuch [from Kind@Wald] (Honigtopf/relikttelefon)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7) Betrieb & Test
|
||||
|
||||
```bash
|
||||
# Build & Run
|
||||
docker compose build honigtopf
|
||||
docker compose up -d honigtopf
|
||||
|
||||
# Health
|
||||
curl -s http://localhost:8088/health | jq
|
||||
|
||||
# Beispiele
|
||||
curl -s http://localhost:8088/admin | jq
|
||||
curl -s -X POST http://localhost:8088/login -d 'user=kruemel&pass=wald' | jq
|
||||
# WebSocket
|
||||
# websocat ws://localhost:8088/ws
|
||||
```
|
||||
|
||||
**Logs** (gemountet unter `./honigtopf/var/log/`):
|
||||
|
||||
* `krumellog.log` – menschlich.
|
||||
* `events.jsonl` – maschinell.
|
||||
|
||||
---
|
||||
|
||||
## 8) DSGVO & Sicherheit
|
||||
|
||||
* **Datensparsam**: IPs nicht länger als nötig; Rotation nach Größe/Zeit.
|
||||
* **Opt‑out‑Routen**: `/delete?ip=…` (optional) zum Entfernen aggregierter Metadaten.
|
||||
* **Netzwerk‑Isolation**: nur Bridge‑Netz, kein Zugriff auf sensible Container.
|
||||
* **Kennzeichnung**: Satire klar markieren.
|
||||
|
||||
---
|
||||
|
||||
## 9) Nächste Schritte (Wunschliste)
|
||||
|
||||
* **MQTT‑Honigtopf** (nur listen, kein publish ins echte Netz).
|
||||
* **Tiny‑Ports** (socat‑Stubs für „bekannte“ Scans, rein pedagogisch).
|
||||
* **Live‑Dashboard** (Tail der `events.jsonl` + Filter: Rolle/Masken/Level).
|
||||
* **A11y‑Echo** (Braille‑Spuren, Screenreader‑freundliche Rückmeldungen).
|
||||
* **Eule‑Webhook‑Flows** (kontextabhängige Tipps zur „richtigen Tür“).
|
||||
|
||||
---
|
||||
|
||||
## 10) Entscheidungslogik (Menschen vs. Maschinen)
|
||||
|
||||
* **Alle sehen** (Kinder, Crew, Maschine): *Was ist reingekommen?*
|
||||
* **Maschine schlägt vor** (Eule/Bugsy): *Was bedeutet es?*
|
||||
* **Mensch entscheidet** (Freigabe): *Was lernen wir? Was antworten wir?*
|
||||
* **Kindliche Liebe als Leitstern**: *Wenn es Kinder stärkt, ist es richtig.*
|
||||
|
||||
---
|
||||
|
||||
## 11) Kurz‑FAQ
|
||||
|
||||
**Was, wenn echte Angriffe reinkommen?**
|
||||
→ Sie landen im Honigtopf, getrennt vom Wald, werden geloggt, optional gemeldet (Webhook).
|
||||
|
||||
**Ist das politisch?**
|
||||
→ Nein – **satirisch**. Es sind *Masken*, nicht Menschen. Es geht um Medienkompetenz, nicht Parteipolitik.
|
||||
|
||||
**Wie erkläre ich es Kindern?**
|
||||
→ „Manche Türen sind Spiegel. Wir üben, sie zu erkennen. Wenn du lachst, hast du die Täuschung gesehen.“
|
||||
|
||||
---
|
||||
|
||||
> **Footer**
|
||||
> **Schraubär** nickt, **Eule** lächelt, **Taube** trägt die Nachricht:
|
||||
> *„Der Wald atmet. Jede Frage zählt. Jede Antwort auch.“*
|
||||
Reference in New Issue
Block a user