diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java b/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
index 62cf5c3..c779cc1 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
@@ -31,6 +31,7 @@
     public void setCorpusQueryString (String s);
     public String getSource ();
     public void setSource (String h, String p);
+    public void setSource (String v);
     public int getTotalResults ();
     public boolean hasTimeExceeded ();
     public void setMaxResults (int m);
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java b/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
index f2898a9..1f324f3 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
@@ -169,6 +169,14 @@
         this.src = s.toString();
     };
 
+
+    /**
+     * Set the source information verbose.
+     */
+    public void setSource (String src) {
+        this.src = src;
+    };
+    
     
     /**
      * Get the source information.
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
index 0f5d4f1..9b509fc 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
@@ -60,7 +60,6 @@
  * TODO for release:
  * - Rename to "Kalamar-Plugin-Export".
  * - Improve Readme.
- * - Add opaque source, in case source is an internal IP.
  * - Add screenshot.
  *
  * TODO:
@@ -178,6 +177,7 @@
         String port    = prop.getProperty("api.port", "8089");
         String host    = prop.getProperty("api.host", "localhost");
         String path    = prop.getProperty("api.path", "");
+        String source  = prop.getProperty("api.source");
         int pageSize   = Integer.parseInt(prop.getProperty("conf.page_size", "5"));
         int maxResults = Integer.parseInt(prop.getProperty("conf.max_exp_limit", "10000"));
 
@@ -244,7 +244,10 @@
         exp.setMaxResults(maxResults);
         exp.setQueryString(q);
         exp.setCorpusQueryString(cq);
-        exp.setSource(host, path);
+        if (source != null)
+            exp.setSource(source);
+        else
+            exp.setSource(host, path);
        
         // Set filename
         if (fname != null)
diff --git a/src/main/resources/exportPlugin.conf b/src/main/resources/exportPlugin.conf
index a76c44d..fc64329 100644
--- a/src/main/resources/exportPlugin.conf
+++ b/src/main/resources/exportPlugin.conf
@@ -12,6 +12,10 @@
 api.host=korap.ids-mannheim.de
 api.scheme=https
 
+# Overwrite to set source to a string,
+# especially useful when run behind a proxy.
+# api.source = korap.ids-mannheim.de
+
 # Asset Configuration
 asset.host=korap.ids-mannheim.de
 asset.scheme=https
diff --git a/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java b/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
index 00742a3..1dcceee 100644
--- a/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/plkexport/ServiceTest.java
@@ -12,6 +12,7 @@
 import org.mockserver.junit.MockServerRule;
 import static org.mockserver.model.HttpRequest.*;
 import static org.mockserver.model.HttpResponse.*;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.AfterClass;
 import org.slf4j.Logger;
@@ -87,11 +88,15 @@
         // Unfortunately this means the tests can't run in parallel
         mockServer = ClientAndServer.startClientAndServer(34765);
         mockClient = new MockServerClient("localhost", mockServer.getPort());
+    }
 
+    @Before
+    public void resetProps () {
         Properties properties = ExWSConf.properties(null);
         properties.setProperty("api.host", "localhost");
         properties.setProperty("api.port", String.valueOf(mockServer.getPort()));
         properties.setProperty("api.scheme", "http");
+        properties.remove("api.source");
     }
    
     @AfterClass
@@ -277,6 +282,10 @@
 
     @Test
     public void testExportWsRTFcorpusQuery () {
+
+        Properties properties = ExWSConf.properties(null);
+        properties.setProperty("api.source", "my-server");
+
         mockClient.reset().when(
             request()
             .withMethod("GET")
@@ -305,10 +314,11 @@
         assertEquals("Request RTF: Http Response should be 200: ",
                 Status.OK.getStatusCode(), responsertf.getStatus());
         String str = responsertf.readEntity(String.class);
-
         assertTrue("Corpus info", str.contains("Corpus:"));
         assertTrue("Corpus def", str.contains("corpusSigle = \"WPD17\""));
         assertFalse("Errors", str.contains("dynCall("));
+        assertTrue("Source info", str.contains("Source:" + CELLSPLIT + "my-server"));
+        
     }
 
     @Test
