# πŸ› οΈ Установка ΠΈ настройка ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство ΠΏΠΎ установкС 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 Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