200 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# ============================================================================
 | 
						|
# ForensicPathways Environment Configuration
 | 
						|
# ============================================================================
 | 
						|
# Copy this file to .env and configure the REQUIRED values below.
 | 
						|
# Optional features can be enabled by uncommenting and configuring them.
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# 🔥 CRITICAL - REQUIRED FOR BASIC OPERATION
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# Your application's public URL (used for redirects and links)
 | 
						|
PUBLIC_BASE_URL=http://localhost:4321
 | 
						|
 | 
						|
# Secret key for session encryption (GENERATE A SECURE RANDOM STRING!)
 | 
						|
AUTH_SECRET=your-secret-key-change-in-production-please
 | 
						|
 | 
						|
# Primary AI service for query processing (REQUIRED for core functionality)
 | 
						|
AI_ANALYZER_ENDPOINT=https://api.mistral.ai/v1/chat/completions
 | 
						|
AI_ANALYZER_API_KEY=your-ai-api-key-here
 | 
						|
AI_ANALYZER_MODEL=mistral/mistral-small-latest
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# ⚙️ IMPORTANT - CORE FEATURES CONFIGURATION  
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# Application environment
 | 
						|
NODE_ENV=development
 | 
						|
 | 
						|
# === AUTHENTICATION & SECURITY ===
 | 
						|
# Set to true to require authentication (RECOMMENDED for production)
 | 
						|
AUTHENTICATION_NECESSARY_CONTRIBUTIONS=false
 | 
						|
AUTHENTICATION_NECESSARY_AI=false
 | 
						|
AUTHENTICATION_NECESSARY_GATEDCONTENT=true
 | 
						|
 | 
						|
# OIDC Provider Configuration - Server appends endpoint (e.g. auth/callback) automatically
 | 
						|
OIDC_ENDPOINT=https://cloud.cc24.dev/index.php
 | 
						|
OIDC_CLIENT_ID=your-client-id
 | 
						|
OIDC_CLIENT_SECRET=your-client-secret
 | 
						|
 | 
						|
# === FILE HANDLING ===
 | 
						|
# Nextcloud server for file uploads (knowledgebase contributions)
 | 
						|
NEXTCLOUD_ENDPOINT=https://your-nextcloud.com
 | 
						|
NEXTCLOUD_USERNAME=your-username
 | 
						|
NEXTCLOUD_PASSWORD=your-app-password
 | 
						|
NEXTCLOUD_UPLOAD_PATH=/kb-media
 | 
						|
NEXTCLOUD_PUBLIC_URL=https://your-nextcloud.com/s/
 | 
						|
 | 
						|
# === COLLABORATION & CONTRIBUTIONS ===
 | 
						|
# Git provider: gitea, github, or gitlab
 | 
						|
GIT_PROVIDER=gitea
 | 
						|
GIT_REPO_URL=https://git.example.com/owner/forensic-pathways.git
 | 
						|
GIT_API_ENDPOINT=https://git.example.com/api/v1
 | 
						|
GIT_API_TOKEN=your-git-api-token
 | 
						|
 | 
						|
# === AUDIT TRAIL (Important for forensic work) ===
 | 
						|
FORENSIC_AUDIT_ENABLED=true
 | 
						|
FORENSIC_AUDIT_DETAIL_LEVEL=standard
 | 
						|
FORENSIC_AUDIT_RETENTION_HOURS=24
 | 
						|
FORENSIC_AUDIT_MAX_ENTRIES=50
 | 
						|
 | 
						|
# === AI SEMANTIC SEARCH ===
 | 
						|
# semantic search
 | 
						|
AI_EMBEDDINGS_ENDPOINT=https://api.mistral.ai/v1/embeddings
 | 
						|
AI_EMBEDDINGS_API_KEY=your-embeddings-api-key-here
 | 
						|
AI_EMBEDDINGS_MODEL=mistral-embed
 | 
						|
 | 
						|
# User rate limiting (queries per minute)
 | 
						|
AI_RATE_LIMIT_MAX_REQUESTS=4
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# CACHING BEHAVIOR
 | 
						|
