Aufbau einer IT-Infrastruktur für eine Anwaltskanzlei (PoC) mit j-lawyer und einem n8n Workflow

Published on HivePostify by @achimmertens · Mon Aug 10 2026

Hallo zusammen,

Vorwort Rechtsanwälte haben das Problem, dass sie sensible (DSGVO-Konforme und Paragraf 203 geschützte) Daten haben, die nicht ins Internet dürfen. Sie erhalten aber oft Emails von Mandanten, die diese Daten enthalten. Die Herausforderung ist, dass diese Informationen automatisch verarbeitet und gespeichert werden sollen, ohne dass die Daten öffentlich sichtbar werden.

Das Problem

Ich arbeite nebenberuflich als IT-Berater und habe gerade so einen Fall. Für einen meiner Kunden habe ich einen Proof-of-Concept (PoC) gebaut, der zeigt, wie man diese Anforderungen unter einen Hut bringen kann.

Ich habe mir von https://j-lawyer.cloud/ den Server als Docker Container auf meinem Windows-PC installiert und mit dem j-lawyer Client und [N8N](https://peakd.com/hive-121566/@achimmertens/wie-man-einen-email-auswerte-workflow-mit-n8n-erstellt) (läuft bei mir auf einem Raspi 5) einen PoC-Workflow gebaut, der eingehende Emails analysiert und automatisch Kontakte und Fälle in j-lawyer anlegt. Eine N8N Komponente (nämlich die KI-auswertung der Mails) braucht aber eine externe LLM-API und verlässt damit die Sicherheitszone. Aber auch dieses Problem läßt sich mit Sicherheitsanbietern wie [Logicc](https://app.logicc.com/) lösen, die eine DSGVO-konforme LLM-API anbieten.

Damit liegen alle Daten lokal und das Securityproblem ist damit gelöst. Für viele Anwälte ist diese Lösung aber nur bedingt geeignet, da Sie sich weder um die Sicherheit des eigenen PCs kümmern wollen noch alleine arbeiten. Daher bietet sich die Cloud-Lösung von J-Lawyer an. (Das habe ich aber noch nicht ausprobiert).

In diesem Showcase zeige ich, wie man mit N8N und j-lawyer einen End-to-End Workflow bauen kann, der Emails analysiert und automatisch Kontakte und Fälle in j-lawyer anlegt.

Was bei mir funktioniert

| Komponente | Status | |---|---| | n8n-Installation | Läuft auf meinem Raspi (bei mir zu Hause) | | Mail-Trigger | ✅ Holt Mails aus Postfach, startet Workflow | | LLM-Feldextraktion | ✅ Extrahiert Vorname, Nachname, Adresse, Geburtsdatum etc. aus E-Mail-Text | | Gutfall/Schlechtfall | ✅ Erzeugt zwei verschiedene Mail-Vorlagen je nach Vollständigkeit | | j-lawyer.org Docker | ✅ Läuft auf meinem Windows-PC, REST API getestet (Create/Update/Listen) | | REST API Endpunkte | ✅ Akten anlegen, Kontakte listen, Swagger-UI läuft | | Mail-Versand | ✅ Automatischer Versand der vorbereiteten E-Mails | | n8n → j-lawyer REST API koppeln | ✅ die beiden Komponenten sind einzeln getestet und durchverbunden | Kompletter Workflow | ✅Die Integration aller Komponenten zu einem durchgehenden Workflow funktioniert.

N8N Workflow: Mail → LLM → Kollisionsprüfung → j-lawyer REST API → Mail-Versand

Beispiel einer eingehenden Mail

Ergebnis: Aktenanlage in j-lawyer.org via REST API

Installation von J-Lawyer Client und Server

Installation des j-lawyer.org Servers (3.5.0.17) per Docker auf Achims Windows-PC mit Docker Desktop, inkl. Client-Verbindung.

Architektur

┌─────────────────────────────────────────────┐ │ Windows-PC │ │ │ │ Docker-Container: │ │ ┌────────────────────┐ ┌────────────────┐ │ │ │ jlawyer-jlawyer-db │ │ jlawyer-server │ │ │ │ MariaDB 10.x │ │ WildFly 26.1.3 │ │ │ │ Port 3306 (intern) │ │ Port 8000:8080 │ │ │ │ Volume: named │ │ Volume: │ │ │ │ jlawyer-db-volume │ │ D:\j-lawyer\ │ │ │ └────────┬───────────┘ │ data\ │ │ │ │ └────────┬───────┘ │ │ └──────────┬────────────┘ │ │ │ │ │ TCP :8000 (localhost) │ │ │ │ │ ┌───────┴────────┐ │ │ │ j-lawyer.org │ │ │ │ Client 3.5.0.3 │ │ │ │ (Java Desktop) │ │ │ └────────────────┘ │ └─────────────────────────────────────────────┘

