Files
ChatBot/docs/installation.md
Leonid Pershin e5e69470f8
All checks were successful
SonarQube / Build and analyze (push) Successful in 3m22s
add docs
2025-10-21 05:08:40 +03:00

486 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🛠️ Установка и настройка
Подробное руководство по установке 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 развертывание