🔐 Cool_DB Catta

Dein selbstgehostetes digitales Gedächtnis

Cool_DB-Catta · ToDos · Reminder · Kalender

📋 Was Cool_DB Catta alles kann

Eine kompakte Übersicht aller Features — gruppiert nach Bereichen.

🗄️

Cool_DB-Catta (Einträge)

  • Passwörter, Notizen, Dateien
  • Anhänge direkt in DB (BLOBs)
  • Kategorien mit Icons
  • Verschlüsselung sensibler Daten
  • Volltextsuche

ToDos Erweitert

  • Mehrere Listen
  • Subtasks (Unteraufgaben)
  • Prioritäten 🔴🟡🟢
  • Recurring (täglich/wöchentlich/monatlich/…)
  • Listen-Ansicht + Kanban
  • Drag & Drop Sortierung
  • Subtask-Edit (✏️) Neu
  • Subtask Auto-Save beim Klick raus Neu
  • Subtasks in Termin-Mail mitversendet Neu
  • Klick auf Titel öffnet Detail-Panel Neu
  • Notiz-Feld passt Höhe automatisch an Neu
🔔

Reminder-System Killer

  • 🌅 Am Fälligkeitstag (5 Uhr morgens)
  • ⏱ X Min vor Uhrzeit (punktgenau)
  • ⏰ X Tage vorher (2 separate)
  • 🔄 Recurring mit Full-Reset
  • 📬 E-Mail via GMX SMTP
📅

Kalender-Export

  • ICS-Datei herunterladen
  • Direkt an Mail senden
  • Google Kalender-Link
  • Recurring-Events unterstützt
  • Dauer konfigurierbar
🛒

Shopping-Listen Erweitert

  • Einkaufslisten getrennt
  • Artikel als erledigt markieren
  • Via ICS als Termin exportierbar
  • Sortierung beibehalten
  • Mehrzeilige Eingabe (Komma + Newline) Neu
  • Mail-Direktversand auch ohne Speichern Neu
📊

Dashboard

  • Heute fällig · Überfällig
  • Anstehende (Woche/Monat/…)
  • Ein-Klick ✅ Erledigt
  • Ein-Klick 🗓🗑 Termin entfernen
  • Ein-Klick 🗑 Komplett löschen
  • Status-Filter (Offen/In Arbeit/Erledigt)
  • ÜBERFÄLLIG-Kachel klickbar Neu
  • Items-Layout: Header oben, Titel volle Breite Neu
  • Statistiken-Widgets
🎨

UI & Themes

  • 🌙 Dark-Theme (Standard)
  • ☀️ Light-Theme (Creme)
  • 🌓 Auto (System-Einstellung)
  • 📱 Mobile-optimiert (2-zeilig)
  • 👆 Touch-Ziele 44px+
🔐

Sicherheit

  • 2FA per E-Mail (OTP)
  • Session-Cookies
  • Passwort-Hashing (bcrypt)
  • CRON_KEY-Schutz
  • Intern-only (VPN-Zugang)
☁️

Backup

  • restic + rclone zu pCloud
  • Täglich 03:00 automatisch
  • Aufbewahrung: 14 Tage / 8 Wo / 12 Mo
  • Verschlüsselt (Repo-Passwort)
  • Proxmox-Backup zur Synology
  • Auto-Rotation der .bak-* Dateien (max. 3 pro Datei) Neu
🛡️

Netzwerk & Zugriff

  • LAN-Zugriff direkt
  • WireGuard VPN On-Demand
  • Automatisch bei mobilem Netz
  • Heim-WLAN als ausgenommen
📬

Mail-System

  • UTF-8 für Umlaute
  • Sprechende Absender-Namen
  • · Login · Termin · Einkauf
  • GMX SMTP via msmtp
  • 📧-Markierung bei versendeten Termin-Mails
  • GMX-Filter sortiert in Termin/Erinnerung-Ordner
  • Priorität in Termin-Mails sichtbar Neu
  • Notiz + Subtasks in Termin-Mails Neu
  • Log unter /var/log/msmtp.log

Quick-Tab Erweitert

  • Notiz-Feld direkt beim Erfassen
  • Priorität (🟢/🟡/🔴) auswählbar
  • Multi-Artikel im Einkauf
  • Mail-Direktversand
📖

Dokus-Tab Neu

  • Schnellzugriff auf Kategorie "Dokus"
  • Tab erscheint dynamisch
  • Versteckt sich automatisch wenn Kategorie fehlt
📎

