add docs
All checks were successful
SonarQube / Build and analyze (push) Successful in 3m22s

This commit is contained in:
Leonid Pershin
2025-10-21 05:08:40 +03:00
parent bc1b3c4015
commit e5e69470f8
12 changed files with 3550 additions and 6 deletions

485
docs/installation.md Normal file
View File

@@ -0,0 +1,485 @@
# 🛠️ Установка и настройка
Подробное руководство по установке ChatBot со всеми опциями.
## 📋 Системные требования
### Минимальные требования
- **OS**: Windows 10/11, Linux (Ubuntu 20.04+), macOS 12+
- **RAM**: 4 GB (рекомендуется 8 GB+)
- **CPU**: 2 cores (рекомендуется 4+ cores)
- **Диск**: 10 GB свободного места
- **Сеть**: Стабильное интернет-соединение
### Программное обеспечение
- **.NET 9.0 SDK** - обязательно
- **PostgreSQL 14+** - обязательно
- **Ollama** - обязательно
- **Git** - для клонирования
- **Docker** (опционально) - для контейнеризации
## 📥 Установка зависимостей
### Windows
#### .NET 9.0 SDK
```powershell
# Скачайте с официального сайта
# https://dotnet.microsoft.com/download/dotnet/9.0
# Или через winget
winget install Microsoft.DotNet.SDK.9
# Проверка установки
dotnet --version
```
#### PostgreSQL
```powershell
# Скачайте с официального сайта
# https://www.postgresql.org/download/windows/
# Или через chocolatey
choco install postgresql
# Инициализация
# Следуйте инструкциям установщика
```
#### Ollama
```powershell
# Скачайте с официального сайта
# https://ollama.ai/download
# Установка модели
ollama pull gemma2:2b
# или другую модель
ollama pull llama3.2
```
### Linux (Ubuntu/Debian)
#### .NET 9.0 SDK
```bash
# Добавление репозитория Microsoft
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# Установка SDK
sudo apt-get update
sudo apt-get install -y dotnet-sdk-9.0
# Проверка
dotnet --version
```
#### PostgreSQL
```bash
# Установка
sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib
# Запуск
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Создание пользователя и БД
sudo -u postgres psql
CREATE USER chatbot WITH PASSWORD 'your_password';
CREATE DATABASE chatbot OWNER chatbot;
GRANT ALL PRIVILEGES ON DATABASE chatbot TO chatbot;
\q
```
#### Ollama
```bash
# Установка
curl -fsSL https://ollama.ai/install.sh | sh
# Запуск сервиса
sudo systemctl start ollama
sudo systemctl enable ollama
# Установка модели
ollama pull gemma2:2b
```
### macOS
#### .NET 9.0 SDK
```bash
# Через Homebrew
brew install --cask dotnet-sdk
# Проверка
dotnet --version
```
#### PostgreSQL
```bash
# Через Homebrew
brew install postgresql@14
# Запуск
brew services start postgresql@14
# Создание БД
createdb chatbot
```
#### Ollama
```bash
# Скачайте с официального сайта
# https://ollama.ai/download
# Или через Homebrew
brew install ollama
# Установка модели
ollama pull gemma2:2b
```
## 🔧 Настройка проекта
### 1. Клонирование репозитория
```bash
git clone https://github.com/mrleo1nid/ChatBot.git
cd ChatBot
```
### 2. Настройка базы данных
#### Создание базы данных
**PostgreSQL:**
```sql
-- Подключение к PostgreSQL
psql -U postgres
-- Создание пользователя
CREATE USER chatbot WITH PASSWORD 'secure_password';
-- Создание базы данных
CREATE DATABASE chatbot OWNER chatbot;
-- Выдача прав
GRANT ALL PRIVILEGES ON DATABASE chatbot TO chatbot;
-- Выход
\q
```
#### Проверка подключения
```bash
psql -U chatbot -d chatbot -h localhost
```
### 3. Конфигурация приложения
#### Создание .env файла
Создайте файл `ChatBot/.env`:
```env
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=chatbot
DB_USER=chatbot
DB_PASSWORD=your_secure_password
# Telegram Bot Configuration
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
# Ollama Configuration
OLLAMA_URL=http://localhost:11434
OLLAMA_DEFAULT_MODEL=gemma2:2b
```
#### Настройка appsettings.json
Файл `ChatBot/appsettings.json` уже содержит настройки по умолчанию. Переменные окружения имеют приоритет.
#### User Secrets (для разработки)
```bash
cd ChatBot
# Инициализация secrets
dotnet user-secrets init
# Добавление секретов
dotnet user-secrets set "TelegramBot:BotToken" "your_token_here"
dotnet user-secrets set "Database:ConnectionString" "Host=localhost;Database=chatbot;Username=chatbot;Password=your_password"
```
### 4. Настройка Telegram бота
#### Создание бота через BotFather
1. Откройте Telegram и найдите [@BotFather](https://t.me/botfather)
2. Отправьте `/newbot`
3. Следуйте инструкциям:
- Введите имя бота (например: "My AI ChatBot")
- Введите username (например: "my_ai_chatbot")
4. Скопируйте токен и добавьте в `.env`
#### Настройка команд бота (опционально)
```
/setcommands
start - Начать работу с ботом
help - Показать справку
clear - Очистить историю диалога
settings - Показать текущие настройки
status - Проверить статус бота
```
### 5. Установка AI модели
```bash
# Просмотр доступных моделей
ollama list
# Установка модели
ollama pull gemma2:2b
# Или другие модели:
ollama pull llama3.2
ollama pull mistral
ollama pull phi3
# Проверка
ollama list
```
### 6. Применение миграций
```bash
cd ChatBot
# Автоматически применяются при первом запуске
# Или вручную:
dotnet ef database update
# Проверка миграций
dotnet ef migrations list
```
### 7. Сборка проекта
```bash
# Восстановление зависимостей
dotnet restore
# Сборка
dotnet build
# Проверка на ошибки
dotnet build --configuration Release
```
## 🚀 Запуск приложения
### Режим разработки
```bash
cd ChatBot
dotnet run
```
### Режим production
```bash
# Сборка релиза
dotnet publish -c Release -o ./publish
# Запуск
cd publish
dotnet ChatBot.dll
```
### Запуск как служба (Windows)
```powershell
# Создание службы
sc.exe create ChatBot binPath="C:\path\to\publish\ChatBot.exe"
# Запуск
sc.exe start ChatBot
# Остановка
sc.exe stop ChatBot
# Удаление
sc.exe delete ChatBot
```
### Запуск как службы (Linux)
Создайте файл `/etc/systemd/system/chatbot.service`:
```ini
[Unit]
Description=ChatBot Telegram Bot
After=network.target postgresql.service
[Service]
Type=notify
WorkingDirectory=/opt/chatbot
ExecStart=/usr/bin/dotnet /opt/chatbot/ChatBot.dll
Restart=always
RestartSec=10
User=chatbot
Environment=DOTNET_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
```
Запуск:
```bash
sudo systemctl daemon-reload
sudo systemctl enable chatbot
sudo systemctl start chatbot
sudo systemctl status chatbot
```
## 🐳 Docker установка
### Создание Dockerfile
Файл уже включен в проект. Для сборки:
```bash
# Сборка образа
docker build -t chatbot:latest .
# Запуск контейнера
docker run -d \
--name chatbot \
--env-file .env \
-v $(pwd)/logs:/app/logs \
chatbot:latest
```
### Docker Compose
Создайте `docker-compose.yml`:
```yaml
version: '3.8'
services:
postgres:
image: postgres:14-alpine
environment:
POSTGRES_DB: chatbot
POSTGRES_USER: chatbot
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
chatbot:
build: .
depends_on:
- postgres
env_file:
- .env
volumes:
- ./logs:/app/logs
restart: unless-stopped
volumes:
postgres_data:
```
Запуск:
```bash
docker-compose up -d
```
## ✅ Проверка установки
### 1. Проверка компонентов
```bash
# .NET
dotnet --version
# PostgreSQL
psql --version
pg_isready
# Ollama
curl http://localhost:11434/api/tags
```
### 2. Проверка подключений
```bash
# PostgreSQL
psql -U chatbot -d chatbot -h localhost -c "SELECT version();"
# Ollama
ollama list
```
### 3. Проверка логов
```bash
# Логи приложения
tail -f ChatBot/logs/telegram-bot-*.log
# Docker логи
docker logs -f chatbot
```
### 4. Тестирование бота
1. Откройте Telegram
2. Найдите вашего бота
3. Отправьте `/start`
4. Отправьте любое сообщение
## 🔍 Troubleshooting
### Ошибка "Unable to connect to PostgreSQL"
```bash
# Проверка статуса
sudo systemctl status postgresql
# Проверка порта
netstat -tulpn | grep 5432
# Проверка настроек pg_hba.conf
sudo nano /etc/postgresql/14/main/pg_hba.conf
```
### Ошибка "Ollama connection failed"
```bash
# Запуск Ollama
ollama serve
# Проверка доступности
curl http://localhost:11434/api/tags
```
### Ошибка "Invalid bot token"
- Проверьте правильность токена в `.env`
- Убедитесь, что токен активен через @BotFather
- Перезапустите приложение
## 📚 Следующие шаги
- [Конфигурация](./configuration.md) - Детальная настройка параметров
- [Разработка](./development/project-structure.md) - Структура проекта
- [Deployment](./deployment/docker.md) - Production развертывание