diff --git a/config/custom-environment-variables.js b/config/custom-environment-variables.js
index 4dccdd862b6a408f40433888f322a03deaba8f0c..4d44e7c804a075f022b61ff2467a8e7a1970bd52 100644
--- a/config/custom-environment-variables.js
+++ b/config/custom-environment-variables.js
@@ -6,8 +6,11 @@ module.exports = {
   },
   'pubsweet-client': {
     protocol: 'CLIENT_PROTOCOL',
-    host: 'PUBLIC_CLIENT_HOST',
+    host: 'CLIENT_HOST',
     port: 'CLIENT_PORT',
+    publicProtocol: 'PUBLIC_CLIENT_PROTOCOL',
+    publicHost: 'PUBLIC_CLIENT_HOST',
+    publicPort: 'PUBLIC_CLIENT_PORT',
   },
   'pubsweet-server': {
     protocol: 'SERVER_PROTOCOL',
diff --git a/config/default.js b/config/default.js
index 4ea6f061dde9a3cc7d6ecf095f0176ecf2de424a..7b759dcfcd47c8282f237256a306af21dad74e8c 100644
--- a/config/default.js
+++ b/config/default.js
@@ -161,12 +161,21 @@ module.exports = {
     theme: process.env.PUBSWEET_THEME,
     baseUrl: deferConfig(cfg => {
       const {
-        ORCID_AUTH_REDIRECT_PORT,
-        ORCID_AUTH_REDIRECT_HOSTNAME,
-        ORCID_AUTH_REDIRECT_PROTOCOL,
-      } = process.env
+        publicProtocol,
+        protocol,
+        publicHost,
+        host,
+        publicPort,
+        port,
+      } = cfg['pubsweet-client']
 
-      return `${ORCID_AUTH_REDIRECT_PROTOCOL}://${ORCID_AUTH_REDIRECT_HOSTNAME}:${ORCID_AUTH_REDIRECT_PORT}`
+      const protocolToUse = publicProtocol || protocol
+      let hostToUse = publicHost || host || 'localhost'
+      if (hostToUse === '0.0.0.0') hostToUse = 'localhost'
+      const portToUse = publicPort || port
+      return `${protocolToUse}://${hostToUse}${
+        portToUse ? `:${portToUse}` : ''
+      }`
     }),
   },
   'pubsweet-component-xpub-dashboard': {
diff --git a/docker-compose.production.elife.yml b/docker-compose.production.elife.yml
index 533e35e8dadd1453277bb705365b477c70323938..e66538724e282420f135889637ea0a6eaea9aefe 100644
--- a/docker-compose.production.elife.yml
+++ b/docker-compose.production.elife.yml
@@ -18,16 +18,15 @@ services:
       - CLIENT_PROTOCOL=${CLIENT_PROTOCOL}
       - CLIENT_HOST=${CLIENT_HOST}
       - CLIENT_PORT=${CLIENT_PORT}
-      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST:-0.0.0.0}
+      - PUBLIC_CLIENT_PROTOCOL=${PUBLIC_CLIENT_PROTOCOL}
+      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST}
+      - PUBLIC_CLIENT_PORT=${PUBLIC_CLIENT_PORT}
       - SERVER_PROTOCOL=${SERVER_PROTOCOL}
       - SERVER_HOST=${SERVER_HOST}
       - SERVER_PORT=${SERVER_PORT}
       - ORCID_CLIENT_ID=${ORCID_CLIENT_ID}
       - ORCID_CLIENT_SECRET=${ORCID_CLIENT_SECRET}
       - USE_SANDBOXED_ORCID=${USE_SANDBOXED_ORCID:-false}
