From 7a087039c93ca14128da3ce97f13b2cf6baa8665 Mon Sep 17 00:00:00 2001 From: Andrew Garrett Date: Fri, 31 Oct 2025 01:28:59 +1100 Subject: [PATCH] Make authentication database path configurable via DATABASE_PATH environment variable (#205) * Make database path configurable via DATABASE_PATH environment variable - Add DATABASE_PATH environment variable support in db.js - Automatically create database directory if custom path is provided - Update .env.example with DATABASE_PATH documentation for container deployments - Maintain backward compatibility with default path (server/database/auth.db) Co-authored-by: werdnum <271070+werdnum@users.noreply.github.com> * Add error handling for creating DATABASE_PATH. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: werdnum <271070+werdnum@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: viper151 --- .env.example | 9 +++++++++ server/database/db.js | 19 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 6b34f69..a7e9528 100755 --- a/.env.example +++ b/.env.example @@ -14,6 +14,15 @@ VITE_PORT=5173 # Uncomment the following line if you have a custom claude cli path other than the default "claude" # CLAUDE_CLI_PATH=claude +# ============================================================================= +# DATABASE CONFIGURATION +# ============================================================================= + +# Path to the authentication database file +# This should be set to a persistent volume path when running in containers +# Default: server/database/auth.db (relative to project root) +# Example for Docker: /data/auth.db +# DATABASE_PATH=/data/auth.db # Claude Code context window size (maximum tokens per session) # Note: VITE_ prefix makes it available to frontend VITE_CONTEXT_WINDOW=160000 diff --git a/server/database/db.js b/server/database/db.js index 6fc1347..96224ae 100644 --- a/server/database/db.js +++ b/server/database/db.js @@ -7,12 +7,27 @@ import { dirname } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -const DB_PATH = path.join(__dirname, 'auth.db'); +// Use DATABASE_PATH environment variable if set, otherwise use default location +const DB_PATH = process.env.DATABASE_PATH || path.join(__dirname, 'auth.db'); const INIT_SQL_PATH = path.join(__dirname, 'init.sql'); +// Ensure database directory exists if custom path is provided +if (process.env.DATABASE_PATH) { + const dbDir = path.dirname(DB_PATH); + try { + if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }); + console.log(`Created database directory: ${dbDir}`); + } + } catch (error) { + console.error(`Failed to create database directory ${dbDir}:`, error.message); + throw error; + } +} + // Create database connection const db = new Database(DB_PATH); -console.log('Connected to SQLite database'); +console.log(`Connected to SQLite database at: ${DB_PATH}`); // Initialize database with schema const initializeDatabase = async () => {