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

158 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
## Быстрый старт
```bash
# Сборка и запуск
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/` | Отслеживание перехода в канал |
### Примеры запросов
```bash
# Трекинг перехода в бота
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` как основу:
```bash
# Скопировать конфиг
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:
```bash
sudo htpasswd -c /etc/nginx/.htpasswd admin
```
## Разработка
### Локальный запуск без Docker
**Backend:**
```bash
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:**
```bash
cd frontend
npm install
npm run dev
```
## База данных
SQLite база хранится в Docker volume `backend-data` по пути `/app/data/db.sqlite3`.
```bash
# Бэкап БД
docker compose exec backend cat /app/data/db.sqlite3 > backup.sqlite3
# Создание суперпользователя Django
docker compose exec backend python manage.py createsuperuser
```