Konfiguration
Der Server liest eine JSON-Datei, angegeben mit --config. Ein Beispiel mit allen Abschnitten liegt in config\annotation-server.example.json. Relative Pfade beziehen sich auf den Ordner der Konfigurationsdatei. Geheimnisse (Passwörter, Schlüssel) können in eigenen Dateien liegen, die nur das Dienstkonto lesen darf: Verwenden Sie dafür die Schlüssel mit der Endung _file.
Beispiel
{
"bind": "0.0.0.0",
"port": 8080,
"public_url": "https://annotation.example.com",
"projects_root": "../projects",
"project_folders": ["D:/LumiScan"],
"data_root": "D:/LumiScan/annotation-data",
"database": "annotation-server.db",
"web_root": "../www",
"log_dir": "../logs",
"backup": { "dir": "../backups", "every_hours": 24, "keep": 14 },
"pre_annotation": [
{ "url": "http://gpu-server:8090", "token_file": "preannotate.token" }
],
"auth": {
"local_login": true,
"default_role": "annotator",
"ldap": { "enabled": false },
"oidc": { "enabled": false }
}
}
Schlüssel
| Schlüssel | Bedeutung |
|---|---|
|
Adresse (Standard |
|
Die Adresse, die die Benutzer öffnen, z. B. |
|
|
|
Zertifikat und privater Schlüssel (PEM) für HTTPS. Ohne sie verwendet der Server ein selbstsigniertes Zertifikat. Siehe HTTPS. |
|
Optionale Liste: weitere Hostnamen oder IP-Adressen für das selbstsignierte Zertifikat. |
|
Die Webseiten. Standard: |
|
Optional: ein Bildordner, der zum Projekt |
|
Ordner für neue und importierte Projekte. Standard: |
|
Optionale Liste: Admins dürfen Projekte auf vorhandenen Ordnern nur unterhalb dieser anlegen. |
|
Optionale Liste von S3-Buckets für Projekte, siehe Projekte in S3-Buckets. |
|
Optional: ein Dienst für Rahmenvorschläge oder eine Liste davon, je mit |
|
|
|
Die Datenbank: Konten, Sitzungen, Projekte, Verlauf, Hinweise. Standard: |
|
Wie oft die Projektordner nach Änderungen außerhalb der Web-App durchsucht werden. Standard 60. |
|
Größte Bilddatei, die Projekt-Admins im Browser hinzufügen dürfen, in MB. Standard 2048. |
|
Wie lange eine Bearbeitungssperre ohne Erneuerung gilt. Standard 60; der Browser erneuert sie, solange das Bild offen ist. |
|
Ordner für rotierende Protokolldateien. Ohne ihn geht das Protokoll nur auf die Konsole. |
|
Automatische Sicherungen: Ordner (Standard |
|
Anmeldeverfahren und Sitzungen, siehe Anmeldeverfahren. |
|
Für den LumiScan Key vorbereitet; in dieser Version nicht verwendet. |
HTTPS
Der Server spricht standardmäßig HTTPS, Passwörter und Sitzungs-Cookies laufen also nie unverschlüsselt. Die Benutzer öffnen https://<Server>:<Port>/, z. B. https://annotation-pc:8080/. Der Port spricht entweder HTTPS oder HTTP: Eine Adresse mit http:// bekommt keine Antwort.
- Selbstsigniertes Zertifikat (Standard)
-
Ohne
tls_certundtls_keyerzeugt der Server beim ersten Start ein Zertifikat und legt es im Ordnertlsneben der Konfiguration ab (self-signed-cert.pem,self-signed-key.pem). Einzurichten ist nichts.-
Das Zertifikat nennt den Hostnamen des Rechners,
localhost, die Netzwerkadressen des Rechners, den Host auspublic_urlund die Einträge vontls_names. Tragen Sie intls_namesjeden weiteren Namen oder jede IP-Adresse ein, die Benutzer eingeben, z. B. einen DNS-Alias. -
Es gilt 825 Tage. Der Server erneuert es 30 Tage vor dem Ablauf, auch im laufenden Betrieb, und wenn ein Name aus
public_urlodertls_namesdarin fehlt. -
Browser zeigen eine Warnung wie „Dies ist keine sichere Verbindung", bis sie dem Zertifikat vertrauen. Vergleichen Sie den SHA-256-Fingerabdruck in den Zertifikatsdetails der Warnung mit dem, den das Serverprotokoll beim Start zeigt (
HTTPS: SHA-256 fingerprint …), und fahren Sie dann fort. Um die Warnung zu vermeiden, importieren Sieself-signed-cert.pemauf den Clients als vertrauenswürdiges Zertifikat (Windows: Vertrauenswürdige Stammzertifizierungsstellen, macOS: Schlüsselbund, Immer vertrauen), oder verwenden Sie ein Zertifikat der Zertifizierungsstelle Ihres Unternehmens. -
Sichern Sie den Ordner
tlsmit der Konfiguration (die automatischen Sicherungen enthalten ihn). Ein neues Zertifikat bedeutet eine neue Warnung auf jedem Client.
-
- Eigenes Zertifikat
-
Setzen Sie
tls_certundtls_keyauf die PEM-Dateien eines Zertifikats der Zertifizierungsstelle Ihres Unternehmens oder einer öffentlichen Zertifizierungsstelle (das Zertifikat mit seinen Zwischenzertifikaten) und seines Schlüssels. Der Server prüft beim Start, ob beide zusammengehören, und warnt 30 Tage vor dem Ablauf des Zertifikats. Starten Sie den Server nach dem Austausch der Dateien neu."tls_cert": "tls/annotation.pem", "tls_key": "tls/annotation.key", - Hinter einem Reverse Proxy (nginx, IIS, Apache)
-
Der Proxy beendet TLS und leitet an den Server auf demselben Rechner weiter, z. B. auf
127.0.0.1:8080. Mit"bind": "127.0.0.1"bleibt der Server von selbst bei unverschlüsseltem HTTP ("https": "auto"); andernfalls setzen Sie"https": "off". Setzen Siepublic_urlauf die Adresse, die die Benutzer öffnen. Der Proxy sollte den HeaderX-Forwarded-Proto: httpssenden, damit das Sitzungs-Cookie als sicher markiert wird.server { listen 443 ssl; server_name annotation.example.com; ssl_certificate /etc/ssl/annotation.pem; ssl_certificate_key /etc/ssl/annotation.key; client_max_body_size 64m; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto https; proxy_read_timeout 600s; } }client_max_body_sizemuss die 8-MB-Stücke eines Projektimports zulassen.
Sitzungen und Sicherheit
-
Die Anmeldung erzeugt ein Sitzungs-Cookie (HttpOnly, SameSite=Lax, Secure über HTTPS). Eine Sitzung endet nach
auth.session_hoursohne Aktivität (Standard 12) und spätestens nachauth.max_session_days(Standard 7). -
Nach 5 fehlgeschlagenen Anmeldungen ist ein Konto für 15 Minuten gesperrt (30 Fehlversuche je Netzwerkadresse).
-
Deaktivieren eines Benutzers oder Zurücksetzen seines Passworts beendet seine Sitzungen sofort.
-
Jede ändernde Anfrage braucht den Header
X-Requested-With: lsa; das schützt vor seitenübergreifenden Anfragen.