diff --git a/.envrc b/.envrc
index 792a46b6ad332e752404a9724f9bef38ed57fc75..e2d92caaac36c8fb15b01e3d1d2163160570bb29 100644
--- a/.envrc
+++ b/.envrc
@@ -7,6 +7,7 @@ fi
 
 # loads personal (secret) data from separate env file (not checked in)
 source_env_if_exists .envrc.local
+source_env_if_exists .envrc-push-gateway.local
 
 type yarn >/dev/null 2>&1 && PATH="$PATH:$(yarn global bin)"
 export PATH
\ No newline at end of file
diff --git a/.envrc-push-gateway.local.template b/.envrc-push-gateway.local.template
new file mode 100644
index 0000000000000000000000000000000000000000..bf8a697c98cea38107734626c44ef82d5cab9b4b
--- /dev/null
+++ b/.envrc-push-gateway.local.template
@@ -0,0 +1,10 @@
+# ========= SYGNAL PUSH GATEWAY CONFIGURATION =========
+export SYGNAL_CONF=/data/sygnal.yaml
+
+# API key for Firebase Cloud Messaging
+export HOLI_CHAT_PUSH_GATEWAY_FCM_API_KEY=
+
+export APNS_KEYFILE=/data/apns_keyfile_staging.p8
+export APNS_KEY_ID=
+export APNS_TEAM_ID=
+export APNS_TOPIC=
\ No newline at end of file
diff --git a/.envrc.local.template b/.envrc.local.template
index ff64895897cbcfba7f08919ad28263754328755d..1bc28eed99211834a3f7d6b5fdee57dff7d11f6b 100644
--- a/.envrc.local.template
+++ b/.envrc.local.template
@@ -23,14 +23,3 @@ export HOLI_CHAT_FORM_SECRET=
 
 # shared secret used to generate access tokens within Synapse to be used for subsequent client requests
 export HOLI_CHAT_MACAROON_SECRET_KEY= 
-
-
-# ========= SYGNAL PUSH GATEWAY CONFIGURATION =========
-
-# API key for Firebase Cloud Messaging
-export HOLI_CHAT_PUSH_GATEWAY_FCM_API_KEY=
-
-export APNS_KEYFILE=
-export APNS_KEY_ID=
-export APNS_TEAM_ID=
-export APNS_TOPIC=
diff --git a/.gitignore b/.gitignore
index cdf5ff21688e4d7b0ed924ac461ad5c9aa592d93..3484870b5b2675e7bcff8523d735c7ed394d73e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
 .envrc.local
+.envrc-push-gateway.local
 sygnal.yaml
 homeserver.yaml
 media_store
 *.key
-apns-test/apns_keyfile_staging.p8
-apns-test/node_modules/
\ No newline at end of file
+apns-test/node_modules/
+data-push-gateway/apns_keyfile_staging.p8
+apns-test/apns_keyfile_staging.p8
\ No newline at end of file
diff --git a/sygnal.yaml.template b/data-push-gateway/sygnal.yaml.template
similarity index 100%
rename from sygnal.yaml.template
rename to data-push-gateway/sygnal.yaml.template
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 4c05512fb3f70e4591df250ddc2845c36c1c637b..f1706eb038758c063e2993bdb854967eb024130d 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -25,8 +25,10 @@ services:
     image: matrixdotorg/sygnal
     container_name: chat-push-gateway
     restart: always
+    env_file:
+      - ./.envrc-push-gateway.local
     volumes:
-      - ./sygnal.yaml:/sygnal.yaml
+      - ./data-push-gateway:/data
     ports:
       - 8050:5000
     networks:
diff --git a/generate-push-gateway-config.sh b/generate-push-gateway-config.sh
index a10f05a1eb7d175ae7f4856faff898090dbbf081..0f369437712134668f7f2cba994e05e651139896 100755
--- a/generate-push-gateway-config.sh
+++ b/generate-push-gateway-config.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-envsubst < ./sygnal.yaml.template > ./sygnal.yaml
+envsubst < ./data-push-gateway/sygnal.yaml.template > ./data-push-gateway/sygnal.yaml