Harvester
Allgemeines¶
Der InGrid Harvester ist eine eigenständige Softwarekomponente, die Daten aus diversen Quellen „erntet“ und sie in verschiedenen, konfigurierten "Katalogen" bereitstellt. Diese Kataloge umfassen Elasticsearch-Indizes, CSW-Server oder Piveau-Kataloge.
Leitfaden¶
Sie haben die Installation bereits abgeschlossen? Diese Leitfaden könnten Sie interessieren.
-
Harvester einrichten
Sie haben die Installation des Harvesters abgeschlossen?
Dieser Leitfaden begleitet Sie beim finalen Einrichtungsprozess.
-
CSW Harvester Beispiel
Sie wollen einen Harvester-Prozess aufsetzen?
Dieser Leitfaden begleitet Sie beim Aufsetzen einer CSW Datenquelle.
-
Benutzeroberfläche

Interesse an der Benutzeroberfläche?
Dieser Leitfaden bietet Einblicke in Bediehnung und Überwachung von Harvester-Prozessen.
Systemvoraussetzungen¶
| Systembestandteil | Anforderung | |
|---|---|---|
| Hardware | Arbeitsspeicher | 2 GB RAM |
| Festplattenspeicher | 10 GB frei | |
| Prozessor | Dual Core CPU | |
| Software | Java | Java 17 |
| Node.js | Version 20 | |
| Elasticsearch | Version 8.x | |
| PostgreSQL | Version 13 oder höher |
Installation¶
Info
Neben dem Harvester muss zusätzlich eine Datenbank und ein Elasticsearch-Cluster eingerichtet werden. Wenn gewünscht, sollten zusätzliche Katalog-Ziele (CSW-Server oder Piveau-Hub Instanz) installiert sein.
Die Installation des Harvesters kann mit Docker, per RPM (in Arbeit) oder direkt aus dem github-Repository erfolgen. Im Folgenden sind Beispiele und Anleitungen dazu aufgelistet.
Docker¶
-
Docker-Image
Zur Installation kann das folgende Docker-Image verwendet werden:
services:
harvester:
image: docker-registry.wemove.com/ingrid-harvester:latest
restart: unless-stopped
environment:
- NODE_ENV=production
- IMPORTER_PROFILE=ingrid
- ADMIN_PASSWORD=admin
- ELASTIC_URL=http://elastic:9200
- ELASTIC_VERSION=8
- ELASTIC_USER=elastic
- ELASTIC_PASSWORD=
- ELASTIC_ALIAS=harvester-alias
- ELASTIC_PREFIX=harvester_
- DB_URL=postgres
- DB_PORT=5432
- DB_NAME=harvester
- DB_USER=admin
- DB_PASSWORD=admin
volumes:
- /etc/localtime:/etc/localtime:ro
- ./harvester/config/config.json:/opt/ingrid/harvester/config.json
- ./harvester/config/client_config.json:/opt/ingrid/harvester/app/webapp/assets/config.json
- ./harvester/logs:/opt/ingrid/harvester/logs
ports:
- 8090:8090
working_dir: /opt/ingrid/harvester
command: node app/index.js
networks:
- ingrid-network
postgres:
image: postgres:15.7
restart: unless-stopped
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=harvester
- PGDATA=/pgdata
volumes:
- ./postgres/_data/pgdata:/pgdata
- ./postgres/init-db:/docker-entrypoint-initdb.d
networks:
- ingrid-network
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:8.14.1
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
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms2g -Xmx2g -Dlog4j2.formatMsgNoLookups=true"
# Hotfix #3292
- "LOG4J_FORMAT_MSG_NO_LOOKUPS=true"
deploy:
resources:
limits:
memory: 3072M
networks:
- ingrid-network
networks:
ingrid-network:
driver: "bridge"
RPM¶
TODO
From Source¶
Um den Harvester direkt auf einem System zu installieren, müssen folgende Vorbedingungen erfüllt sein:
- Elasticsearch (>= v8)
- PostgreSQL (>= v14)
- NodeJS (>= v20)
Die Installation des Harvesters (z.B. nach /opt/ingrid/harvester) erfolgt dann mit diesen Schritten:
Harvester clonen und bauen¶
git clone https://github.com/informationgrid/ingrid-harvester
cd ingrid-harvester/server
npm ci
npm run build
cd ../client
npm ci
npm run prod
Harvester installieren¶
mkdir -p /opt/ingrid/harvester
cp server/package*.json /opt/ingrid/harvester/
cp -r server/build/* /opt/ingrid/harvester/
cp -r client/dist/webapp /opt/ingrid/harvester/app/webapp
cd /opt/ingrid/harvester
npm run install-production
Harvester starten¶
Zuerst eine Datenbank erstellen und die nötigen Umgebungsvariablen für Elasticsearch und PostgreSQL einrichten, siehe Umgebungsvariablen. Danach:
Konfiguration¶
Wenn der InGrid Harvester unter einem Unterpfad (z. B. nicht direkt unter dem Root) erreichbar sein soll, müssen beide der folgenden Einstellungen vorgenommen werden:
Info
Achten Sie darauf, dass der Unterpfad mit einem Schrägstrich / endet.
Beispiel: "contextPath": "/harvester/"
BASE_URLauf den gewünschten Pfad setzen (Umgebungsvariable)contextPathin der Client-Konfigurationsdatei auf denselben Wert setzen
Gegebenenfalls muss ein existierender Reverse-Proxy entsprechend konfiguriert werden.
Authentifizierung¶
Benutzer und Passwort wird über die Konfigurationsdatei users.json gesetzt. Das Admin-Password kann mit der Umgebungsvariable ADMIN_PASSWORD überschieben werden.
Beispiel für users.json
Konfigurationsdateien¶
In einem Docker-Setup sollten diese Dateien vom Hostsystem in den Container gemappt werden.
Mapping relevanter Dateien
| Speicherort der Konfigurationsdatei (Projekt) | Speicherort der Konfigurationsdatei (Docker-Container) | Zweck |
|---|---|---|
| server/users.json | /opt/ingrid/harvester/users.json | Konfiguration von Harvester-Zugangsdaten |
| server/config.json | /opt/ingrid/harvester/config.json | Konfiguration der Datenquellen |
| server/config-catalogs.json | /opt/ingrid/harvester/config-catalogs.json | Konfiguration der Kataloge |
| server/config-general.json | /opt/ingrid/harvester/config-general.json | Allgemeine Einstellungen (Elasticsearch, Postgres, ...) |
| server/mappings.json | /opt/ingrid/harvester/mappings.json | Mapping der Datenformate |
| server/keycloak.json | /opt/ingrid/harvester/keycloak.json | Zugriffskonfiguration für den Keycloak-Client |
| client/src/assets/config.json | /opt/ingrid/harvester/app/webapp/assets/config.json | Einstellungen des Clients |
Umgebungsvariablen¶
Einige allgemeine Einstellungen können auch über Umgebungsvariablen konfiguriert werden. Diese Einstellungen haben Vorrang vor den Konfigurationsdateien.
Alle Umgebungsvariablen im Überblick
| Variable | Hinweis |
|---|---|
| ADMIN_PASSWORD | Admin Passwort zum Überschreiben der Konfigurationsdatei users.json |
| DB_CONNECTION_STRING | |
| DB_URL | |
| DB_PORT | |
| DB_NAME | |
| DB_USER | |
| DB_PASSWORD | |
| DEFAULT_CATALOG | Standardkatalog, der verwendet wird, wenn kein spezifischer angegeben ist |
| ELASTIC_URL | |
| ELASTIC_VERSION | Hauptversion (8 oder 9) |
| ELASTIC_USER | |
| ELASTIC_PASSWORD | |
| ELASTIC_REJECT_UNAUTHORIZED | Ob Verbindungen abgelehnt werden sollen, wenn das Zertifikat ungültig ist |
| ELASTIC_INDEX | TODO |
| ELASTIC_ALIAS | TODO |
| ELASTIC_PREFIX | TODO |
| ELASTIC_NUM_SHARDS | TODO |
| ELASTIC_NUM_REPLICAS | TODO |
| PORTAL_URL | Basis-URL zur Anzeige der Portal-Website (ohne abschließenden Slash) |
| PROXY_URL | URL mit Anmeldedaten und Port, falls erforderlich |
| ALLOW_ALL_UNAUTHORIZED | Ob alle Verbindungen unabhängig vom SSL-Status erlaubt werden sollen |
| IMPORTER_PROFILE | Profil, das für die Anwendung verwendet wird: ingrid, diplanung, mcloud |
| BASE_URL | Unterpfad, unter dem der Harvester bereitgestellt wird, wenn nicht unter / |
| PASSPORT_ENABLED | Aktiviere lokalen Login mit ADMIN_PASSWORD |
| KEYCLOAK_ENABLED | Aktiviere Login mit Keycloak |
| KEYCLOAK_AUTH_SERVER_URL | URL zur Keycloak-Instanz |
| KEYCLOAK_CREDENTIALS_SECRET | Geheimnis für den Zugriff auf Keycloak-Client harvester |
| THREADPOOL_SIZE | Anzahl paralleler Harvest Jobs (Default: 5) |
| MAX_LOGS_PER_HARVESTER | Limit für Log-Dateien pro Datenquelle (Default: 10). Ältere Logs werden gelöscht. |
Keycloak Konfiguration¶
Damit der Harvester mit Keycloak authentifiziert werden kann, muss ein Client mit dem Namen harvester eingerichtet werden. Wird der bereitgestellte vorkonfigurierte Keycloak von wemove verwenden, dann ist dieser Client schon vorhanden und kann über Umgebungsvariablen angepasst werden. Für die manuelle Konfiguration muss wie folgt vorgegangen werden:
- neuen Client mit der ID
harvesteranlegen - Redirect-URIs:
/* - Client authentication: An
- Authentication flow: Standard flow
- unter
Rolesmüssen die folgenden drei Rollen angelegt werden- admin
- editor
- viewer
Um einem Benutzer Zugang zum Harvester zu geben, muss diesem Benutzer eine dieser Rollen zugewiesen werden. Der Benutzer kann dann auf den Harvester zugreifen.
FAQ¶
Wie richte ich den Harvester ein, nachdem die Installation abgeschlossen ist?
Siehe Leitfaden Harvester einrichten
Wie setze ich eine CSW-Datenquelle auf?
Siehe Leitfaden CSW-Datenquelle
Wie setze ich einen Elasticsearch-Katalog auf?
Werde ich benachrichtigt, wenn ein Harvester Job fehlschlägt?
Dieses Verhalten kann eingerichtet werden.
Im Abschnitt E-Mail Einstellungen im Leitfaden "Harvester einrichten" können Benachrichtigungen eingerichtet werden.