diff --git a/cozy-oauth-proxy b/cozy-oauth-proxy
index 665cef01aaceacd4b768b43cd98468ec32d713e4..6468dd2954e8651fd15fab17b787f9f826467053 100755
Binary files a/cozy-oauth-proxy and b/cozy-oauth-proxy differ
diff --git a/main.go b/main.go
index 8eccee418ddb8eb035d32e131ca0c0f7c798cc5b..8d184d05ab97cea4fe40ccc4e5fa562d001a4b36 100644
--- a/main.go
+++ b/main.go
@@ -3,6 +3,7 @@ package main
 import (
 	"encoding/json"
 	"flag"
+	"io"
 	"io/ioutil"
 	"net/http"
 	"net/url"
@@ -14,7 +15,9 @@ import (
 )
 
 var (
-	httpPort = flag.Int("http_port", 80, "HTTP port to serve on (defaults to 80)")
+	httpPort    = flag.Int("http_port", LookupEnvOrInt("HTTP_PORT", 80), "HTTP port to serve on (defaults to 80)")
+	logLevel    = flag.String("loglevel", LookupEnvOrString("LOGLEVEL", "debug"), "log level (debug, info, warning, error) (defaults to debug)")
+	redirectURI = flag.String("redirect_uri", LookupEnvOrString("REDIRECT_URI", "https://oauth-proxy.wf.alpha.grandlyon.com/redirect"), "Redirect URI (defaults to https://oauth-proxy.wf.alpha.grandlyon.com/redirect)")
 )
 
 type TokenResponse struct {
@@ -28,6 +31,24 @@ type TokenResponse struct {
 	UsagePointId         string `json:"usage_points_id"`
 }
 
+func LookupEnvOrString(key string, defaultVal string) string {
+	if val, ok := os.LookupEnv(key); ok {
+		return val
+	}
+	return defaultVal
+}
+
+func LookupEnvOrInt(key string, defaultVal int) int {
+	if val, ok := os.LookupEnv(key); ok {
+		v, err := strconv.Atoi(val)
+		if err != nil {
+			log.Fatalf("LookupEnvOrInt[%s]: %v", key, err)
+		}
+		return v
+	}
+	return defaultVal
+}
+
 func main() {
 	// Parse the flags
 	flag.Parse()
@@ -41,12 +62,28 @@ func main() {
 		FullTimestamp:    true,
 		TimestampFormat:  "2006-01-02 15:04:05",
 	})
-	// TODO(SBL): Level should be configurable via flag
-	//log.SetLevel(log.WarnLevel)
-	log.SetLevel(log.DebugLevel)
+
+	// Configure log level
+	switch strings.ToLower(*logLevel) {
+	case "error":
+		log.SetLevel(log.ErrorLevel)
+	case "warning":
+		log.SetLevel(log.WarnLevel)
+	case "info":
+		log.SetLevel(log.InfoLevel)
+	case "debug":
+		log.SetLevel(log.DebugLevel)
+	default:
+		log.SetLevel(log.DebugLevel)
+		log.Fatalf("Unknown logging level %s. Choose between debug, info, warning or error.", *logLevel)
+	}
 
 	mux := http.NewServeMux()
-	log.Info("Server started")
+	log.Infof("Starting Server on port %d\n", *httpPort)
+
+	mux.HandleFunc("/healthcheck", func(w http.ResponseWriter, r *http.Request) {
+		io.WriteString(w, "OK\n")
+	})
 
 	mux.HandleFunc("/auth", func(w http.ResponseWriter, r *http.Request) {
 		log.Debug("New auth request")
@@ -56,7 +93,6 @@ func main() {
 		clientId := query.Get("client_id")
 		state := query.Get("state")
 		cozyOrigin := query.Get("redirect_uri") // here we use the redirect_uri param to transmit our stack url
-		redirectUri := "https://oauth-proxy.wf.alpha.grandlyon.com/redirect"
 		responseType := "code"
 
 		// DEV API
@@ -64,7 +100,7 @@ func main() {
 		// PROD API
 		authURL := "https://mon-compte-particulier.enedis.fr/dataconnect/v1/oauth2/authorize"
 
-		redirectUrl := authURL + "?client_id=" + clientId + "&duration=P6M&redirect_uri=" + redirectUri + "&response_type=" + responseType + "&state=" + state + "-" + cozyOrigin
+		redirectUrl := authURL + "?client_id=" + clientId + "&duration=P6M&redirect_uri=" + *redirectURI + "&response_type=" + responseType + "&state=" + state + "-" + cozyOrigin
 
 		log.Debug("Redirect to - ", redirectUrl)
 		http.Redirect(w, r, redirectUrl, 302)