Anhänge Erweitert

  • Bis 100 MB pro Datei (vorher 2 MB)
  • Direkter Stream-Download
  • Vorschau bis 12 MB, größere Dateien zeigen Hinweis
  • MariaDB max_allowed_packet auf 128 MB

Cron-Jobs

  • Minütlich: Reminder-Check
  • Täglich 03:00: pCloud-Backup
  • Täglich 03:15: .bak-* Rotation
  • Logs in /var/log/syslog
  • Robuste Zeitzone Europe/Berlin
🛠

Admin-Dashboard Neu

  • Live-Status auf einen Blick
  • App, DB, Backup, Cron, Disk
  • Reminder-Status, Logs
  • Aufruf: /admin.php
  • Read-only — sicher
✨ Alles, was es braucht — nichts, was es nicht braucht.
Cool_DB Catta ist maßgeschneidert. Kein Feature ist zufällig — jedes löst ein konkretes Problem im Alltag.

🏆 Der Weg von IONOS zu Proxmox

Eine Migration, die sich gelohnt hat.

~6.000
Zeilen Code
4
Reminder-Arten
60 s
Cron-Takt
100%
Self-Hosted
24/7
Verfügbarkeit
3
Themes

🎯 Warum überhaupt Migration?

Das Kernproblem bei IONOS
Der Cronjob lief nur alle 15 Minuten — Reminder hatten keine punktgenaue Uhrzeit. Für "Mail 10 Min vor Termin" unpraktikabel.
Die Lösung: Proxmox + eigene VM
Debian-VM mit LAMP-Stack, minütlicher Cron, volle Kontrolle. Reminder jetzt sekundengenau — bis auf max. 60 Sekunden Toleranz.

🔔 Das Killer-Feature: Das Reminder-System

Vier verschiedene Reminder-Typen arbeiten parallel an einem einzigen ToDo:

Typ Wann? Wofür?
🌅 Am Fälligkeitstag 5:00 morgens Tages-Übersicht
⏱ X Min vor Uhrzeit Minuten vor Termin „Gleich geht's los"
⏰ Erinnerung 1 X Tage vorher Langfristige Planung
⏰ Erinnerung 2 X Tage vorher (2.) Doppelte Sicherheit

🚀 Was diesen Build besonders macht

🎯

Maßgeschneidert

Jedes Feature ist für einen realen Workflow gebaut — nicht für „Benutzer allgemein".

🔒

Privacy-First

Alle Daten bleiben auf dem eigenen Server zuhause. Kein Cloud-Zwang.

💪

Robust

Automatische Backups zu pCloud, Recurring mit Full-Reset, 10-Min-Fenster gegen Cron-Ausfall.

Schnell

LAMP-Stack, MariaDB, keine fetten Frameworks. Lädt in < 1 Sekunde.

📱

Mobile-First

iPhone-Layout aufgeräumt: 2 Zeilen pro ToDo, Touch-Ziele, Wochentag vor Datum.

🔧

Wartbar

Nur ~6.000 Zeilen PHP/JS/CSS. Alles überschaubar und anpassbar.

📈 Was in der Migration alles dazu kam

✨ Features, die es bei IONOS nicht gab
  • Minütliche Reminder (statt 15-Min-Takt)
  • "X Min vor Uhrzeit"-Reminder (neu!)
  • Theme-Toggle Dark/Light/Auto
  • Mobile-optimiertes Dashboard
  • Ein-Klick-Aktionen (✅ 🗓🗑)
  • Sprechende Absender-Namen
  • UTF-8 in allen Mails
  • pCloud-Backup via restic
  • VPN On-Demand für unterwegs
  • Homescreen-Icon (wie native App)
🎉 Fazit
Cool_DB Catta ist jetzt mehr als eine Todo-App. Es ist ein vollwertiges persönliches Informations-System — selbstgehostet, maßgeschneidert, robust.

📖 Wie benutze ich Cool_DB Catta?

Praktische Anleitungen für den Alltag.

🔐 Einloggen

1Öffne die App via Homescreen-Icon oder http://192.168.178.121

2Passwort eingeben → ein OTP-Code kommt per Mail

3Code eintippen → eingeloggt

💡 Tipp
Bist du unterwegs? Der WireGuard-VPN verbindet automatisch. Zuhause im WLAN "fbr5" ist der VPN aus.

✅ Ein ToDo mit Reminder anlegen

1ToDo-Liste öffnen (Menü → gewünschte Liste)

2"+ Neue Aufgabe" → Titel eingeben

