This commit is contained in:
485
docs/installation.md
Normal file
485
docs/installation.md
Normal 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 развертывание
|
||||
Reference in New Issue
Block a user