Self-Hosting mit Docker¶
mandari ist Open Source und vollständig selbst betreibbar: volle Datenhoheit auf eurer eigenen Infrastruktur. Diese Seite führt durch die Installation, die weiteren Seiten dieses Bereichs durch Konfiguration, regelmäßige Aufgaben, Quellen, Überwachung und Updates.
Voraussetzungen¶
- Linux-Server, Ubuntu 22.04 oder neuer empfohlen, mindestens 2 CPU-Kerne und 8 GB RAM. Elasticsearch und Texterkennung sind die Speicherfresser.
- Docker und Docker Compose
- Eine Domain mit DNS-Eintrag auf den Server. TLS-Zertifikate holt der mitgelieferte Caddy automatisch.
- Ausreichend Plattenplatz für den Dokument-Cache, abhängig von den angebundenen Kommunen
Komponenten¶
| Container | Aufgabe |
|---|---|
caddy | Reverse Proxy, TLS-Zertifikate, Routing zwischen Anwendung und Website |
mandari | Django-Anwendung mit Insight, Work und Session |
website | Öffentliche Website (Wagtail), optional |
ingestor | Synchronisation der OParl- und Scraper-Quellen, Texterkennung |
postgres | Datenbank (PostgreSQL 16) |
elasticsearch | Volltextsuche (Elasticsearch 8) |
redis | Cache und Echtzeitfunktionen |
Alle Dienste laufen auf einer Domain hinter Caddy. Die Pfade /insight/, /work/, /session/, /accounts/, /admin/, /api/ und /oparl/ gehen an die Anwendung, alles andere an die Website.
Installation¶
Der Installer fragt Domain, E-Mail-Adresse für Zertifikate und Datenbankzugang ab, erzeugt Schlüssel und startet den Stack.
mkdir mandari && cd mandari
curl -LO https://raw.githubusercontent.com/mandariOSS/mandari/main/docker-compose.yml
curl -LO https://raw.githubusercontent.com/mandariOSS/mandari/main/Caddyfile
curl -Lo .env https://raw.githubusercontent.com/mandariOSS/mandari/main/.env.example
nano .env # Domain, Zugangsdaten und Schlüssel setzen, siehe Konfiguration
docker compose up -d
docker compose exec mandari python manage.py migrate
docker compose exec mandari python manage.py createsuperuser
Schlüssel sichern
Die Datei .env enthält den Django-SECRET_KEY und den ENCRYPTION_MASTER_KEY. Ohne den Master-Key sind verschlüsselte Felder in Backups nicht mehr lesbar. Sichert die Datei getrennt vom Server und ändert die Schlüssel nach der Installation nie.
Erste Schritte nach dem Start¶
- Anmelden unter
https://<domain>/admin/mit dem eben angelegten Superuser. - Rollen anlegen:
docker compose exec mandari python manage.py setup_roleserzeugt die Standardrollen für Work und Session. - Suche einrichten:
docker compose exec mandari python manage.py setup_elasticsearchkonfiguriert Synonyme und Tippfehlertoleranz. - Quellen anbinden: Im Admin unter OParl-Quellen die erste Kommune eintragen, siehe Quellen anbinden. Der Ingestor synchronisiert im eingestellten Intervall.
- Regelmäßige Aufgaben einrichten, siehe Cron.
- Betriebsmonitor unter
/admin/monitoring/prüfen, siehe Betriebsmonitor. - Optional eine Demo-Umgebung anlegen, um alle drei Portale mit Beispieldaten zu sehen, siehe Demo-Umgebung.
Provisioning-API¶
Für den Betrieb als Dienst kann ein externes System Organisationen über /api/provisioning/ anlegen und verwalten. Die API wird ausschließlich über die Variable PROVISIONING_API_KEY aktiviert. Ohne gesetzten Schlüssel antworten alle Anfragen mit 404, sodass Community-Installationen keine offene Angriffsfläche haben.
Support¶
Community-Support läuft über GitHub-Issues. Für Kommunen bieten wir betreutes Hosting und Support-Verträge an, siehe mandari.de/kommunen/.