diff --git a/keyserver/src/database/migration-config.js b/keyserver/src/database/migration-config.js
--- a/keyserver/src/database/migration-config.js
+++ b/keyserver/src/database/migration-config.js
@@ -466,9 +466,47 @@
       }
     },
   ],
+  [
+    39,
+    async () => {
+      ensureUserCredentials();
+    },
+  ],
+  [
+    40,
+    async () => {
+      await dbQuery(
+        SQL`
+          ALTER TABLE metadata
+          MODIFY COLUMN data VARCHAR(1023);
+        `,
+      );
+    },
+  ],
 ]);
 const newDatabaseVersion: number = Math.max(...migrations.keys());
 
+async function ensureUserCredentials() {
+  try {
+    const fileHandle = await fs.promises.open(
+      'secrets/user_credentials.json',
+      'r',
+    );
+    JSON.parse(await fileHandle.readFile('utf8'));
+  } catch (e) {
+    console.log(
+      'Please add the follow to secrets/user_credentials.json:\n' +
+        '{\n' +
+        ' . "username": <user>,\n' +
+        ' . "password": <pass>,\n' +
+        '}\n',
+    );
+    // Since we don't want to apply the migrate
+    // throw error now, so check is ran again
+    throw e;
+  }
+}
+
 async function writeJSONToFile(data: any, filePath: string): Promise<void> {
   console.warn(`updating ${filePath} to ${JSON.stringify(data)}`);
   const fileHandle = await fs.promises.open(filePath, 'w');