diff --git a/Dockerfile b/Dockerfile
index 844f6af91c7865fd0e9d4dc51cdc692ad0fd9bde..0a5db9a2fdc4383daf8856b12d2e9fdd03e6cc34 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,6 +12,5 @@ ADD . .
 RUN yarn install --production
 RUN mkdir ./server-files
 RUN mkdir ./user-files
-RUN cp ./sql/default-account.sqlite ./server-files/account.sqlite
 
 CMD ["yarn", "start"]
\ No newline at end of file
diff --git a/account-db.js b/account-db.js
index f839df7cd4723cedefdc8eb73c8480546884223a..8a90459337dbf4df21a5b124032bcb3beff6a506 100644
--- a/account-db.js
+++ b/account-db.js
@@ -1,10 +1,20 @@
+let fs = require('fs');
 let { join } = require('path');
 let { openDatabase } = require('./db');
+let config = require('./load-config');
 let accountDb = null;
 
 function getAccountDb() {
   if (accountDb == null) {
-    accountDb = openDatabase(join(__dirname, 'server-files/account.sqlite'));
+    let dbPath = join(config.serverFiles, 'account.sqlite');
+    let needsInit = !fs.existsSync(dbPath);
+
+    accountDb = openDatabase(dbPath);
+
+    if (needsInit) {
+      let initSql = fs.readFileSync(join(__dirname, 'sql/account.sql'), 'utf8');
+      accountDb.exec(initSql);
+    }
   }
 
   return accountDb;
diff --git a/app-sync.js b/app-sync.js
index ca56cdbb62ebe19c011ba7652bd8f7779799fe98..9b7dbfb637acd2e075a4f92f9cb9773b83bd2bb4 100644
--- a/app-sync.js
+++ b/app-sync.js
@@ -19,7 +19,7 @@ const app = express();
 app.use(errorMiddleware);
 
 async function init() {
-  let fileDir = join(__dirname, process.env.ACTUAL_USER_FILES || config.files);
+  let fileDir = join(__dirname, process.env.ACTUAL_USER_FILES || config.userFiles);
 
   console.log('Initializing Actual with user file dir:', fileDir);
 
@@ -279,12 +279,12 @@ app.post('/upload-user-file', async (req, res) => {
   // supported yet in the self-hosted version because it's unclear if
   // it's still needed, given that you own your server
   //
-  // await fs.writeFile(join(config.files, `${fileId}.blob`), req.body);
+  // await fs.writeFile(join(config.userFiles, `${fileId}.blob`), req.body);
 
   let zip = new AdmZip(req.body);
 
   try {
-    zip.extractAllTo(join(config.files, fileId), true);
+    zip.extractAllTo(join(config.userFiles, fileId), true);
   } catch (err) {
     console.log('Error writing file', err);
     res.send(JSON.stringify({ status: 'error' }));
@@ -339,7 +339,7 @@ app.get('/download-user-file', async (req, res) => {
 
   let zip = new AdmZip();
   try {
-    zip.addLocalFolder(join(config.files, fileId), '/');
+    zip.addLocalFolder(join(config.userFiles, fileId), '/');
   } catch (e) {
     res.status(500).send('Error reading files');
     return;
diff --git a/load-config.js b/load-config.js
index 4af565dc8749b4e6ae72e37e29df9fe105f75c81..9dd97e07ef9d0bd0520dd77a77fa77ae7e85d4cf 100644
--- a/load-config.js
+++ b/load-config.js
@@ -3,11 +3,14 @@ try {
   config = require('./config');
 } catch (e) {
   let fs = require('fs');
+  let { join } = require('path');
+  let root = fs.existsSync('/data') ? '/data' : '/';
 
   config = {
     mode: 'development',
     port: 5006,
-    files: fs.existsSync('/data') ? '/data' : './user-files'
+    serverFiles: join(root, 'server-files'),
+    userFiles: join(root, 'user-files')
   };
 }
 
diff --git a/sql/default-account.sqlite b/sql/default-account.sqlite
deleted file mode 100644
index 3878e6831c5c80d9af8539f4b3fa7fcc3de6b916..0000000000000000000000000000000000000000
Binary files a/sql/default-account.sqlite and /dev/null differ