Zum Inhalt

InGrid Editor

Allgemeines

Der InGrid Editor ermöglicht die Erfassung von Metadaten über vielseitige Formulare und bietet einen umfangreichen Workflow, der den Import sowie Export von beliebigen Formaten erlaubt.

Insbesondere wird die Erfassung und Publizierung von ISO 19115/19119, OGC und INSPIRE konformen Metadaten unterstützt.


Leitfaden

Sie haben die Installation bereits abgeschlossen? Dieser Leitfaden könnte Sie interessieren.

  • Benutzeroberfläche


    Erfassungsmaske InGrid Editor

    Interesse an der Benutzeroberfläche?

    Dieser Leitfaden bietet Einblicke in die Bedienung vom InGrid Editor.

    Benutzeroberfläche


Systemvoraussetzungen

Systembestandteil Anforderung
Hardware Arbeitsspeicher 2 GB RAM
Festplattenspeicher 10 GB frei
Prozessor Dual Core CPU
Software Java Java 21
Keycloak Version 26.x oder höher
Elasticsearch Version 8.x
PostgreSQL Version 13 oder höher

Installation

Info

Neben dem InGrid Editor wird zusätzlich eine Postgres-Datenbank, Elasticsearch und Keycloak eingerichtet werden. Hierfür müssen auch die Datenbanken für den Editor sowie auch für Keycloak erstellt werden. Diese haben standardmäßig den Namen

  • ige
  • keycloak

Docker

Beispiel docker-compose.yml
services:

  editor:
    image: docker-registry.wemove.com/ingrid-ige-ng
    restart: unless-stopped
    depends_on:
      - postgres-db
    environment:
      - _JAVA_OPTIONS=-Xmx2g -Dstorage.diskCache.bufferSize=256 -Dspring.profiles.active=ingrid
      - DATABASE_HOST=postgres-db
      - DATABASE_USERNAME=${POSTGRES_DB_ADMIN}
      - DATABASE_PASSWORD=${POSTGRES_DB_PASSWORD}
      - KEYCLOAK_URL=http://keycloak:8080/keycloak
      - KEYCLOAK_URL_FRONTEND=http://${HOST}/keycloak
      - KEYCLOAK_BACKEND_USER=${KEYCLOAK_ADMIN}
      - KEYCLOAK_BACKEND_USER_PASSWORD=${KEYCLOAK_PASSWORD}
    ports:
      - "8080:8080"
    networks:
      - informationgrid-network
Beispiel für vollständige docker-compose.yml
services:

  postgres-db:
    image: postgres:17.4
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_DB_ADMIN}
      - POSTGRES_PASSWORD=${POSTGRES_DB_PASSWORD}
    volumes:
      - ./_data/postgres-db/:/var/lib/postgresql/data
    networks:
      - informationgrid-network

  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.18.0
    restart: unless-stopped
    environment:
      - cluster.name=ingrid
      - discovery.type=single-node
      - cluster.routing.allocation.disk.threshold_enabled=false
      - http.host=0.0.0.0
      - transport.host=0.0.0.0
      - http.cors.enabled=true
      - "ES_JAVA_OPTS=-Xmx2g"
      - xpack.security.enabled=false
    volumes:
      - ./_data/elasticsearch_data:/usr/share/elasticsearch/data
    networks:
      - informationgrid-network

  keycloak:
    image: docker-registry.wemove.com/keycloak
    restart: unless-stopped
    environment:
      - KC_BOOTSTRAP_ADMIN_USERNAME=admin
      - KC_BOOTSTRAP_ADMIN_PASSWORD=admin
      - KC_HTTP_RELATIVE_PATH=/keycloak
      - KC_HOSTNAME=http://${HOST}/keycloak
      - KC_HTTP_ENABLED=true
      - KC_PROXY_HEADERS=xforwarded
      - KC_DB=postgres
      - KC_DB_URL_HOST=postgres-db
      - KC_DB_USERNAME=${POSTGRES_DB_ADMIN}
      - KC_DB_PASSWORD=${POSTGRES_DB_PASSWORD}
      - MAIL_SMTP=mailrelay
      - IGE_SUPER_USER_LOGIN=ige
      - IGE_SUPER_USER_PASSWORD=admin
      - IGE_SUPER_USER_FIRSTNAME=Super
      - IGE_SUPER_USER_LASTNAME=User
      - IGE_SUPER_USER_EMAIL=Super.User@test.com
    networks:
      - informationgrid-network

  editor:
    image: docker-registry.wemove.com/ingrid-ige-ng
    restart: unless-stopped
    depends_on:
      - postgres-db
    environment:
      - _JAVA_OPTIONS=-Xmx2g -Dstorage.diskCache.bufferSize=256 -Dspring.profiles.active=ingrid
      - DATABASE_HOST=postgres-db
      - DATABASE_USERNAME=${POSTGRES_DB_ADMIN}
      - DATABASE_PASSWORD=${POSTGRES_DB_PASSWORD}
      - KEYCLOAK_URL=http://keycloak:8080/keycloak
      - KEYCLOAK_URL_FRONTEND=http://${HOST}/keycloak
      - KEYCLOAK_BACKEND_USER=${KEYCLOAK_ADMIN}
      - KEYCLOAK_BACKEND_USER_PASSWORD=${KEYCLOAK_PASSWORD}
    ports:
      - "8080:8080"
    networks:
      - informationgrid-network

