# plauderbank.org

PHP-Webanwendung (vanilla PHP, MySQL/MariaDB, SMTP/DKIM für Mailversand).
Gehostet auf Lima-City (Shared Hosting, Apache mit `.htaccess`).

## Projektstruktur

```
.                          ← oberhalb des Webroots (NICHT öffentlich erreichbar)
├── app_secrets.php        ← alle Secrets (DB, SMTP, DKIM, Tokens) – NICHT im Git
├── private.key            ← DKIM-Schlüssel – NICHT im Git
├── define.php             ← mappt Secrets in PHP-Konstanten
└── plauderbank.org/       ← Webroot (DocumentRoot zeigt hierauf)
    ├── account/           ← Login, Registrierung, Admin
    ├── api/               ← JSON-Endpunkte
    ├── assets/            ← CSS, JS, Bilder, PHPMailer, Tracking
    ├── components/        ← Header/Footer, Karten, GeoIP
    ├── cron/              ← geplante Aufgaben (Freshness-Mails u.a.)
    ├── verwalten/         ← Backend zur Pflege der Plauderbänke
    └── doku/              ← separate App "DocuStack" (eigene DB)
```

**Wichtig:** `app_secrets.php` und `private.key` liegen bewusst **oberhalb**
des Webroots und sind weder im Git noch über den Browser erreichbar.

## Einrichtung (lokal oder auf dem Server)

1. **Secrets anlegen:** `app_secrets.php` oberhalb des Webroots erstellen
   (Vorlage siehe Struktur oben). Sie enthält DB-Zugangsdaten, SMTP-Daten,
   DKIM-Einstellungen, `rememberme_secret` und den Cron-Token.
2. **DKIM-Schlüssel:** `private.key` ebenfalls oberhalb des Webroots ablegen,
   direkt neben `app_secrets.php`. Der Pfad wird in `app_secrets.php` unter
   `mail.dkim.private_key_path` auf `__DIR__ . '/private.key'` gesetzt.
3. **Doku-App:** `plauderbank.org/doku/config/config.php` zieht ihre
   DB-Zugangsdaten ebenfalls aus `app_secrets.php` (Block `doku`).
4. **GeoIP-Datenbanken:** Die Dateien `GeoLite2-City.mmdb` und
   `GeoLite2-Country.mmdb` sind aus Lizenzgründen **nicht** im Repo. Sie
   müssen separat von MaxMind bezogen und nach
   `plauderbank.org/components/` gelegt werden.

## Sicherheitshinweise

- Secrets gehören ausschließlich in `app_secrets.php` (oberhalb Webroot).
- Niemals Zugangsdaten, Keys oder `.sql`-Dumps committen.
- `.htaccess` sperrt den Web-Zugriff auf sensible Dateitypen
  (`.key`, `.env`, `.sql`, `.bak`, `.csv`, versteckte Dateien u.a.).
