diff --git a/start.sh b/start.sh
index 56c15b7..e581be2 100644
--- a/start.sh
+++ b/start.sh
@@ -10,6 +10,11 @@ echo "==> Starting Ente Cloudron app..."
 # Create necessary directories
 mkdir -p /app/data/config /app/data/storage /app/data/caddy /app/data/go /app/data/logs
 
+# Create and set proper permissions for patched directory early
+mkdir -p /app/data/patched
+chmod -R 777 /app/data/patched
+echo "==> Created and set full permissions (777) on /app/data/patched directory"
+
 # Add comment about Cloudron filesystem limitations
 echo "==> NOTE: Running in Cloudron environment with limited write access"
 echo "==> Writable directories: /app/data, /tmp, /run"
@@ -400,6 +405,7 @@ echo "==> Created db_override.go in writable location: /app/data/overrides"
 mkdir -p /app/data/patched
 cp /app/data/overrides/db_override.go /app/data/patched/
 chmod -R 777 /app/data/patched
+chmod 666 /app/data/patched/db_override.go
 echo "==> Copied db_override.go to patched directory for Go compiler compatibility"
 echo "==> Set permissions on patched directory to 777"
 
@@ -474,25 +480,45 @@ if [ -d "$SERVER_DIR/cmd/museum" ]; then
 #!/bin/bash
 # Unset any module-related flags that cause issues
 unset GOFLAGS
-cd "$SERVER_DIR" && \
-PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
-PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
-PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
-PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
-PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
-PGSSLMODE="disable" \
-ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
-ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
-ENTE_PG_USER="${MUSEUM_DB_USER}" \
-ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
-ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
-ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \
-CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \
-CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \
-CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \
-CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
-CLOUDRON_POSTGRESQL_DATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
-cp $SERVER_DIR/cmd/museum/main.go /app/data/patched/ && cd /app/data/patched && GO111MODULE=on go run -ldflags "-X 'github.com/lib/pq.defaulthost=${MUSEUM_DB_HOST}'" *.go db force 25
+unset GO111MODULE
+
+# Set PostgreSQL environment variables
+export PGHOST="${CLOUDRON_POSTGRESQL_HOST}"
+export PGPORT="${CLOUDRON_POSTGRESQL_PORT}"
+export PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}"
+export PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}"
+export PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
+export PGSSLMODE="disable"
+
+# Create go.mod and go.sum files
+cd /app/data/patched
+cat > go.mod <<EOG
+module ente.io/server
+
+go 1.24
+
+require (
+	github.com/lib/pq v1.10.9
+)
+EOG
+
+# Generate empty go.sum file (needed to prevent errors)
+touch go.sum
+chmod 666 go.mod go.sum
+
+# Download the dependency to populate go.sum
+go mod tidy
+go mod download github.com/lib/pq
+
+# Echo the pq dependency explicitly
+cat >> go.sum <<EOG
+github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
+github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+EOG
+
+# Run the migration
+export GO111MODULE=on
+go run -ldflags "-X 'github.com/lib/pq.defaulthost=${MUSEUM_DB_HOST}'" *.go db force 25
 EOF
     chmod +x /tmp/run_migration.sh
     
@@ -531,23 +557,23 @@ elif [ -d "$SERVER_DIR/cmd/museum" ]; then
     # Create a startup script
     cat > /tmp/run_server.sh <<EOF
 #!/bin/bash
-cd "$SERVER_DIR" && \\
-PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \\
-PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \\
-PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \\
-PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \\
-PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \\
-PGSSLMODE="disable" \\
-ENTE_PG_HOST="${MUSEUM_DB_HOST}" \\
-ENTE_PG_PORT="${MUSEUM_DB_PORT}" \\
-ENTE_PG_USER="${MUSEUM_DB_USER}" \\
-ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \\
-ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \\
-ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \\
-CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \\
-CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \\
-CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \\
-CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \\
+cd "$SERVER_DIR" && \
+PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
+PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
+PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
+PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
+PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
+PGSSLMODE="disable" \
+ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
+ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
+ENTE_PG_USER="${MUSEUM_DB_USER}" \
+ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
+ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
+ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \
+CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \
+CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \
+CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \
+CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
 CLOUDRON_POSTGRESQL_DATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
 EOF
 
@@ -859,33 +885,28 @@ cat > /app/data/caddy/Caddyfile <<EOT
         output file /app/data/logs/caddy.log
     }
 
-    # MIME types settings
-    mime {
-        # JavaScript files
-        ext js application/javascript
-        # Next.js chunks
-        path /_next/static/chunks/* application/javascript
-        # CSS files
-        ext css text/css
-        # JSON files
-        ext json application/json
-        # SVG files
-        ext svg image/svg+xml
-        # WOFF2 font files
-        ext woff2 font/woff2
-    }
-
     # Root path serves the photos app
     handle / {
         root * /app/web/photos
         try_files {path} /index.html
-        file_server
+        file_server {
+            # Set headers for common static file types
+            header /*.js Content-Type application/javascript
+            header /*.css Content-Type text/css
+            header /*.json Content-Type application/json
+            header /*.svg Content-Type image/svg+xml
+            header /*.woff2 Content-Type font/woff2
+        }
     }
 
     # Next.js static files
     handle /_next/* {
         root * /app/web/photos
-        file_server
+        file_server {
+            # Set specific headers for Next.js chunks
+            header /static/chunks/*.js Content-Type application/javascript
+            header /static/css/*.css Content-Type text/css
+        }
     }
 
     # Accounts app
@@ -893,7 +914,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
         root * /app/web/accounts
         uri strip_prefix /accounts
         try_files {path} /index.html
-        file_server
+        file_server {
+            # Set headers for common static file types
+            header /*.js Content-Type application/javascript
+            header /*.css Content-Type text/css
+        }
     }
 
     # Auth app
@@ -901,7 +926,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
         root * /app/web/auth
         uri strip_prefix /auth
         try_files {path} /index.html
-        file_server
+        file_server {
+            # Set headers for common static file types
+            header /*.js Content-Type application/javascript
+            header /*.css Content-Type text/css
+        }
     }
 
     # Cast app
@@ -909,7 +938,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
         root * /app/web/cast
         uri strip_prefix /cast
         try_files {path} /index.html
-        file_server
+        file_server {
+            # Set headers for common static file types
+            header /*.js Content-Type application/javascript
+            header /*.css Content-Type text/css
+        }
     }
 
     # Main API proxy