In einer weiteren Datei .env werden die Variablen für die docker-compose.yml Datei gesetzt.

From Source

Um den InGrid-Editor direkt auf einem System zu installieren, müssen folgende Vorbedingungen erfüllt sein:

  • Elasticsearch (>= v8)
  • PostgreSQL (>= v13)
  • NodeJS (>= v20)

Die Installation des InGrid-Editors (z.B. nach /opt/ingrid/editor) erfolgt dann mit diesen Schritten:

Editor klonen und bauen

git clone https://github.com/informationgrid/ingrid-editor
cd ingrid-editor/frontend
yarn
cd ..
./gradlew bootJar -x test

Editor installieren

mkdir -p /opt/ingrid/editor
... TODO ...

Editor starten

Bevor Sie den InGrid-Editor starten, müssen sie die Konfiguration vervollständigen. Dazu setzen Sie entweder die Umgebungsvariablen oder erstellen eine Datei application-default.properties. Stellen Sie sicher, dass in der PostgreSQL-Datenbank, die Datenbanken mit den Namen "ige" und "keycloak" angelegt worden sind. Für die weitere Konfiguration, siehe Umgebungsvariablen. Danach:

java -jar ./server/build/libs/server-<version>.jar

Konfiguration

Umgebungsvariablen

Die folgenden Umgebungsvariablen können direkt über die docker-compose.yml gesetzt werden, um den InGrid Editor zu konfigurieren.

