486 lines
10 KiB
Markdown
486 lines
10 KiB
Markdown
# 🛠️ Установка и настройка
|
||
|
||
Подробное руководство по установке 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 развертывание
|