diff --git a/go.mod b/go.mod
index c17a7d8..bf53cc8 100644
--- a/go.mod
+++ b/go.mod
@@ -25,6 +25,7 @@
 	github.com/golang/protobuf v1.5.0 // indirect
 	github.com/golang/snappy v0.0.3 // indirect
 	github.com/google/flatbuffers v1.12.1 // indirect
+	github.com/joho/godotenv v1.4.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/klauspost/compress v1.12.3 // indirect
 	github.com/leodido/go-urn v1.2.1 // indirect
diff --git a/go.sum b/go.sum
index 3deb7ef..0919672 100644
--- a/go.sum
+++ b/go.sum
@@ -61,6 +61,8 @@
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
+github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
diff --git a/service.go b/service.go
index 3ed40e7..6436ddd 100644
--- a/service.go
+++ b/service.go
@@ -9,6 +9,7 @@
 
 	badger "github.com/dgraph-io/badger/v3"
 	"github.com/gin-gonic/gin"
+	"github.com/joho/godotenv"
 )
 
 var db *badger.DB
@@ -76,13 +77,18 @@
 	r := gin.Default()
 	r.LoadHTMLGlob("templates/*")
 
+	korapServer := os.Getenv("KORAP_SERVER")
+	if korapServer == "" {
+		korapServer = "https://korap.ids-mannheim.de"
+	}
+
 	//
 	r.GET("/", func(c *gin.Context) {
 		c.Header("Access-Control-Allow-Origin", "null")
 		c.Header("Access-Control-Allow-Credentials", "null")
 		c.Header("Vary", "Origin")
 		c.HTML(http.StatusOK, "main.html", gin.H{
-			"korapServer": "https://korap.ids-mannheim.de/instance/test",
+			"korapServer": korapServer,
 		})
 	})
 
@@ -93,6 +99,8 @@
 }
 
 func main() {
+	godotenv.Load()
+
 	initDB("db")
 	defer closeDB()
 
@@ -139,5 +147,11 @@
 		return
 	}
 	r := setupRouter()
-	log.Fatal(http.ListenAndServe(":5722", r))
+
+	port := os.Getenv("PORT")
+	if port == "" {
+		port = "5722"
+	}
+
+	log.Fatal(http.ListenAndServe(":"+port, r))
 }
diff --git a/service_test.go b/service_test.go
index 8e27b56..7304ae7 100644
--- a/service_test.go
+++ b/service_test.go
@@ -3,6 +3,7 @@
 import (
 	"net/http"
 	"net/http/httptest"
+	"os"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -51,6 +52,19 @@
 	router.ServeHTTP(w, req)
 
 	assert.Equal(t, http.StatusOK, w.Code)
+	assert.Contains(t, w.Body.String(), "data-server=\"https://korap.ids-mannheim.de\"")
+	assert.Contains(t, w.Body.String(), "<title>External Provider</title>")
+
+	os.Setenv("KORAP_SERVER", "https://korap.ids-mannheim.de/instance/test")
+
+	router = setupRouter()
+
+	w = httptest.NewRecorder()
+	req, _ = http.NewRequest(http.MethodGet, "/", nil)
+
+	router.ServeHTTP(w, req)
+
+	assert.Equal(t, http.StatusOK, w.Code)
 	assert.Contains(t, w.Body.String(), "data-server=\"https://korap.ids-mannheim.de/instance/test\"")
 	assert.Contains(t, w.Body.String(), "<title>External Provider</title>")
 }