# ============================================================================
 | 
						|
# - Videos downloaded once, cached permanently
 | 
						|
# - No time-based expiration
 | 
						|
# - Dramatically improves loading times after first download
 | 
						|
# - Emergency cleanup only when approaching disk space limit
 | 
						|
# - Perfect for manually curated forensics training content
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# 🎛️ PERFORMANCE TUNING - SENSIBLE DEFAULTS PROVIDED
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# === AI Pipeline Configuration ===
 | 
						|
# These values are pre-tuned for optimal performance - adjust only if needed
 | 
						|
 | 
						|
# Vector similarity search settings
 | 
						|
AI_EMBEDDING_CANDIDATES=50
 | 
						|
AI_SIMILARITY_THRESHOLD=0.3
 | 
						|
AI_EMBEDDING_SELECTION_LIMIT=30
 | 
						|
AI_EMBEDDING_CONCEPTS_LIMIT=15
 | 
						|
 | 
						|
# === METHOD/TOOL BALANCE CONFIGURATION ===
 | 
						|
# Controls the ratio of methods vs software tools sent to AI
 | 
						|
# Methods = procedural guidance, best practices, workflows
 | 
						|
# Software = actual tools and applications
 | 
						|
# Values should sum to less than 1.0 (remainder is buffer)
 | 
						|
AI_METHOD_SELECTION_RATIO=0.4    # 40% methods (increase for more procedural guidance)
 | 
						|
AI_SOFTWARE_SELECTION_RATIO=0.5  # 50% software tools (increase for more tool recommendations)
 | 
						|
 | 
						|
# AI selection limits
 | 
						|
AI_MAX_SELECTED_ITEMS=25
 | 
						|
 | 
						|
# Efficiency thresholds
 | 
						|
AI_EMBEDDINGS_MIN_TOOLS=8
 | 
						|
AI_EMBEDDINGS_MAX_REDUCTION_RATIO=0.75
 | 
						|
 | 
						|
# === Rate Limiting & Timing ===
 | 
						|
AI_MICRO_TASK_TOTAL_LIMIT=30
 | 
						|
AI_MICRO_TASK_DELAY_MS=500
 | 
						|
AI_RATE_LIMIT_DELAY_MS=2000
 | 
						|
 | 
						|
# === Embeddings Batch Processing ===
 | 
						|
AI_EMBEDDINGS_BATCH_SIZE=10
 | 
						|
AI_EMBEDDINGS_BATCH_DELAY_MS=1000
 | 
						|
 | 
						|
# === Confidence Scoring ===
 | 
						|
CONFIDENCE_SEMANTIC_WEIGHT=0.5
 | 
						|
CONFIDENCE_SUITABILITY_WEIGHT=0.5
 | 
						|
CONFIDENCE_MINIMUM_THRESHOLD=50
 | 
						|
CONFIDENCE_MEDIUM_THRESHOLD=70
 | 
						|
CONFIDENCE_HIGH_THRESHOLD=80
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# 📋 QUICK SETUP CHECKLIST
 | 
						|
# ============================================================================
 | 
						|
# 
 | 
						|
# MINIMUM FOR DEVELOPMENT/TESTING:
 | 
						|
# 1. ✅ Set PUBLIC_BASE_URL to your domain/localhost
 | 
						|
# 2. ✅ Generate secure AUTH_SECRET (use: openssl rand -base64 32)
 | 
						|
# 3. ✅ Configure AI_ANALYZER_ENDPOINT and API_KEY for your AI service
 | 
						|
# 4. ✅ Test basic functionality
 | 
						|
# 
 | 
						|
# PRODUCTION-READY DEPLOYMENT:
 | 
						|
# 5. ✅ Enable authentication (configure AUTHENTICATION_* and OIDC_*)
 | 
						|
# 6. ✅ Configure file handling (set NEXTCLOUD_* for uploads)
 | 
						|
# 7. ✅ Enable collaboration (set GIT_* for contributions)
 | 
						|
# 8. ✅ Enable audit trail (verify FORENSIC_AUDIT_ENABLED=true)
 | 
						|