Setup-Schritte

1. Verzeichnisse anlegen

powershell mkdir D:\j-lawyer\data\templates -Force mkdir D:\j-lawyer\data\emailtemplates -Force mkdir D:\j-lawyer\data\mastertemplates -Force mkdir D:\j-lawyer\data\archivefiles -Force mkdir D:\j-lawyer\data\searchindex -Force mkdir D:\j-lawyer\data\faxqueue -Force mkdir D:\j-lawyer\backup -Force

2. docker-compose.yaml herunterladen und anpassen

powershell wget https://raw.githubusercontent.com/jlawyerorg/j-lawyer-org/master/docker/docker-compose.yaml -OutFile D:\j-lawyer\docker-compose.yaml

Anschließend in der Datei: - Windows-Pfade einsetzen (D:\j-lawyer\data\) - Passwörter von auf jlawyer ändern (muss mit den hardcodierten Werten im Container-Image übereinstimmen) - Healthcheck auf -pjlawyer korrigieren - DB-Volume als Named Volume (nicht als Bind Mount), damit das Image das Datenbankschema automatisch initialisieren kann

Docker-Compose (finale Fassung)

Datei: D:\j-lawyer\docker-compose.yaml

yaml version: '3.8'

services:

db: image: jlawyerorg/jlawyer-db:3.5.0.17 restart: always volumes: - jlawyer-db-volume:/var/lib/mysql environment: MARIADBROOTPASSWORD: jlawyer MARIADBDATABASE: jlawyerdb MARIADBUSER: jlawyer MARIADBPASSWORD: jlawyer healthcheck: test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-pjlawyer"] interval: 10s timeout: 10s retries: 10 startperiod: 30s

server: image: jlawyerorg/jlawyer-srv:3.5.0.17 restart: always volumes: - D:\j-lawyer\data\:/opt/jboss/j-lawyer-data ports: - 8000:8080 dependson: db: condition: servicehealthy

volumes: jlawyer-db-volume:

3. Container starten

powershell cd D:\j-lawyer docker-compose up -d

4. Prüfen

- WildFly Welcome Page: http://localhost:8000/ - Swagger UI: http://localhost:8000/j-lawyer-io/swagger-ui/

5. Client installieren

Client von der [j-lawyer.org](https://www.j-lawyer.org/?pageid=17) Webseite herunterladen und installieren. Verbindung:

| Feld | Wert | |------|------| | Server | localhost | | Port | 8000 |

Login: Benutzer admin, Passwort a

Bekannte Fehler & Lösungen

Falsche Passwörter in standalone.xml

Die Passwörter im Container sind hardcodiert: - startup.sh: jlawyer für DB-Connect - standalone.xml: jlawyer für JDBC-Datasource

→ In der docker-compose.yaml MÜSSEN die Passwörter auf jlawyer gesetzt sein, sonst schlägt der Login fehl.

Falscher DB-Healthcheck

Original: -pmysql → muss -pjlawyer sein (sonst gilt DB als "unhealthy" und Server startet nicht, da condition: servicehealthy).

Leeres DB-Volume (Bind Mount)

Ein leerer Bind Mount (D:\j-lawyer\db\:/var/lib/mysql) überschreibt das vorinitialisierte Schema aus dem Docker-Image.

Lösung: Named Volume verwenden. Docker befüllt das Named Volume beim ersten Start automatisch mit dem Schema aus dem Image.

Version-Mismatch Client/Server

Der Docker-Container lief anfangs mit latest (Version 3.6.0.5), der Client war 3.5.0.3 → API-Inkompatibilität.

Lösung: Server-Downgrade auf jlawyerorg/jlawyer-srv:3.5.0.17 + jlawyerorg/jlawyer-db:3.5.0.17 (3.6.0.5 gab es nicht als Client).

564 fehlgeschlagene Services beim Start

Tags: #j-lawyer#poc#n8n#anwalt#it#rechtsanwalt#kanzlei#doku#deutsch

View full post on HivePostify →

Join HivePostify — Pakistan's First Web3 Platform →