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 <simosmik@gmail.com>
This commit is contained in:
Andrew Garrett
2025-10-31 01:28:59 +11:00
committed by GitHub
parent de1f5d36f3
commit 7a087039c9
2 changed files with 26 additions and 2 deletions

View File

@@ -14,6 +14,15 @@ VITE_PORT=5173
# Uncomment the following line if you have a custom claude cli path other than the default "claude" # Uncomment the following line if you have a custom claude cli path other than the default "claude"
# CLAUDE_CLI_PATH=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) # Claude Code context window size (maximum tokens per session)
# Note: VITE_ prefix makes it available to frontend # Note: VITE_ prefix makes it available to frontend
VITE_CONTEXT_WINDOW=160000 VITE_CONTEXT_WINDOW=160000

View File

@@ -7,12 +7,27 @@ import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename); 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'); 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 // Create database connection
const db = new Database(DB_PATH); 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 // Initialize database with schema
const initializeDatabase = async () => { const initializeDatabase = async () => {