# 9. ✅ Configure embeddings for better search (AI_EMBEDDINGS_*)
 | 
						|
# 10. ✅ Adjust rate limits based on expected usage
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# 🏃♂️ PERFORMANCE PRESETS - UNCOMMENT ONE IF NEEDED
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# 🚀 SPEED OPTIMIZED (faster responses, less comprehensive):
 | 
						|
# AI_EMBEDDING_CANDIDATES=25
 | 
						|
# AI_MAX_SELECTED_ITEMS=15
 | 
						|
# AI_MAX_TOOLS_TO_ANALYZE=10
 | 
						|
# AI_MICRO_TASK_DELAY_MS=250
 | 
						|
 | 
						|
# 🎯 ACCURACY OPTIMIZED (slower responses, more comprehensive):
 | 
						|
# AI_EMBEDDING_CANDIDATES=100
 | 
						|
# AI_MAX_SELECTED_ITEMS=50
 | 
						|
# AI_MAX_TOOLS_TO_ANALYZE=40
 | 
						|
# AI_MICRO_TASK_DELAY_MS=1000
 | 
						|
 | 
						|
# 🔋 RESOURCE CONSTRAINED (for limited AI quotas):
 | 
						|
# AI_RATE_LIMIT_MAX_REQUESTS=2
 | 
						|
# AI_MICRO_TASK_TOTAL_LIMIT=15
 | 
						|
# AI_MAX_TOOLS_TO_ANALYZE=10
 | 
						|
# AI_EMBEDDINGS_ENABLED=false
 | 
						|
 | 
						|
# 🔬 METHOD-FOCUSED (more procedural guidance, less tools):
 | 
						|
# AI_METHOD_SELECTION_RATIO=0.6
 | 
						|
# AI_SOFTWARE_SELECTION_RATIO=0.3
 | 
						|
 | 
						|
# 🛠️ TOOL-FOCUSED (more software recommendations, less methods):
 | 
						|
# AI_METHOD_SELECTION_RATIO=0.2
 | 
						|
# AI_SOFTWARE_SELECTION_RATIO=0.7
 | 
						|
 | 
						|
# ============================================================================
 | 
						|
# 🌐 AI SERVICE EXAMPLES
 | 
						|
# ============================================================================
 | 
						|
 | 
						|
# === OLLAMA (Local) ===
 | 
						|
# AI_ANALYZER_ENDPOINT=http://localhost:11434/v1/chat/completions
 | 
						|
# AI_ANALYZER_API_KEY=
 | 
						|
# AI_ANALYZER_MODEL=llama3.1:8b
 | 
						|
# AI_EMBEDDINGS_ENDPOINT=http://localhost:11434/v1/embeddings
 | 
						|
# AI_EMBEDDINGS_API_KEY=
 | 
						|
# AI_EMBEDDINGS_MODEL=nomic-embed-text
 | 
						|
 | 
						|
# === OPENAI ===
 | 
						|
# AI_ANALYZER_ENDPOINT=https://api.openai.com/v1/chat/completions
 | 
						|
# AI_ANALYZER_API_KEY=sk-your-openai-key
 | 
						|
# AI_ANALYZER_MODEL=gpt-4o-mini
 | 
						|
# AI_EMBEDDINGS_ENDPOINT=https://api.openai.com/v1/embeddings
 | 
						|
# AI_EMBEDDINGS_API_KEY=sk-your-openai-key
 | 
						|
# AI_EMBEDDINGS_MODEL=text-embedding-3-small
 | 
						|
 | 
						|
# === MISTRAL (Default) ===
 | 
						|
# AI_ANALYZER_ENDPOINT=https://api.mistral.ai/v1/chat/completions
 | 
						|
# AI_ANALYZER_API_KEY=your-mistral-key
 | 
						|
# AI_ANALYZER_MODEL=mistral-small-latest
 | 
						|
# AI_EMBEDDINGS_ENDPOINT=https://api.mistral.ai/v1/embeddings
 | 
						|
# AI_EMBEDDINGS_API_KEY=your-mistral-key
 | 
						|
# AI_EMBEDDINGS_MODEL=mistral-embed |