Files
eng-bot/README.md
2025-12-12 21:06:17 +03:00

4.6 KiB
Raw Permalink Blame History

English Bot - Metrics Dashboard

Приложение для отслеживания переходов в Telegram бота и канал.

Структура проекта

eng-bot/
├── backend/          # Django API + Dashboard
├── frontend/         # Nuxt.js фронтенд
├── docker-compose.yml
├── nginx.conf        # Внутренний nginx (роутинг между сервисами)
└── nginx.external.example.conf  # Пример внешнего nginx

Быстрый старт

# Сборка и запуск
docker compose up -d --build

# Просмотр логов
docker compose logs -f

# Остановка
docker compose down

URL-адреса приложения

Локальная разработка (порт 3001)

URL Описание
http://localhost:3001/ Главная страница (Nuxt фронтенд)
http://localhost:3001/stats/ Дашборд статистики (Django)
http://localhost:3001/admin/ Django Admin панель

API Endpoints

Метод URL Описание
POST /api/track/bot/ Отслеживание перехода в бота
POST /api/track/channel/ Отслеживание перехода в канал

Примеры запросов

# Трекинг перехода в бота
curl -X POST http://localhost:3001/api/track/bot/

# Трекинг перехода в канал
curl -X POST http://localhost:3001/api/track/channel/

Архитектура

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Клиент    │────▶│    Nginx    │────▶│  Frontend   │
│             │     │   :3001     │     │  (Nuxt)     │
└─────────────┘     └──────┬──────┘     └─────────────┘
                          │
                          │ /api/*, /stats/, /admin/, /static/
                          ▼
                    ┌─────────────┐
                    │   Backend   │
                    │  (Django)   │
                    └─────────────┘

Конфигурация

Переменные окружения

Backend:

  • DEBUG - режим отладки (по умолчанию False в docker)
  • DATA_DIR - путь к данным/БД (по умолчанию /app/data)

Frontend:

  • NUXT_PUBLIC_API_BASE - базовый URL API (по умолчанию http://localhost:3001)

Порты

Сервис Внутренний порт Внешний порт
Nginx 80 3001
Frontend 3000 -
Backend 8000 -

Продакшен

Внешний Nginx

Для продакшена используйте nginx.external.example.conf как основу:

# Скопировать конфиг
sudo cp nginx.external.example.conf /etc/nginx/sites-available/eng-bot.conf

# Отредактировать домен
sudo nano /etc/nginx/sites-available/eng-bot.conf

# Включить сайт
sudo ln -s /etc/nginx/sites-available/eng-bot.conf /etc/nginx/sites-enabled/

# Получить SSL сертификат
sudo certbot --nginx -d your-domain.com

# Перезапустить nginx
sudo systemctl reload nginx

Защита /stats/

Рекомендуется закрыть доступ к статистике. Варианты:

  1. По IP - раскомментируйте блок с allow/deny в nginx.external.example.conf
  2. Basic Auth - раскомментируйте блок с auth_basic

Создание пароля для Basic Auth:

sudo htpasswd -c /etc/nginx/.htpasswd admin

Разработка

Локальный запуск без Docker

Backend:

cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver 8000

Frontend:

cd frontend
npm install
npm run dev

База данных

SQLite база хранится в Docker volume backend-data по пути /app/data/db.sqlite3.

# Бэкап БД
docker compose exec backend cat /app/data/db.sqlite3 > backup.sqlite3

# Создание суперпользователя Django
docker compose exec backend python manage.py createsuperuser