# Server (internal bind inside containers) HOST=0.0.0.0 BACKEND_INTERNAL_PORT=8080 FRONTEND_INTERNAL_PORT=80 # External ports on the host (docker compose publish) BACKEND_PORT=8080 FRONTEND_PORT=3080 VITE_DEV_PORT=5173 # OpenRouter OPENROUTER_API_KEY=sk-or-v1-your-key-here OPENROUTER_MODEL=deepseek/deepseek-chat # deepseek/deepseek-v4-pro — сильная модель, tools поддерживаются: # OPENROUTER_MODEL=deepseek/deepseek-v4-pro OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_TOOLS_ENABLED=true # none = без thinking (быстрее, стабильнее с tools). low|medium|high|xhigh — reasoning. OPENROUTER_REASONING_EFFORT=none # JSON-экстракция памяти отдельной моделью (если основная капризничает): # MEMORY_EXTRACT_MODEL=deepseek/deepseek-chat # App DATABASE_URL=sqlite:///./data/assistant.db CORS_ORIGINS=http://localhost:5173,http://localhost:8080,http://localhost:3080 SYSTEM_PROMPT_PATH=./prompts/assistant.md MEMORY_AUTO_EXTRACT=true # Fitness (wger + Open Food Facts — public HTTPS, no proxy) WGER_BASE_URL=https://wger.de/api/v2 OPENFOODFACTS_BASE_URL=https://world.openfoodfacts.org FITNESS_REMINDERS_ENABLED=true REMINDERS_ENABLED=true # Taiga (on host :9000, nginx → taiga.grigowashere.ru) TAIGA_BASE_URL=http://host.docker.internal:9000 TAIGA_USERNAME=your_taiga_user TAIGA_PASSWORD=your_taiga_password TAIGA_PUBLIC_URL=https://taiga.grigowashere.ru # Gitea (on host :3000, nginx → git.grigowashere.ru) GITEA_BASE_URL=http://host.docker.internal:3000 GITEA_TOKEN=your_gitea_api_token GITEA_PUBLIC_URL=https://git.grigowashere.ru GITEA_WEBHOOK_SECRET=generate_a_random_secret # Gitea webhook URL (repo Settings → Webhooks): # https://assistant.your-domain/api/v1/webhooks/gitea ← nginx → 127.0.0.1:BACKEND_PORT # http://172.17.0.1:8202/api/v1/webhooks/gitea ← если Gitea в Docker (не 127.0.0.1!) REPOS_DIR=/data/repos # Homelab — GPU PC 192.168.1.109 OPENMETEO_BASE_URL=http://192.168.1.109:8085 WEATHER_LAT=59.9343 WEATHER_LON=30.3351 WEATHER_LOCATION_NAME=Санкт-Петербург WEATHER_CACHE_SEC=300 # News RSS (comma-separated) NEWS_RSS_URLS=https://habr.com/ru/rss/all/all/,https://www.reddit.com/r/programming/.rss NEWS_CACHE_SEC=1800 NEWS_MAX_ITEMS=7 # Morning digest (Europe/Moscow or user profile timezone) MORNING_DIGEST_ENABLED=true MORNING_DIGEST_HOUR=8 MORNING_DIGEST_MINUTE=0 # ComfyUI on GPU PC (Anima split-model — как в aiChatBot) COMFYUI_BASE_URL=http://192.168.1.109:8188 COMFYUI_ENABLED=true # Anima: UNET+CLIP+VAE, CHECKPOINT пустой. Для SD1.5/Pony — задай CHECKPOINT, очисти UNET. COMFYUI_CHECKPOINT= COMFYUI_UNET=anima-preview3-base.safetensors COMFYUI_CLIP=qwen_3_06b_base.safetensors COMFYUI_VAE=qwen_image_vae.safetensors COMFYUI_STYLE_LORA=anima-preview-3-masterpieces-v5.safetensors COMFYUI_STYLE_LORA_WEIGHT=0.7 COMFYUI_STEPS=30 COMFYUI_CFG=4 COMFYUI_SAMPLER=er_sde COMFYUI_SCHEDULER=simple COMFYUI_WIDTH=1024 COMFYUI_HEIGHT=720 COMFYUI_NEGATIVE_PROMPT=worst quality, low quality, score_1, score_2, score_3, blurry, jpeg artifacts, sepia COMFYUI_ROFL_ENABLED=true COMFYUI_ROFL_MAX_PER_DAY=1 COMFYUI_ROFL_PROBABILITY=0.15 COMFYUI_ROFL_MIN_INTERVAL_HOURS=12 GENERATED_MEDIA_DIR=./data/generated # RP Chat (aiChatBot) — генерация картинок + sd-prompt; persona_id в карточке персонажа RP_CHAT_BASE_URL=http://host.docker.internal:8201 RP_CHAT_ENABLED=true RP_CHAT_TIMEOUT_SEC=300 # Netdata on server NETDATA_BASE_URL=http://host.docker.internal:19999 NETDATA_PUBLIC_URL= NETDATA_ALERTS_ENABLED=true NETDATA_POLL_INTERVAL_SEC=120 # Vector DB (phase 3) QDRANT_PORT=6333 QDRANT_GRPC_PORT=6334