diff --git a/morph/grid/production/config.json b/morph/grid/production/config.json
index 11ce70c07ebdbdfa0e28170d5017010cd5f55fa8..b91d7d2e74e4e3d2b30c5e9bea5b33fa4c6fdf1c 100644
--- a/morph/grid/production/config.json
+++ b/morph/grid/production/config.json
@@ -1,6 +1,6 @@
 { "publicStoragePort": 8898
-, "ristrettoSigningKeyPath": "../../PrivateStorageSecrets/ristretto.signing-key"
-, "stripeSecretKeyPath": "../../PrivateStorageSecrets/stripe.secret"
+, "ristrettoSigningKeyPath": "./secrets/ristretto.signing-key"
+, "stripeSecretKeyPath": "./secrets/stripe.secret"
 , "passValue": 1000000
 , "issuerDomain": "payments.privatestorage.io"
 , "letsEncryptAdminEmail": "jean-paul@privatestorage.io"
diff --git a/morph/grid/production/grid.nix b/morph/grid/production/grid.nix
index 7c9abe142fa98a6ceeebb3c8dc6d53dec2622e8c..c65f6832079dbbfdc34247a28e46822c49ea7cc7 100644
--- a/morph/grid/production/grid.nix
+++ b/morph/grid/production/grid.nix
@@ -6,7 +6,7 @@ import ../../lib/make-grid.nix {
   config = ./config.json;
   nodes = cfg:
     let
-      sshUsers = import ../../../../PrivateStorageSecrets/production-users.nix;
+      sshUsers = import ./secrets/production-users.nix;
     in {
     # Here are the hosts that are in this morph network.  This is sort of like
     # a server manifest.  We try to keep as many of the specific details as
diff --git a/morph/grid/production/secrets b/morph/grid/production/secrets
new file mode 120000
index 0000000000000000000000000000000000000000..523a2201861c0af15e630324fb0a59230751c442
--- /dev/null
+++ b/morph/grid/production/secrets
@@ -0,0 +1 @@
+../../../../PrivateStorageSecrets/
\ No newline at end of file
diff --git a/morph/grid/testing/config.json b/morph/grid/testing/config.json
index e9b3b96940ab6cc73ef6b6f8dc2ec89a83a463d9..d1840beaa54098ac95433b9253bac512eecdc4bb 100644
--- a/morph/grid/testing/config.json
+++ b/morph/grid/testing/config.json
@@ -1,6 +1,6 @@
 { "publicStoragePort": 8898
-, "ristrettoSigningKeyPath": "../../PrivateStorageSecrets/ristretto.signing-key"
-, "stripeSecretKeyPath": "../../PrivateStorageSecrets/privatestorageio-testing-stripe.secret"
+, "ristrettoSigningKeyPath": "./secrets/ristretto.signing-key"
+, "stripeSecretKeyPath": "./secrets/privatestorageio-testing-stripe.secret"
 , "passValue": 1000000
 , "issuerDomain": "payments.privatestorage-staging.com"
 , "letsEncryptAdminEmail": "jean-paul@privatestorage.io"
diff --git a/morph/grid/testing/grid.nix b/morph/grid/testing/grid.nix
index c1a9f60a0e4154b4bc208429c8f4ab5704c106d6..16673c6247b95ab1d7fb54d77ff4f4e70e67ed2f 100644
--- a/morph/grid/testing/grid.nix
+++ b/morph/grid/testing/grid.nix
@@ -11,7 +11,7 @@ import ../../lib/make-grid.nix {
       then import path
       else default
     );
-    sshUsers = importDef {} ../../../../PrivateStorageSecrets/staging-users.nix;
+    sshUsers = importDef {} ./secrets/staging-users.nix;
   in {
     "payments" = import ../../lib/make-issuer.nix ({
       publicIPv4 = "18.197.42.120";
diff --git a/morph/grid/testing/secrets b/morph/grid/testing/secrets
new file mode 120000
index 0000000000000000000000000000000000000000..523a2201861c0af15e630324fb0a59230751c442
--- /dev/null
+++ b/morph/grid/testing/secrets
@@ -0,0 +1 @@
+../../../../PrivateStorageSecrets/
\ No newline at end of file