diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..258f96c4ab5041267cc165ecde50eccf780f5ddf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,65 @@
+# dcat-catalog-proxy
+
+Dieses Programm filtert einen von CKAN mit Hilfe der ckanext-dcat bzw. ckanext-dcatde erzeugten DCAT-Katalog für die Übergabe an GovData.
+Dabei werden folgende Änderungen an dem Katalog vorgenommen:
+
+- Datensätze, die nur PDF-Dateien als Distribution haben, werden entfernt
+- Datensätze bestimmter (konfigurierbarer) Herausgeber werden erfernt
+- Download-Adressen können umgeschrieben werden
+- Fehler im DCAT-Export werden korrigiert, so dass er für GovData und das Europäische Datenportal besser geeignet ist
+
+## Kompilieren
+
+```console
+./mvnw package
+```
+
+Es wird Java 17 benötigt.
+
+## Konfiguration
+
+Konfiguriert wird das Programm in einer Java-Properties-Datei. Die sieht z.B. so aus:
+
+```
+server.port=8082
+
+baseURL=https://opendata.schleswig-holstein.de/
+
+remoteURL=https://opendata.schleswig-holstein.de/
+
+replaceURL= {'http://efi2.schleswig-holstein.de/','https://efi2.schleswig-holstein.de/','http://opendata.zitsh.de/','https://opendata.schleswig-holstein.de/' }
+
+unwantedPublishers={'https://opendata.schleswig-holstein.de/organization/d8bd1f1d-7c77-4f6d-9fbd-bad92821fba4','https://opendata.schleswig-holstein.de/organization/6b9a2dd7-48a0-4d62-9120-324474dbe7ae'}
+```
+
+- `remoteURL` - Von *remoteURL* + `/catalog.xml` wird der Original-Katalog gelesen
+- `baseURL` - Diese Adressse wird verwendet, um Links zu weiteren Seiten des Katalogs zu erzeugen.
+- `replaceURL` (optional) - Eine Liste mit einer geraden Anzahl Strings, die zur Ersetzung von Download-Adressen werden wird. In im angegebenen Beispiel wird `http://efi2.schleswig-holstein.de/` durch `https://efi2.schleswig-holstein.de/` ersetzt und `http://opendata.zitsh.de/` durch `https://opendata.schleswig-holstein.de/`. 
+- `unwantedPublishers` (optional) - Liste von Herausgeber (`dct:publisher`) URIs im Open-Data-Portal, deren Datensätze herausgefiltert werden. Wichtig ist, dass die Schreibweise verwendet wird, die CKAN im DCAT-Export für Datensätze verwendet, üblicherweise die Schreibweise mit UUID. Das ist nicht die, die man über die Weboberfläche sieht. Am besten im DCAT-Export eines betroffenen Datensatzes im Element `dct:publisher` nachsehen.
+- `server.port` (optional) - TCP-Port, auf den der *DCAT catalogy proxy* hört, Standard ist 8080
+
+## Starten
+
+Es wird Java 17 benötigt. Gestartet wird das Programm mit
+
+```console
+java -jar dcat-catalog-proxy.jar --spring.config.location=settings.properties
+```
+
+wobei `settings.properties` die Datei mit den Einstellungen ist.
+
+### systemd
+
+Um den Dienst mit systemd zu starten, gibt es eine Service-Beschreibung in der Datei [odsh-catalog-proxy.service](./odsh-catalog-proxy.service), die unter `/etc/systemd/system/odsh-catalog-proxy.service` abgelegt wird. Diese Beschreibung erwartet die jar-Datei unter `/opt/odsh-catalog-proxy/target/dcat-catalog-proxy.jar` und die Konfigurationsdatei `/opt/odsh-catalog-proxy/application.properties`
+
+## Verwendung mit nginx
+
+Üblicherweise wird man den dcat-catalog-proxy nicht direkt im Internet verfügbar machen, sondern davor einen Webserver oder reverse proxy schalten. Hier ist eine Beispielkonfiguration, wie das mit nginx gemacht werden kann:
+
+```
+location /catalog-govdata.xml
+{
+  proxy_pass http://localhost:8082/catalog.xml;
+}
+```
+
diff --git a/odsh-catalog-proxy.service b/odsh-catalog-proxy.service
new file mode 100644
index 0000000000000000000000000000000000000000..03d218727783728cfd7ba4716909b99032be8850
--- /dev/null
+++ b/odsh-catalog-proxy.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=ODSH Catalog Proxy (DCAT)
+After=syslog.target network.target
+
+[Service]
+SuccessExitStatus=143
+User=proxyuser
+Group=proxyuser
+
+Type=simple
+
+ExecStart=/usr/bin/java -jar /opt/odsh-catalog-proxy/target/dcat-catalog-proxy.jar --spring.config.location=/opt/odsh-catalog-proxy/application.properties
+ExecStop=/bin/kill -15 $MAINPID
+
+[Install]
+WantedBy=multi-user.target