fix: remove hardcoded localhost fallbacks, require explicit config
Critical fix for Docker deployment where AI features were trying to connect to localhost:11434 instead of using configured provider (Ollama Docker service or OpenAI). Problems fixed: 1. Reformulation (clarify/shorten/improve) failing with ECONNREFUSED 127.0.0.1:11434 2. Auto-labels failing with same error 3. Notebook summaries failing 4. Could not switch from Ollama to OpenAI in admin Root cause: - Code had hardcoded fallback to 'http://localhost:11434' in multiple places - .env.docker file not created on server (gitignore'd) - No validation that required environment variables were set Changes: 1. lib/ai/factory.ts: - Remove hardcoded 'http://localhost:11434' fallback - Only use localhost for local development (NODE_ENV !== 'production') - Throw error if OLLAMA_BASE_URL not set in production 2. lib/ai/providers/ollama.ts: - Remove default parameter 'http://localhost:11434' from constructor - Require baseUrl to be explicitly passed - Throw error if baseUrl is missing 3. lib/ai/services/paragraph-refactor.service.ts: - Remove 'http://localhost:11434' fallback (2 locations) - Require OLLAMA_BASE_URL to be set - Throw clear error if not configured 4. app/(main)/admin/settings/admin-settings-form.tsx: - Add debug info showing current provider state - Display database config value for transparency - Help troubleshoot provider selection issues 5. DOCKER-SETUP.md: - Complete guide for Docker configuration - Instructions for .env.docker setup - Examples for Ollama Docker, OpenAI, and external Ollama - Troubleshooting common issues Usage: On server, create .env.docker with proper provider configuration: - Ollama in Docker: OLLAMA_BASE_URL="http://ollama:11434" - OpenAI: OPENAI_API_KEY="sk-..." - External Ollama: OLLAMA_BASE_URL="http://SERVER_IP:11434" Then in admin interface, users can independently configure: - Tags Provider (for auto-labels, AI features) - Embeddings Provider (for semantic search) Result: ✓ Clear errors if Ollama not configured ✓ Can switch to OpenAI freely in admin ✓ No more hardcoded localhost in production ✓ Proper separation between local dev and Docker production Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -84,7 +84,12 @@ export class ParagraphRefactorService {
|
||||
const userPrompt = this.getUserPrompt(mode, content, language)
|
||||
|
||||
// Get AI provider response using fetch
|
||||
let baseUrl = process.env.OLLAMA_BASE_URL || 'http://localhost:11434'
|
||||
let baseUrl = process.env.OLLAMA_BASE_URL
|
||||
|
||||
if (!baseUrl) {
|
||||
throw new Error('OLLAMA_BASE_URL environment variable is required')
|
||||
}
|
||||
|
||||
// Remove /api suffix if present to avoid double /api/api/...
|
||||
if (baseUrl.endsWith('/api')) {
|
||||
baseUrl = baseUrl.slice(0, -4)
|
||||
@@ -185,7 +190,12 @@ Original language: ${language}
|
||||
IMPORTANT: Provide all 3 versions in ${language}. No English, no explanations.`
|
||||
|
||||
// Get AI provider response using fetch
|
||||
let baseUrl = process.env.OLLAMA_BASE_URL || 'http://localhost:11434'
|
||||
let baseUrl = process.env.OLLAMA_BASE_URL
|
||||
|
||||
if (!baseUrl) {
|
||||
throw new Error('OLLAMA_BASE_URL environment variable is required')
|
||||
}
|
||||
|
||||
// Remove /api suffix if present to avoid double /api/api/...
|
||||
if (baseUrl.endsWith('/api')) {
|
||||
baseUrl = baseUrl.slice(0, -4)
|
||||
|
||||
Reference in New Issue
Block a user