-      - ORCID_AUTH_REDIRECT_PORT=${ORCID_AUTH_REDIRECT_PORT:-4000}
-      - ORCID_AUTH_REDIRECT_HOSTNAME=${ORCID_AUTH_REDIRECT_HOSTNAME:-localhost}
-      - ORCID_AUTH_REDIRECT_PROTOCOL=${ORCID_AUTH_REDIRECT_PROTOCOL:-http}
       - INSTANCE_NAME=${INSTANCE_NAME:-elife}
     entrypoint:
       [
@@ -83,4 +82,4 @@ services:
 
 volumes:
   db-data:
-    driver: local
\ No newline at end of file
+    driver: local
diff --git a/docker-compose.production.ncrc.yml b/docker-compose.production.ncrc.yml
index 1265a0d861b0ad48a576d62c47768eb4a88f01b0..f7c615608ab4c4d29cf5219b296f010005fc769b 100644
--- a/docker-compose.production.ncrc.yml
+++ b/docker-compose.production.ncrc.yml
@@ -18,16 +18,15 @@ services:
       - CLIENT_PROTOCOL=${CLIENT_PROTOCOL}
       - CLIENT_HOST=${CLIENT_HOST}
       - CLIENT_PORT=${CLIENT_PORT}
-      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST:-0.0.0.0}
+      - PUBLIC_CLIENT_PROTOCOL=${PUBLIC_CLIENT_PROTOCOL}
+      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST}
+      - PUBLIC_CLIENT_PORT=${PUBLIC_CLIENT_PORT}
       - SERVER_PROTOCOL=${SERVER_PROTOCOL}
       - SERVER_HOST=${SERVER_HOST}
       - SERVER_PORT=${SERVER_PORT}
       - ORCID_CLIENT_ID=${ORCID_CLIENT_ID}
       - ORCID_CLIENT_SECRET=${ORCID_CLIENT_SECRET}
       - USE_SANDBOXED_ORCID=${USE_SANDBOXED_ORCID:-false}
-      - ORCID_AUTH_REDIRECT_PORT=${ORCID_AUTH_REDIRECT_PORT:-4000}
-      - ORCID_AUTH_REDIRECT_HOSTNAME=${ORCID_AUTH_REDIRECT_HOSTNAME:-localhost}
-      - ORCID_AUTH_REDIRECT_PROTOCOL=${ORCID_AUTH_REDIRECT_PROTOCOL:-http}
       - INSTANCE_NAME=${INSTANCE_NAME:-ncrc}
     entrypoint:
       [
@@ -83,4 +82,4 @@ services:
 
 volumes:
   db-data:
-    driver: local
\ No newline at end of file
+    driver: local
diff --git a/docker-compose.yml b/docker-compose.yml
index 247639c98371d676678e4935e765a0c9ecfc0b5a..7205cf7ea55d376b479e4bcdeea91f8c07ab2670 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -68,13 +68,12 @@ services:
       - CLIENT_PROTOCOL=${CLIENT_PROTOCOL:-http}
       - CLIENT_HOST=${CLIENT_HOST:-localhost}
       - CLIENT_PORT=${CLIENT_PORT:-4000}
-      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST:-0.0.0.0}
+      - PUBLIC_CLIENT_PROTOCOL=${PUBLIC_CLIENT_PROTOCOL}
+      - PUBLIC_CLIENT_HOST=${PUBLIC_CLIENT_HOST}
+      - PUBLIC_CLIENT_PORT=${PUBLIC_CLIENT_PORT}
       - ORCID_CLIENT_ID=${ORCID_CLIENT_ID}
       - ORCID_CLIENT_SECRET=${ORCID_CLIENT_SECRET}
       - USE_SANDBOXED_ORCID=${USE_SANDBOXED_ORCID:-true}
-      - ORCID_AUTH_REDIRECT_PORT=${ORCID_AUTH_REDIRECT_PORT:-4000}
-      - ORCID_AUTH_REDIRECT_HOSTNAME=${ORCID_AUTH_REDIRECT_HOSTNAME:-localhost}
-      - ORCID_AUTH_REDIRECT_PROTOCOL=${ORCID_AUTH_REDIRECT_PROTOCOL:-https}
       - INSTANCE_NAME=${INSTANCE_NAME:-elife}
     volumes:
       - ./config:/home/node/app/config