@@ -1,84 +0,0 @@
|
|||||||
# myai API - Environment Variables Template
|
|
||||||
# Copy this file to .env and fill in your values
|
|
||||||
# DO NOT commit .env to source control!
|
|
||||||
|
|
||||||
# ASP.NET Core Environment (Development, Staging, Production)
|
|
||||||
ASPNETCORE_ENVIRONMENT=Development
|
|
||||||
ASPNETCORE_URLS=http://+:8080
|
|
||||||
|
|
||||||
# Application Environment Name (shown in email subjects to identify which environment sent the email)
|
|
||||||
APP_ENVIRONMENT_NAME=myai.ro-Development
|
|
||||||
|
|
||||||
# Azure Key Vault (Optional - for production)
|
|
||||||
KeyVault__Enabled=false
|
|
||||||
KeyVault__VaultUri=https://your-keyvault-name.vault.azure.net/
|
|
||||||
|
|
||||||
# Note: If Key Vault is enabled, you can store secrets there instead of below
|
|
||||||
# The following settings can be overridden by Key Vault secrets
|
|
||||||
|
|
||||||
# SMTP Configuration
|
|
||||||
Smtp__Host=mail.example.com
|
|
||||||
Smtp__Port=587
|
|
||||||
Smtp__Username=no-reply@example.com
|
|
||||||
Smtp__Password=your-secure-password-here
|
|
||||||
Smtp__UseStartTls=true
|
|
||||||
|
|
||||||
# Google reCAPTCHA
|
|
||||||
Captcha__Provider=Recaptcha
|
|
||||||
Captcha__SecretKey=your-recaptcha-secret-key
|
|
||||||
Captcha__PublicKey=your-recaptcha-public-key
|
|
||||||
Captcha__MinimumScore=0.5
|
|
||||||
Captcha__ExpectedAction=
|
|
||||||
Captcha__ExpectedHostname=
|
|
||||||
|
|
||||||
# Google Services (optional - public keys safe to expose)
|
|
||||||
Google__TagManagerId=GTM-XXXXXXX
|
|
||||||
Google__MapKey=
|
|
||||||
|
|
||||||
# File Storage (relative to solution folder - defaults to "Files" if not set)
|
|
||||||
FileStorage__Path=Files
|
|
||||||
FileStorage__DefaultFileName=
|
|
||||||
FileStorage__ToEmail=admin@yourdomain.com
|
|
||||||
FileStorage__FromEmail=no-reply@yourdomain.com
|
|
||||||
FileStorage__SubjectPrefix=[File Download]
|
|
||||||
|
|
||||||
# Contact Settings
|
|
||||||
Contact__ToEmail=contact@yourdomain.com
|
|
||||||
Contact__FromEmail=no-reply@yourdomain.com
|
|
||||||
Contact__SubjectPrefix=[Contact]
|
|
||||||
|
|
||||||
# Subscribe Settings
|
|
||||||
Subscribe__ToEmail=contact@yourdomain.com
|
|
||||||
Subscribe__SubjectPrefix=[Subscribe]
|
|
||||||
|
|
||||||
# CORS - Allowed Origins (comma separated or multiple variables)
|
|
||||||
Cors__AllowedOrigins__0=https://yourdomain.com
|
|
||||||
Cors__AllowedOrigins__1=https://www.yourdomain.com
|
|
||||||
|
|
||||||
# Logging Configuration
|
|
||||||
Logging__LogLevel__Default=Information
|
|
||||||
Logging__LogLevel__Microsoft=Warning
|
|
||||||
Logging__LogLevel__Microsoft.AspNetCore=Warning
|
|
||||||
Logging__LogLevel__Api=Information
|
|
||||||
|
|
||||||
# Serilog Email Alerts (for Error notifications)
|
|
||||||
Serilog__WriteTo__2__Args__fromEmail=no-reply@yourdomain.com
|
|
||||||
Serilog__WriteTo__2__Args__toEmail=webmaster@yourdomain.com
|
|
||||||
Serilog__WriteTo__2__Args__mailServer=mail.example.com
|
|
||||||
Serilog__WriteTo__2__Args__networkCredential__userName=no-reply@yourdomain.com
|
|
||||||
Serilog__WriteTo__2__Args__networkCredential__password=your-password
|
|
||||||
Serilog__WriteTo__2__Args__port=587
|
|
||||||
Serilog__WriteTo__2__Args__enableSsl=true
|
|
||||||
|
|
||||||
|
|
||||||
# OpenAI / RAG CV Matcher
|
|
||||||
OpenAI__ApiKey=sk-your-openai-api-key
|
|
||||||
OpenAI__ChatModel=gpt-4o-mini
|
|
||||||
OpenAI__EmbeddingModel=text-embedding-3-small
|
|
||||||
OpenAI__TimeoutSeconds=60
|
|
||||||
Rag__MaxPdfSizeMb=5
|
|
||||||
Rag__ChunkSize=900
|
|
||||||
Rag__ChunkOverlap=150
|
|
||||||
Rag__CvTtlMinutes=60
|
|
||||||
Rag__MaxJobTextChars=20000
|
|
||||||
Rag__TopK=6
|
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
<ProjectVersion>2.1</ProjectVersion>
|
<ProjectVersion>2.1</ProjectVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<None Include=".env" />
|
||||||
<None Include=".env.production" />
|
<None Include=".env.production" />
|
||||||
<None Include=".env.staging" />
|
<None Include=".env.staging" />
|
||||||
<None Include=".env.template" />
|
<None Include=".env.template" />
|
||||||
|
|||||||
@@ -41,12 +41,27 @@ services:
|
|||||||
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel}
|
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel}
|
||||||
- Ai__OpenAI__EmbeddingModel=${Ai__OpenAI__EmbeddingModel}
|
- Ai__OpenAI__EmbeddingModel=${Ai__OpenAI__EmbeddingModel}
|
||||||
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds}
|
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds}
|
||||||
- Rag__MaxPdfSizeMb=5
|
# Database (shared)
|
||||||
- Rag__ChunkSize=900
|
- Database__Host=${Database__Host}
|
||||||
- Rag__ChunkOverlap=150
|
- Database__Port=${Database__Port}
|
||||||
- Rag__CvTtlMinutes=60
|
- Database__Name=${Database__Name}
|
||||||
- Rag__MaxJobTextChars=20000
|
- Database__User=${Database__User}
|
||||||
- Rag__TopK=6
|
- Database__Password=${Database__Password}
|
||||||
|
- Database__TrustServerCertificate=${Database__TrustServerCertificate}
|
||||||
|
# Internal API protection
|
||||||
|
- InternalApi__ApiKey=${InternalApi__ApiKey}
|
||||||
|
- InternalApi__RequireApiKey=${InternalApi__RequireApiKey}
|
||||||
|
# CvMatcher API settings used by this service
|
||||||
|
- CvMatcherApi__BaseUrl=${CvMatcherApi__BaseUrl}
|
||||||
|
- CvMatcherApi__InternalApiKey=${CvMatcherApi__InternalApiKey}
|
||||||
|
# RAG settings
|
||||||
|
- Rag__MaxFileSizeMb=${Rag__MaxFileSizeMb}
|
||||||
|
- Rag__ChunkSize=${Rag__ChunkSize}
|
||||||
|
- Rag__ChunkOverlap=${Rag__ChunkOverlap}
|
||||||
|
- Rag__MaxTextChars=${Rag__MaxTextChars}
|
||||||
|
- Rag__DefaultTopK=${Rag__DefaultTopK}
|
||||||
|
- Rag__MaxTopK=${Rag__MaxTopK}
|
||||||
|
- Rag__ClassifyWithAi=${Rag__ClassifyWithAi}
|
||||||
volumes:
|
volumes:
|
||||||
- myai_api_logs:/app/logs
|
- myai_api_logs:/app/logs
|
||||||
- /opt/easysoft/files:/app/Files
|
- /opt/easysoft/files:/app/Files
|
||||||
|
|||||||
@@ -13,12 +13,18 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
|
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
|
||||||
- ASPNETCORE_URLS=http://+:8080
|
- ASPNETCORE_URLS=http://+:8080
|
||||||
- ConnectionStrings__RagDb=Server=mssql,1433;Database=MyAi;User Id=sa;Password=bpdTUyb3;TrustServerCertificate=True
|
- # Database settings (read by the apps as Database:Host/Port/Name/User/Password)
|
||||||
|
- Database__Host=${Database__Host:-mssql}
|
||||||
|
- Database__Port=${Database__Port:-1433}
|
||||||
|
- Database__Name=${Database__Name:-MyAiCvMatcher}
|
||||||
|
- Database__User=${Database__User:-sa}
|
||||||
|
- Database__Password=${Database__Password:-Your_strong_password123}
|
||||||
|
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
|
||||||
- InternalApi__RequireApiKey=true
|
- InternalApi__RequireApiKey=true
|
||||||
- InternalApi__ApiKey=${INTERNAL_API_KEY:-change-this-internal-key}
|
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
|
||||||
- Ai__Provider=${AI_PROVIDER:-OpenAI}
|
- Ai__Provider=${Ai__Provider:-OpenAI}
|
||||||
- Ai__OpenAI__ApiKey=${OPENAI_API_KEY:-}
|
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
|
||||||
- Ai__Ollama__BaseUrl=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
|
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
|
||||||
networks:
|
networks:
|
||||||
- myai-network
|
- myai-network
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -37,14 +43,20 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
|
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
|
||||||
- ASPNETCORE_URLS=http://+:8080
|
- ASPNETCORE_URLS=http://+:8080
|
||||||
- ConnectionStrings__CvMatcherDb=Server=mssql,1433;Database=MyAiCvMatcher;User Id=sa;Password=${MSSQL_SA_PASSWORD:-Your_strong_password123};TrustServerCertificate=True
|
- # Database settings (cv-matcher uses same keys)
|
||||||
|
- Database__Host=${Database__Host:-mssql}
|
||||||
|
- Database__Port=${Database__Port:-1433}
|
||||||
|
- Database__Name=${Database__Name:-MyAiCvMatcher}
|
||||||
|
- Database__User=${Database__User:-sa}
|
||||||
|
- Database__Password=${Database__Password:-Your_strong_password123}
|
||||||
|
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
|
||||||
- InternalApi__RequireApiKey=true
|
- InternalApi__RequireApiKey=true
|
||||||
- InternalApi__ApiKey=${INTERNAL_API_KEY:-change-this-internal-key}
|
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
|
||||||
- RagApi__BaseUrl=http://rag-api:8080
|
- RagApi__BaseUrl=http://rag-api:8080
|
||||||
- RagApi__InternalApiKey=${INTERNAL_API_KEY:-change-this-internal-key}
|
- RagApi__InternalApiKey=${InternalApi__ApiKey:-change-this-internal-key}
|
||||||
- Ai__Provider=${AI_PROVIDER:-OpenAI}
|
- Ai__Provider=${Ai__Provider:-OpenAI}
|
||||||
- Ai__OpenAI__ApiKey=${OPENAI_API_KEY:-}
|
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
|
||||||
- Ai__Ollama__BaseUrl=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
|
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
|
||||||
networks:
|
networks:
|
||||||
- myai-network
|
- myai-network
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -67,7 +79,7 @@ services:
|
|||||||
- Cors__AllowedOrigins__0=http://localhost:5000
|
- Cors__AllowedOrigins__0=http://localhost:5000
|
||||||
- Cors__AllowedOrigins__1=http://web:8080
|
- Cors__AllowedOrigins__1=http://web:8080
|
||||||
- CvMatcherApi__BaseUrl=http://cv-matcher-api:8080
|
- CvMatcherApi__BaseUrl=http://cv-matcher-api:8080
|
||||||
- CvMatcherApi__InternalApiKey=${INTERNAL_API_KEY:-change-this-internal-key}
|
- CvMatcherApi__InternalApiKey=${CvMatcherApi__InternalApiKey:-change-this-internal-key}
|
||||||
volumes:
|
volumes:
|
||||||
- ../api/logs:/app/logs
|
- ../api/logs:/app/logs
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
Reference in New Issue
Block a user