ASP.NET Core Razor Pages система техподдержки с ролями, чатами, RAG, Qdrant и PostgreSQL.
cp .env.example .env
docker compose up -d --buildАдрес:
http://localhost:5028
При первом запуске администратор создаётся только из переменных окружения:
BootstrapAdmin__Login=admin
BootstrapAdmin__Email=admin@example.com
BootstrapAdmin__Password=уникальный_временный_пароль
После первого входа администратор обязан сменить временный пароль. Если администратор уже существует, bootstrap-переменные не меняют его пароль.
app— ASP.NET Core приложение.postgres— основная PostgreSQL БД.qdrant— векторная БД.ollama— локальная LLM, запускается профилемollama.
Для запуска Ollama-контейнера:
docker compose --profile ollama up -d ollama
docker exec -it techsupportragbot-ollama-1 ollama pull llama3.1
docker exec -it techsupportragbot-ollama-1 ollama pull embeddinggemmaСекреты не хранятся в репозитории. Используйте .env локально или переменные окружения на VDS.
PostgreSQL:
ConnectionStrings__DefaultConnection=Host=postgres;Port=5432;Database=techsupport;Username=techsupport;Password=...
Database__Provider=Postgres
BootstrapAdmin__Login=admin
BootstrapAdmin__Email=admin@example.com
BootstrapAdmin__Password=...
LLM/RAG:
Rag__ChatProvider=Ollama|OpenAI|DeepSeek|AiTunnel
Rag__EmbeddingProvider=Ollama|OpenAI|Qwen|AiTunnel
Rag__OllamaBaseUrl=http://ollama:11434
Rag__QdrantBaseUrl=http://qdrant:6333
OpenAI:
OpenAI__ApiKey=...
OpenAI__ChatModel=gpt-4.1-mini
OpenAI__EmbeddingModel=text-embedding-3-small
DeepSeek:
DeepSeek__ApiKey=...
DeepSeek__ChatModel=deepseek-chat
DeepSeek используется для chat completions. Для embeddings используйте Ollama или OpenAI.
Qwen Model Studio используется для embeddings размерности 1024 через OpenAI-compatible API:
Qwen__BaseUrl=https://ws-am1n1jqyhug10mfy.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
Qwen__ApiKey=...
Qwen__EmbeddingModel=text-embedding-v4
Qwen__EmbeddingDimensions=1024После выбора Qwen коллекция Qdrant с другой размерностью автоматически пересоздаётся и переиндексируется.
AITunnel поддерживается одновременно для LLM и embeddings через OpenAI-compatible API:
AiTunnel__BaseUrl=https://api.aitunnel.ru/v1
AiTunnel__ApiKey=...
AiTunnel__ChatModel=auto
AiTunnel__EmbeddingModel=text-embedding-v4- Создайте приложение из GitHub-репозитория.
- Укажите Docker Compose deploy из
docker-compose.yml. - Создайте env-переменные по
.env.example. - Для production замените:
POSTGRES_PASSWORDConnectionStrings__DefaultConnection- SMTP-настройки
- API-ключи OpenAI/DeepSeek при необходимости.
- Пробросьте наружу порт приложения
5028или настройте reverse proxy на внутренний порт8080.
docker compose ps
curl http://localhost:5028
docker compose logs --tail=100 app