3Aufgabe aufklappen (Expander)

4Datum + Uhrzeit setzen → 💾 Speichern

5Bei Reminder-Optionen:

  • 🌅 "Am Fälligkeitstag" (Checkbox) — Default an
  • ⏱ VOR UHRZEIT — Minuten vorher (z.B. 15)
  • ⏰ ERINNERUNG 1 / 2 — Tage vorher (z.B. 7 / 1)

6💾 bei jeder Zeile einzeln speichern → Toast bestätigt

📧 Termin als Mail an sich selbst senden

1ToDo / Eintrag mit Datum öffnen

2Im Expander: Goldener Button "📧 Termin an mich"

3Ein Klick → Mail mit ICS-Anhang in deinem GMX-Postfach

💡 Andere Adresse?
Rechtsklick (Desktop) oder langer Druck (Mobile) → Dialog für andere Mail-Adresse
📧 Markierung gesendeter Mails Neu
Nach erfolgreichem Versand bleibt das ToDo offen (nicht erledigt!) und bekommt ein 📧-Icon im Header. Tooltip zeigt das Versand-Datum. So siehst du auf einen Blick, welche Termine schon im Postfach liegen.

🔄 Wiederkehrende ToDos

1ToDo mit Datum anlegen

2Im Dropdown "Einmalig" → wähle z.B. "Monatlich"

3💾 Speichern

✨ Automatisch
Wenn alle Reminder verschickt sind und das Datum erreicht ist, rollt das ToDo automatisch aufs nächste Intervall weiter. Alle Reminder-Flags werden zurückgesetzt.

🎯 Dashboard-Aktionen

Auf dem Dashboard kannst du ToDos direkt abhaken ohne in die Liste zu wechseln:

1Dashboard öffnen

2Bei jedem ToDo/Item siehst du 3 Icons rechts:

  • — als erledigt markieren (direkt)
  • 🗓🗑 — Termin + alle Reminder entfernen (mit Bestätigung)
  • 🗑 (rot umrandet) — ToDo komplett löschen Neu

🔍 Status-Filter Neu
Klick auf eine der Status-Kacheln (TODO OFFEN / IN ARBEIT / ERLEDIGT) → ToDo-Tab öffnet sich mit nur den ToDos dieses Status. Über alle Listen hinweg, mit "✕ Filter aufheben"-Banner oben.

✏️ Mehrzeiliger Editor Neu

Beim Bearbeiten von ToDo-Titeln und Cool_DB-Einträgen öffnet sich ein hübsches Modal mit großem Textbereich:

1Klick auf das ✏️-Symbol bei einem ToDo (oder Cool_DB-Eintrag)

2Modal öffnet sich mit großer Textarea (mehrzeilig möglich)

3Cmd+Enter = Speichern, Esc = Abbrechen

📥 GMX-Filter für Cool_DB-Mails Neu

So sortieren sich Reminder-Mails automatisch in Unterordner:

1Im GMX-Webmailer eigene Unterordner anlegen: Termin + Erinnerung

2Einstellungen → Filterregeln → 2 Regeln anlegen:

  • Regel 1: Absender = scatta@gmx.de UND Betreff enthält "Termin:" → Ordner Termin
  • Regel 2: Absender = scatta@gmx.de UND Betreff enthält "Erinnerung:" → Ordner Erinnerung
✨ Ergebnis
Cool_DB-Mails landen automatisch in den richtigen Unterordnern — Posteingang bleibt sauber.

🛠 Admin-Dashboard Neu

Live-Status der gesamten Cool_DB-Infrastruktur auf einer Seite:

1Im Browser aufrufen: http://192.168.178.121/admin.php

29 Status-Karten zeigen alles:

  • App-Status (Apache, MariaDB, PHP)
  • DB-Größe + Anzahl aller Tabellen
  • Backup-Status (Restic-Lauf, Snapshots)
  • Cron-Jobs, Disk-Verbrauch
  • Backup-Files, Reminder, Logs

🔒 Read-only
Nur Anzeige, keine Aktions-Buttons. Sicher im LAN nutzbar — keine Auth nötig.

⚡ Quick-Tab: Notiz + Priorität Neu

Im Quick-Tab kannst du beim ToDo-Erfassen direkt eine Notiz und Priorität setzen:

1Quick-Tab → ToDo-Reiter

2Titel eingeben

3📝 Notiz-Textarea (3 Zeilen, optional) — Zusatzinfos

4🚦 Priorität: 🟢 Niedrig · 🟡 Mittel · 🔴 Hoch