Alle Umgebungsvariablen im Überblick
Variable Hinweis Defaultwert
ALLOW_OVERWRITE_ON_VERSION_CONFLICT Wenn „true“, wird eine zusätzliche Option angezeigt, um ein Dokument bei einem Versionskonflikt zu überschreiben. true
APP_HELP_LINK Die URL zu einer externen Dokumentationsseite https://metaver-bedienungsanleitung.readthedocs.io
APP_HOST_URL Diese URL sollte die von außen erreichbare URL des Frontends darstellen https://ige-ng.informationgrid.eu
APP_INSTANCE_ID Wenn mehrere IGE‑Anwendungen mit einem iBus verbunden sind, müssen sie durch eine unterschiedliche Instanz‑ID unterschieden werden. ige-ng
APP_PROXY_URL Proxy für die Kommunikation mit Keycloak setzen. Häufig läuft Keycloak auf demselben Host, sodass die Kommunikation lokal erfolgen kann. Siehe KEYCLOAK_URL und KEYCLOAK_URL_FRONTEND.
BROKER_URL Die URL zum WebSocket, z. B. wss://<DOMAIN>/ige-ng/ws
CODELIST_REPO_PASSWORD Passwort für den Zugriff auf die API des Codelisten‑Repositorys
CODELIST_REPO_URL URL des Codelisten‑Repositorys https://dev.informationgrid.eu/codelist-repo
CODELIST_REPO_USER Benutzername für den Zugriff auf die API des Codelisten‑Repositorys
CONTEXT_PATH Wenn der InGrid Editor unter einem Kontextpfad erreichbar ist, muss er hier definiert werden. /
DATABASE_HOST Die IP‑Adresse, unter der sich die Datenbank befindet localhost
DATABASE_NAME Der Name der Datenbank ige
DATABASE_PASSWORD Das Passwort des Benutzers für den Zugriff auf die Datenbank admin
DATABASE_PORT Der Port der Datenbank 5432
DATABASE_USERNAME Der Benutzername für den Zugriff auf die Datenbank admin
ENABLE_AI Option zum Aktivieren der KI‑Funktion, die derzeit die Generierung von SQL‑Abfragen umfasst false
KEYCLOAK_BACKEND_USER Benutzername eines Keycloak‑Benutzers mit Administratorrechten. Wird für administrative Aufgaben in Keycloak benötigt.
KEYCLOAK_BACKEND_USER_PASSWORD siehe oben
KEYCLOAK_CLIENT_ID Die Client‑ID in Keycloak ige-ng-backend
KEYCLOAK_REALM Der Realm in Keycloak InGrid
KEYCLOAK_RESOURCE Der Client für das Frontend in Keycloak ige-ng-frontend
KEYCLOAK_URL Die URL zu Keycloak. Wenn eine interne IP verwendet wird, muss die Umgebungsvariable KEYCLOAK_URL_FRONTEND gesetzt werden, damit die Authentifizierung über den Browser möglich ist. https://keycloak.informationgrid.eu
KEYCLOAK_URL_FRONTEND Wird benötigt, wenn die Backend‑Kommunikation zu Keycloak über eine interne IP erfolgt. Es muss eine externe URL angegeben werden, die von außen erreichbar ist. wie KEYCLOAK_URL
OPEN_AI_TOKEN Token zur Authentifizierung bei OpenAI, um KI‑Funktionen zu nutzen.
MAIL_FROM Absenderadresse für ausgehende E‑Mails noreply@wemove.com
MAIL_HOST Hostname des zu verwendenden Mailservers mailrelay
MAP_TILE_URL URL für die Kartenkacheln mit den Platzhaltern {x}, {y} und {z}. Wird zum Hinzufügen räumlicher Bezüge verwendet. https://gdi-niederrhein-geodienste.de/openstreetmap/{z}/{x}/{y}.png
MAP_ATTRIBUTION Anzuzeigender Quellenvermerk für die Karte &copy; <a href="https://openstreetmap.de" target="_blank">OpenStreetMap</a> contributors
MAP_WMS_URL Bei Verwendung eines WMS‑Dienstes muss diese Variable gesetzt werden; sie überschreibt MAP_TILE_URL.
MAP_WMS_LAYERS Anzuzeigende Layer des WMS‑Dienstes festlegen
MATOMO_URL Die URL zum Matomo‑Tracking‑Dienst
MATOMO_SITE_ID Die Seitenkennung (Site ID) für den Matomo‑Tracking‑Dienst
NOMINATIM_URL Die URL des Nominatim‑Dienstes, der im Dialog für räumliche Bezüge verwendet wird. https://nominatim.openstreetmap.org/search?q={query}&format=json&countrycodes={countries}
SWAGGER_SERVERS Liste der Server, die in der Swagger UI verwendet werden (Trennzeichen: „::“ und „,“). Beispiel: http://localhost:8550::Local Server,https://ige-ng.informationgrid.eu/::Test Server
SERVER_PORT Port, unter dem die Anwendung läuft 80
SHOW_ACCESSIBILITY_LINK Link zur Barrierefreiheitsseite anzeigen false
SHOW_SWAGGER_UI Swagger UI anzeigen false
SHOW_TEST_BADGE Test‑Badge anzeigen (nützlich auf Testservern) false
VIRUSSCAN_MAIL_RECEIVER E‑Mail‑Adresse für Viruswarnungen
UPLOAD_EXTERNAL_URL URL, die beim Export verwendet wird, um hochgeladene Dateien aus dem Internet zu erreichen /documents/
VIRUSSCAN_SCHEDULE Crontab‑Zeitplan für den Virenscan‑Job 0 0 2 * * *
WAIT_FOR_PARAM Auf einen erreichbaren Dienst warten (z. B. eine Datenbank)
WAIT_FOR_PARAM_TIMEOUT Timeout in Sekunden für das Warten auf eine Verbindung
ZABBIX_API_KEY API‑Schlüssel für den Zugriff auf die Zabbix‑Instanz
ZABBIX_API_URL URL der Zabbix‑Instanz
ZABBIX_CATALOGS Katalogkennungen, für die die Zabbix‑Integration aktiviert werden soll
ZABBIX_CHECK_COUNT Anzahl aufeinanderfolgender Fehler, bis eine E‑Mail von der Zabbix‑Instanz gesendet wird 3
ZABBIX_CHECK_DELAY Zeitspanne zwischen zwei Prüfungen 8h
ZABBIX_DETAIL_URL_TEMPLATE URL der Detailseite des Datensatzes im Portal

FAQ

Die Indizierung/Der Import zeigt keinen Fortschritt an?

Dies kann an einer falsch konfigurierten WebSocket-Verbindung liegen. Bitte überprüfen Sie die Konfiguration des InGrid-Editors und die Konfiguration des Webservers. Dieser muss Websockets unterstützen und diese korrekt weiterleiten.

Beispiel einer Apache-Konfiguration
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://localhost:18101/$1 [P,L]