Dashboard-Widgets aktualisierten nicht, weil der Service Worker die alte router.js aus dem Cache servierte (stale-while-revalidate). Cache-Version v15→v16 erzwingt Invalidierung aller gecachten Dateien. Zusätzlich fetch cache:no-store auf allen API-Aufrufen als Absicherung. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Oikos
Dein Familienplaner. Dein Server. Deine Daten.
Eine selbstgehostete Web-App, die den Alltag deiner Familie organisiert —
vom Einkaufszettel bis zum Kalender, vom Essensplan bis zum Budget.
Ohne Cloud. Ohne Abo. Ohne Tracking.
Warum Oikos? · Funktionen · Screenshots · Installation · FAQ
Warum Open Source & Privacy?
Termine, Einkaufslisten, Finanzen, Kontakte von Kinderärzten, Schulzeiten, Medikamentenpläne — ein Familienplaner speichert die intimsten Details eines Haushalts. Wer wann wo ist. Was eingekauft wird. Wie viel Geld wofür ausgegeben wird. Namen und Daten der Kinder.
Die meisten Familienplaner sind Cloud-Dienste. Deine Daten liegen auf fremden Servern, werden analysiert, monetarisiert, oder sind einem Datenleck ausgesetzt. Du hast keine Kontrolle — und oft nicht einmal Einblick, was mit den Informationen deiner Familie passiert.
Das muss nicht so sein.
Oikos (griech. oíkos) bedeutet „Haus" oder „Haushalt" — der Ursprung des Wortes Ökonomie.
Eine App, die deinen Haushalt organisiert, sollte auch dort bleiben: bei dir zuhause.
Das Problem mit der Cloud
|
Cloud-Familienplaner
|
Oikos (selbstgehostet)
|
Warum das für Familien besonders wichtig ist
Ein Familienplaner aggregiert Daten, die einzeln harmlos wirken, zusammen aber ein vollständiges Profil ergeben:
- Tagesabläufe — Wann sind die Kinder in der Schule? Wann ist niemand zuhause?
- Gesundheitsdaten — Arzttermine, Allergien in Essensplänen, Medikamenten-Erinnerungen
- Finanzverhalten — Einkommen, Ausgaben, finanzielle Engpässe
- Einkaufsgewohnheiten — Was wird gekauft, wie oft, in welchen Mengen?
- Soziales Netz — Kontakte zu Schulen, Ärzten, Betreuern — mit Adressen und Telefonnummern
Bei kommerziellen Cloud-Diensten fließen diese Daten durch Drittanbieter-Infrastruktur, unterliegen deren AGBs und sind potenziell Gegenstand von Data Breaches.
Open Source bedeutet: Der Code ist einsehbar. Niemand kann versteckte Tracker einbauen. Du kannst jede Zeile prüfen — oder jemanden bitten, es für dich zu tun. Und wenn du Oikos nicht mehr brauchst, löschst du den Container. Ende.
Module
Oikos ist modular aufgebaut — jedes Modul löst ein konkretes Problem im Familienalltag:
Dashboard · Dein Tagesstart auf einen Blick: Wetter, Termine, dringende Aufgaben, heutiges Essen und angepinnte Notizen.
Aufgaben · Erstellen, priorisieren, zuweisen. Mit Teilaufgaben, Wiederholungen, Statusfiltern und Swipe-Gesten auf dem Handy.
Einkauf · Mehrere Listen parallel (REWE, dm, Baumarkt). Automatische Gruppierung nach Kategorien. Die ganze Familie befüllt gemeinsam.
Essensplan · Wochenplan für alle Mahlzeiten. Zutaten erfassen und mit einem Klick auf die Einkaufsliste übernehmen.
Kalender · Vier Ansichten (Monat, Woche, Tag, Agenda), farbcodiert pro Person. Optional mit Google Calendar und Apple iCloud synchronisierbar.
Pinnwand · Farbige Sticky Notes für Erinnerungen, Nachrichten an die Familie oder Ideen. Mit Markdown-Light.
Kontakte · Kinderarzt, Schule, Handwerker, Versicherung — mit Direktanruf, E-Mail und Kartennavigation.
Budget · Einnahmen und Ausgaben tracken, nach Kategorien auswerten, Monate vergleichen. Mit wiederkehrenden Buchungen und CSV-Export.
Screenshots
Light Mode
![]() Dashboard Wetter, Termine, Aufgaben, Essen |
![]() Aufgaben Prioritäten, Zuweisung, Filter |
![]() Kalender Monatsansicht, Tagesdetails |
![]() Einkauf Mehrere Listen, Kategorien |
![]() Essensplan Wochenplan, Zutaten |
Dark Mode
![]() Dashboard |
![]() Aufgaben |
![]() Kalender |
![]() Einkauf |
![]() Essensplan |
Dark Mode folgt automatisch deiner Systemeinstellung oder lässt sich manuell umschalten.
Technik
Oikos setzt bewusst auf einen minimalen, wartungsarmen Stack — keine 200 npm-Pakete, kein Build-Step, kein Framework-Lock-in.
| Schicht | Technologie |
|---|---|
| Server | Node.js + Express.js |
| Datenbank | SQLite + SQLCipher (AES-256-Verschlüsselung at rest) |
| Frontend | Vanilla JS (ES-Module), eigenes CSS — kein React, kein Vue, kein Bundler |
| Auth | Session-basiert, bcrypt (Cost 12), CSRF-Schutz, Rate Limiting |
| Deployment | Docker (ein Container, ein Volume) |
| PWA | Service Worker + Manifest — installierbar, offline-fähig |
| Accessibility | WCAG 2.2 AA — Skip-Links, Touch-Targets, Reduced Motion, aria-Labels |
| Kalender-Sync | Google Calendar API v3 (OAuth) + Apple iCloud CalDAV (optional) |
Sicherheitsmaßnahmen im Detail
| Maßnahme | Details |
|---|---|
| Verschlüsselte Datenbank | SQLCipher (AES-256) — Daten sind auch bei physischem Serverzugriff geschützt |
| Passwort-Hashing | bcrypt mit Cost Factor 12 — kein Klartext, nie |
| Session-Schutz | httpOnly, SameSite=Strict, Secure-Cookies, 7 Tage Ablauf |
| CSRF-Schutz | Double Submit Cookie mit crypto.timingSafeEqual |
| Rate Limiting | 5 Login-Versuche pro Minute, dann 15 Min. Sperre |
| Input-Validation | Zentrale Validierung auf allen Endpoints (Länge, Typ, Whitelist) |
| SQL-Injection-Schutz | Parametrisierte Queries — kein String-Zusammenbau |
| Security Headers | CSP, HSTS, X-Frame-Options via Helmet |
| Kein offener Zugang | Jeder API-Endpoint erfordert Authentifizierung (außer Login) |
| Keine Telemetrie | Kein externer Request, kein Analytics, kein Font-Loading |
Schnellstart
Voraussetzungen: Ein Linux-System mit Docker + Docker Compose und Git.
Ein günstiger VPS (Hetzner, Netcup) oder ein Raspberry Pi 4 reichen aus — Oikos braucht minimal 512 MB RAM.
1. Repository klonen
git clone https://github.com/ulsklyc/oikos.git && cd oikos
2. Konfiguration anlegen
cp .env.example .env
nano .env
Mindestens diese zwei Werte setzen (jeweils mit openssl rand -base64 32 generieren):
SESSION_SECRET=dein_zufaelliger_string
DB_ENCRYPTION_KEY=dein_verschluesselungs_key
3. Starten
docker compose up -d --build
Der erste Build dauert 2–3 Minuten (SQLCipher-Kompilierung). Danach:
docker compose exec oikos node setup.js # Ersten Admin-Account anlegen
4. Öffnen
http://<deine-server-ip>:3000
Ohne HTTPS-Reverse-Proxy:
SESSION_SECURE=falsein der.envsetzen. Für den Produktionsbetrieb empfehlen wir HTTPS — Einrichtung siehe unten.
Konfiguration
Pflichtfelder
| Variable | Beschreibung |
|---|---|
SESSION_SECRET |
Zufälliger String (mind. 32 Zeichen) — openssl rand -base64 32 |
DB_ENCRYPTION_KEY |
SQLCipher-Schlüssel (AES-256) — leer = keine Verschlüsselung |
Optionale Features
| Variable | Standard | Beschreibung |
|---|---|---|
OPENWEATHER_API_KEY |
— | API-Key für Wetter-Widget (openweathermap.org, kostenlos) |
OPENWEATHER_CITY |
— | Stadt für Wettervorhersage (z.B. Berlin) |
SESSION_SECURE |
true |
Auf false setzen wenn kein HTTPS (nur zum Testen) |
PORT |
3000 |
Server-Port im Container |
SYNC_INTERVAL_MINUTES |
15 |
Kalender-Sync-Intervall |
Alle Optionen mit Erklärungen: .env.example
HTTPS einrichten
Für den dauerhaften Betrieb sollte Oikos hinter einem Reverse Proxy mit SSL laufen.
Nginx Proxy Manager (empfohlen für Einsteiger)
- Nginx Proxy Manager installieren
- Neuen Proxy Host anlegen: Domain →
oikos.deine-domain.de, Port →3000 - SSL-Tab: Let's Encrypt Zertifikat ausstellen (kostenlos, automatisch)
- Advanced-Tab: Inhalt von
nginx.conf.exampleeinfügen
Nginx manuell
sudo cp nginx.conf.example /etc/nginx/sites-available/oikos
sudo ln -s /etc/nginx/sites-available/oikos /etc/nginx/sites-enabled/
sudo nano /etc/nginx/sites-available/oikos # Domain anpassen
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d oikos.deine-domain.de
sudo nginx -t && sudo systemctl reload nginx
Danach SESSION_SECURE=false aus der .env entfernen und Container neu starten.
Kalender-Synchronisation
Google Calendar
- Google Cloud Console → Neues Projekt → Google Calendar API aktivieren
- OAuth 2.0-Client-ID erstellen (Webanwendung), Redirect-URI:
https://oikos.deine-domain.de/api/v1/calendar/google/callback - In
.enveintragen:GOOGLE_CLIENT_ID=deine-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=dein-client-secret GOOGLE_REDIRECT_URI=https://oikos.deine-domain.de/api/v1/calendar/google/callback - In Oikos: Einstellungen → Kalender-Synchronisation → Mit Google verbinden
Sync-Verhalten: Bidirektional. Erster Sync: 3 Monate zurück, 12 Monate voraus. Bei Konflikten gewinnt Google, lokale Ergänzungen bleiben erhalten.
Apple Calendar (iCloud)
- appleid.apple.com → App-spezifisches Passwort generieren
- In
.enveintragen:APPLE_CALDAV_URL=https://caldav.icloud.com APPLE_USERNAME=deine@apple-id.de APPLE_APP_SPECIFIC_PASSWORD=xxxx-xxxx-xxxx-xxxx - Container neu starten — Sync-Button erscheint in den Einstellungen
Wartung
Updates
cd oikos && git pull && docker compose up -d --build
Datenbank-Migrationen laufen automatisch. Alle Daten im Volume bleiben erhalten.
Backup & Restore
# Backup erstellen
docker run --rm -v oikos_oikos_data:/data -v $(pwd):/backup \
alpine tar czf /backup/oikos-backup-$(date +%Y%m%d).tar.gz /data
# Backup wiederherstellen
docker compose down
docker run --rm -v oikos_oikos_data:/data -v $(pwd):/backup \
alpine tar xzf /backup/oikos-backup-YYYYMMDD.tar.gz -C /
docker compose up -d
Familienmitglieder verwalten
Neue Accounts nur durch Admins — keine öffentliche Registrierung (by design).
- In der App: Einstellungen → Familienmitglieder → Mitglied hinzufügen
- Per Terminal:
docker compose exec oikos node setup.js
Lokale Entwicklung
git clone https://github.com/ulsklyc/oikos.git && cd oikos
npm install
cp .env.example .env # SESSION_SECRET setzen, DB_ENCRYPTION_KEY leer lassen
npm run dev # Auto-Reload bei Änderungen
npm test # 146 Tests, 7 Suiten (In-Memory-SQLite)
FAQ
Brauche ich Docker-Erfahrung?
Nein. Die Installation besteht aus wenigen Befehlen, die du kopieren und einfügen kannst.Läuft Oikos auf einem Raspberry Pi?
Ja — Raspberry Pi 4 (ARM64) funktioniert problemlos. Der Build dauert dort ~5 Min, danach läuft die App flüssig.Ist Oikos auf dem Handy nutzbar?
Ja. Oikos ist eine PWA — installierbar auf dem Homescreen, mit Offline-Grundfunktionen. Keine App-Store-Abhängigkeit.Wie viele Familienmitglieder werden unterstützt?
Konzipiert für 2–6 Personen. Kein technisches Limit, aber das UI ist für kleine Familien und WGs optimiert.Ist die Kalender-Synchronisation Pflicht?
Nein. Der integrierte Kalender funktioniert eigenständig. Google- und Apple-Sync sind optional.Kann ich das Design anpassen?
Ja. Alle Farben, Abstände und Schriften sind als CSS Custom Properties inpublic/styles/tokens.css definiert — ohne Build-Step änderbar.
Was passiert bei einem Update mit meinen Daten?
Daten liegen in einem Docker-Volume und bleiben erhalten. Migrationen laufen automatisch. Vor Updates empfehlen wir ein Backup.Oikos ist Open Source und wird mit Sorgfalt entwickelt.
Deine Familiendaten gehören dir — nicht einem Cloud-Anbieter.
Feedback, Ideen und Beiträge sind willkommen — Issues · MIT-Lizenz