✨ Endet in
Beim "📧 Mail senden" oder "🗓 Zur Planung" werden Notiz + Priorität mitgespeichert und in der Mail angezeigt.

🛒 Mehrere Einkaufs-Artikel auf einmal Neu

Im Quick-Tab → Einkauf kannst du jetzt mehrere Artikel mit einem Klick erfassen:

1Eingabefeld ist Textarea (mehrzeilig)

2Eingabe-Möglichkeiten:

  • Komma-Trennung: Brot, Milch, Eier
  • Zeilen-Trennung: jeweils Enter zwischen Artikeln
  • Mischung: beides geht

3"+ Zur Liste hinzufügen" → alle Artikel auf einmal angelegt

📧 Direkt mailen
Wenn du nach Eingabe direkt auf "📧 Aktuelle Liste komplett mailen" klickst, werden die getippten Artikel zuerst angelegt und dann die ganze Liste gemailt.

✏️ Unteraufgaben (Subtasks) Neu

Subtasks sind kleine Teil-Aufgaben innerhalb eines ToDos. Pro Subtask gibt's:

⚡ Auto-Save
Beim Eingabefeld "+ Unteraufgabe…" reicht einfach raus-klicken (Tab oder Klick woanders) — der Subtask wird automatisch gespeichert. Enter und + Button gehen weiterhin.
📧 Mail-Versand
Beim "📧 Termin an mich" werden Subtasks mitversendet — mit ✓ für erledigte und ☐ für offene.

📖 Dokus-Tab Neu

Schnellzugriff auf alle Cool_DB-Einträge der Kategorie "Dokus":

1Oben in der Tab-Leiste: 📖 Dokus (zwischen Cool_DB und ToDo)

2Klick → Cool_DB öffnet sich automatisch mit Filter "Dokus"

🔄 Dynamisch
Der Tab erscheint nur wenn die Kategorie "Dokus" existiert. Wird sie umbenannt oder gelöscht → Tab verschwindet automatisch.

📎 Anhänge bis 100 MB Neu

Datei-Anhänge zu Cool_DB-Einträgen sind bis 100 MB pro Datei möglich (vorher 2 MB).

👁 Vorschau-Limit
Vorschau direkt in der App funktioniert bis 12 MB. Bei größeren Dateien erscheint ein Hinweis: "📦 Datei zu groß für Vorschau – bitte herunterladen". Download bleibt möglich.
⚡ Stream-Download
Downloads laufen jetzt direkt als Stream (vorher base64-JSON). Schneller, Browser zeigt eigenen Download-Manager, weniger RAM-Verbrauch.

🎨 Theme wechseln

1Burger-Menü (☰) oben links

2"🌓 Theme" auswählen

3Wähle: Dark / Light / Auto (Auto folgt System-Einstellung)

🔔 Wann kommen die Reminder-Mails?

Reminder-Typ Wann wird verschickt?
🌅 Am Fälligkeitstag 5:00 morgens des Fälligkeitstages
⏱ X Min vor Uhrzeit Exakt X Min vor der due_time (±60 s)
⏰ X Tage vorher Nächster Cron-Lauf sobald ≤ X Tage verbleiben
⚠️ Fail-Safe-Fenster
Falls ein Cron-Lauf ausfällt: Die "X Min vor"-Mail kann bis zu 10 Minuten nach Soll-Zeit noch verschickt werden. Danach gilt sie als verpasst.

🛠 Technische Architektur

Wie alles unter der Haube funktioniert.

🖥️ Architektur-Übersicht

┌─────────────────────────────────────────────────┐ │ iPhone / iPad / Mac / PC │ │ Browser + Safari Homescreen-Icon (PWA-Style) │ └──────────────────────┬──────────────────────────┘ │ HTTP (LAN) / WireGuard VPN ▼ ┌─────────────────────────────────────────────────┐ │ Fritzbox Router (Heimnetz 192.168.178.0/24) │ └──────────────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Proxmox Host │ │ └─ VM 121-CoolDB-Catta (192.168.178.121) │ │ ├─ Apache 2.4 / PHP 8.4 │ │ ├─ MariaDB (cooldb) │ │ ├─ Cron (minütlich → reminder.php) │ │ ├─ msmtp → GMX SMTP │ │ └─ restic → pCloud (täglich 03:00) │ └─────────────────────────────────────────────────┘ │ ┌────────────┴────────────┐ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ │ GMX SMTP │ │ pCloud Backup │ │ (Reminder- │ │ (restic + │ │ Mails) │ │ rclone) │ └─────────────────┘ └──────────────────┘

