# 🐳 Запуск MY Uploader Bot через Docker ## 📋 Требования - Docker и Docker Compose установлены - Telegram Bot токены от @BotFather ## ⚡ Быстрый запуск ### 1. Настройка переменных окружения Отредактируйте файл [`.env`](.env) - **ОБЯЗАТЕЛЬНО** заполните Telegram токены: ```bash # ОБЯЗАТЕЛЬНО: Получите токены у @BotFather в Telegram TELEGRAM_API_KEY=123456789:YOUR_ACTUAL_BOT_TOKEN_HERE CLIENT_TELEGRAM_API_KEY=987654321:YOUR_ACTUAL_CLIENT_BOT_TOKEN_HERE ``` Остальные настройки можно оставить по умолчанию для тестирования. ### 2. Запуск базовых сервисов ```bash # Базовые сервисы (PostgreSQL + Redis + Application) docker-compose -f docker-compose.new.yml up -d postgres redis app # Проверка статуса docker-compose -f docker-compose.new.yml ps ``` ### 3. Проверка работы ```bash # Проверка логов приложения docker-compose -f docker-compose.new.yml logs -f app # Проверка health endpoints curl http://localhost:15100/health curl http://localhost:15100/api/my/health ``` ### 4. Веб-интерфейс - **Основное приложение**: http://localhost:15100 - **MY Network Monitor**: http://localhost:15100/api/my/monitor/ - **Метрики**: http://localhost:9090 ## 🔧 Дополнительные профили ### Мониторинг (Prometheus + Grafana) ```bash docker-compose -f docker-compose.new.yml --profile monitoring up -d # Доступ: # Prometheus: http://localhost:9091 # Grafana: http://localhost:3001 (admin/admin) ``` ### Отдельные сервисы (альтернативная архитектура) ```bash docker-compose -f docker-compose.new.yml --profile separate-services up -d ``` ### Прокси с SSL (Traefik) ```bash docker-compose -f docker-compose.new.yml --profile proxy up -d # Настройте DOMAIN в .env перед запуском ``` ### Автоматические бэкапы ```bash docker-compose -f docker-compose.new.yml --profile backup up -d ``` ## 🔍 Диагностика ### Просмотр логов ```bash # Все сервисы docker-compose -f docker-compose.new.yml logs -f # Конкретный сервис docker-compose -f docker-compose.new.yml logs -f app docker-compose -f docker-compose.new.yml logs -f postgres docker-compose -f docker-compose.new.yml logs -f redis ``` ### Проверка состояния базы данных ```bash # Подключение к PostgreSQL docker-compose -f docker-compose.new.yml exec postgres psql -U uploader -d uploader_bot # Проверка таблиц \dt # Выход \q ``` ### Проверка Redis ```bash # Подключение к Redis docker-compose -f docker-compose.new.yml exec redis redis-cli # Проверка ключей KEYS * # Выход exit ``` ## 🛠 Разработка ### Пересборка приложения ```bash # После изменения кода docker-compose -f docker-compose.new.yml build app docker-compose -f docker-compose.new.yml up -d app ``` ### Выполнение команд внутри контейнера ```bash # Bash в контейнере приложения docker-compose -f docker-compose.new.yml exec app bash # Миграции базы данных docker-compose -f docker-compose.new.yml exec app python -m alembic upgrade head # Проверка MY Network docker-compose -f docker-compose.new.yml exec app python -c "from app.core.my_network import test_connection; test_connection()" ``` ## 🛑 Остановка ```bash # Остановка всех сервисов docker-compose -f docker-compose.new.yml down # Остановка с удалением volumes (ВНИМАНИЕ: удалит все данные!) docker-compose -f docker-compose.new.yml down -v # Очистка всех docker ресурсов docker system prune -a ``` ## 📊 MY Network Protocol После запуска доступны MY Network endpoints: - **Конфигурация bootstrap**: http://localhost:15100/api/my/bootstrap/config - **Статус сети**: http://localhost:15100/api/my/health - **Мониторинг ASCII**: http://localhost:15100/api/my/monitor/ - **Метрики**: http://localhost:15100/api/my/metrics ## ⚠ Важные переменные в .env | Переменная | Описание | Обязательна | |------------|----------|-------------| | `TELEGRAM_API_KEY` | Основной бот токен | ✅ ДА | | `CLIENT_TELEGRAM_API_KEY` | Клиентский бот токен | ✅ ДА | | `SECRET_KEY` | Секретный ключ (32+ символов) | ✅ ДА | | `JWT_SECRET_KEY` | JWT секрет (32+ символов) | ✅ ДА | | `POSTGRES_PASSWORD` | Пароль базы данных | ❌ НЕТ | | `DEBUG` | Режим отладки | ❌ НЕТ | | `TESTNET` | Тестовая сеть TON | ❌ НЕТ | ## 🚀 Готово к продакшену Для продакшена дополнительно настройте: 1. Сильные пароли в `.env` 2. `DEBUG=false` 3. Правильный `DOMAIN` 4. `TESTNET=false` для основной сети TON 5. Валидные `TONCENTER_API_KEY` 6. SSL сертификаты через Traefik профиль