📁 Datei-Struktur

/var/www/cool/
├── app.php         ← Frontend (HTML/JS/CSS, ~5500 Zeilen)
├── api.php         ← Backend-API (PHP, ~1900 Zeilen)
├── reminder.php    ← Cron-Worker (~560 Zeilen)
├── admin.php       ← Admin-Status-Dashboard (read-only)
├── docs.html       ← Diese Dokumentation
└── config.php      ← DB-Zugang, VAULT_FROM, VAULT_EMAIL

/etc/apache2/sites-available/
└── cool.conf       ← Apache VHost

/etc/msmtprc        ← SMTP-Credentials (GMX)
/etc/sudoers.d/cooldb-admin  ← www-data Read-only Befehle
/etc/cron.d/cooldb-bak-rotate  ← Tägliche .bak-* Rotation

/var/log/
├── msmtp.log              ← Mail-Versand-Log
├── cooldb-backup.log      ← Restic-Backup-Log
└── cooldb-bak-rotate.log  ← Bak-Rotation-Log

/usr/local/bin/
├── cooldb-backup.sh       ← mysqldump + restic → pCloud
├── cooldb-restore.sh      ← Restore von Restic
└── cooldb-bak-rotate.sh   ← Behält max. 3 .bak-* pro Datei

/var/lib/cooldb/last-backup.txt  ← Zeitstempel letzter Backup-Lauf
/root/.restic-password  ← Backup-Passwort (chmod 600)

🗄️ Datenbank-Schema

TabelleInhalt
vault_itemsEinträge (Passwörter, Notizen)
vault_attachmentsAnhänge als BLOBs
vault_categoriesKategorien mit Icons
vault_todo_listsToDo-Listen
vault_todosToDos (inkl. 8 Reminder-Spalten)
vault_todo_subtasksUnteraufgaben
vault_shopping_listsEinkaufs-Listen
vault_shopping_itemsEinkaufs-Artikel
vault_settingsUI-Einstellungen (z.B. Theme)
vault_sessionsLogin-Sessions

🔔 Reminder-Spalten (vault_todos & vault_items)

SpalteTypBedeutung
reminder1_daysINTTage vor Fälligkeit (Reminder 1)
reminder1_sentTINYINTFlag: bereits gesendet
reminder2_daysINTTage vor Fälligkeit (Reminder 2)
reminder2_sentTINYINTFlag: bereits gesendet
reminder_on_due_dayTINYINTAm Fälligkeitstag 5 Uhr? (1/0)
reminder_due_sentTINYINTFlag: bereits gesendet
reminder_minutes_beforeINTMin vor Uhrzeit (0-360, NULL = aus)
reminder_time_sentTINYINTFlag: bereits gesendet
mail_sent_atDATETIMEZeitpunkt Quick-Mail-Versand (zeigt 📧-Icon) Neu

📦 Upload-Limits Neu

Konfiguration in /etc/php/8.4/apache2/php.ini + MariaDB:

SettingWertBedeutung
upload_max_filesize100MPro Datei max. 100 MB
post_max_size100MPOST-Request Gesamtgröße
max_allowed_packet (MariaDB)128MDB-Insert/Select max. Größe (war 16 MB → blockierte Uploads)
⚠️ Wichtig
Anhänge werden als Base64-Text in MariaDB gespeichert. Daher ist max_allowed_packet kritisch: 100 MB Datei → 134 MB nach Base64 → braucht 128 MB Packet-Limit.

⬇️ Attachment-Download Neu

Zwei Endpoints für Anhänge:

EndpointZweckFormat
?api=get_attachment&id=...Vorschau (Bilder/PDFs)JSON mit data:URI
?api=download_attachment&id=...DownloadDirekter Stream mit Content-Disposition

Vorschau wird ab 12 MB Dateigröße geblockt (Frontend-Check), um Browser-Hänger zu vermeiden.

⏰ Cron-Jobs

# /etc/crontab
* * * * * curl -s "http://192.168.178.121/reminder.php?key=..." >/dev/null 2>&1
0 3 * * * /usr/local/bin/cooldb-backup.sh >> /var/log/cooldb-backup.log 2>&1

# /etc/cron.d/cooldb-bak-rotate
15 3 * * * root /usr/local/bin/cooldb-bak-rotate.sh
🔍 Warum minütlich?
Mit 60s-Takt ist die reminder_minutes_before-Funktion sekundengenau. Die Last ist vernachlässigbar (< 50ms pro Lauf).

☁️ Backup-Strategie

# cooldb-backup.sh (vereinfacht)
mysqldump --all-databases > /tmp/db.sql
restic -r rclone:pcloud:Backups/CoolDB-Catta-Restic backup \
  /tmp/db.sql /var/www/cool /etc/apache2 /etc/msmtprc
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune
AufbewahrungAnzahl
Täglich14 Snapshots
Wöchentlich8 Snapshots
Monatlich12 Snapshots

📂 Backup-Files Rotation Neu

Jeder Patch-Lauf legt eine .bak-*-Sicherheitskopie an. Damit das nicht ausartet, läuft täglich um 03:15 ein Cleanup:

# /usr/local/bin/cooldb-bak-rotate.sh
# Behält pro Basis-Datei (app.php, api.php, etc.) die 3 neuesten Backups.
# Gruppierung: alles vor ".bak-" → eine Gruppe.
# Rest wird gelöscht, Aktion in /var/log/cooldb-bak-rotate.log protokolliert.
✨ Beispiel-Lauf
Vorher 23 .bak-Dateien → Nachher 8 (3× app.php, 3× api.php, 1× docs.html, 1× reminder.php). Alte werden täglich automatisch entfernt.

🛠 Admin-Dashboard Neu

Read-only Status-Übersicht unter http://192.168.178.121/admin.php

KarteInhalt
🟢 App-StatusApache, MariaDB, PHP-Version, VM-Hostname/IP
💾 DB-StatusDatenbankgröße, Anzahl Items/ToDos/Listen/Anhänge/Kategorien
📦 BackupLetzter Restic-Lauf, Snapshot-Anzahl, Aufbewahrung, Log-Auszug
⏰ Cron-Jobsroot crontab + /etc/cron.d/-Liste
💿 Disk-VerbrauchVM-Root /, /var/www/cool, /var/backups, /var/log
📂 Backup-FilesListe aller .bak-* mit Größe + Alter
📧 Reminder-StatusWelche ToDos haben Reminder bereits versendet
🔄 Bak-Rotate-LogLetzte Rotation-Aktion
📋 Apache-Error-LogLetzte 15 Zeilen vom Server-Log
🔒 Sicherheits-Setup
/etc/sudoers.d/cooldb-admin erlaubt www-data nur eine enge Liste an Read-only Befehlen (systemctl status, tail, crontab -l) ohne Passwort. So funktioniert das Dashboard, ohne dass Apache root-Rechte hätte.

🔐 Sicherheit

🔑

Login-Flow

  • Passwort + bcrypt-Hash
  • 2FA: 6-stelliger OTP per Mail
  • OTP-Gültigkeit: 5 Min
  • Session-Cookie (httponly)
🌐

Netzwerk

  • LAN-only Zugriff
  • WireGuard für Remote
  • Kein Public-Facing
  • IONOS final deaktivierbar
🛡️

Cron-Schutz

  • CRON_KEY (48 Zeichen)
  • Als URL-Parameter
  • Prüfung in reminder.php
  • Log-only bei Mismatch
⚙️

Sudoers (Admin-Dashboard)

  • /etc/sudoers.d/cooldb-admin
  • Eng definierte Read-only Befehle
  • Nur systemctl is-active/status
  • Nur tail -n <n> /var/log/...
  • visudo -c-validiert

📬 Mail-Konfiguration

# /etc/msmtprc (gekürzt)
account gmx
host mail.gmx.net
port 587
tls on
auth on
user scatta@gmx.de
password ***

account default: gmx
📧 Sprechende Absender-Namen
Pro Mail-Typ wird der From-Header angepasst:
  • Cool_DB_Catta · Login (OTP)
  • Cool_DB_Catta · Termin (ICS/Reminder)
  • Cool_DB_Catta · Einkauf (Shopping)
  • Cool_DB_Catta Erinnerung (Reminder-Cron)

🕐 Zeitzone

# /etc/php/8.4/*/php.ini
date.timezone = Europe/Berlin

# Server
timedatectl set-timezone Europe/Berlin
✅ Überall konsistent
System-Zeit, PHP-Apache, PHP-CLI, MariaDB — alle auf Europe/Berlin. CEST wird korrekt behandelt.

📦 Stack

KomponenteVersion
Debian12/13 (VM)
Apache2.4.66
PHP8.4
MariaDB10.x
restic0.18.0
rcloneaktuell
msmtpSystem
WireGuardFritzOS