docs: README — new Next.js admin panel (admin-next/), tor schema update, project structure
This commit is contained in:
37
README.md
37
README.md
@@ -10,7 +10,8 @@
|
|||||||
- История транзакций и покупок
|
- История транзакций и покупок
|
||||||
- SaaS-система с автоматическим расчётом комиссий
|
- SaaS-система с автоматическим расчётом комиссий
|
||||||
- **Мультиязычность (i18n)** — английский, испанский, немецкий с переключением в боте
|
- **Мультиязычность (i18n)** — английский, испанский, немецкий с переключением в боте
|
||||||
- Админ-панель на порту 3001 с вкладкой локализации
|
- **Новая админ-панель** (Next.js 16 + Prisma + shadcn/ui) на порту 3000: дашборд, каталог, заказы, кошельки, лиды, ИИ-чатбот, аудит, настройки
|
||||||
|
- **Старая админка** (Express/EJS) на порту 3001 — бэкенд бота, сохранена для совместимости
|
||||||
- Tor-прокси с двумя onion-сервисами (SSH + админка)
|
- Tor-прокси с двумя onion-сервисами (SSH + админка)
|
||||||
- WireGuard VPN для безопасных транзакций
|
- WireGuard VPN для безопасных транзакций
|
||||||
|
|
||||||
@@ -51,7 +52,8 @@ docker compose up -d --build
|
|||||||
|
|
||||||
# 4. Проверить статус
|
# 4. Проверить статус
|
||||||
docker compose ps
|
docker compose ps
|
||||||
curl http://localhost:3001/health
|
curl http://localhost:3001/health # бот + старая админка
|
||||||
|
curl -o /dev/null -w "%{http_code}\n" http://localhost:3000/login # новая админка
|
||||||
```
|
```
|
||||||
|
|
||||||
## Настройка .env
|
## Настройка .env
|
||||||
@@ -93,10 +95,16 @@ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
|||||||
```
|
```
|
||||||
Internet → Tor Network → tor-proxy контейнер
|
Internet → Tor Network → tor-proxy контейнер
|
||||||
├── Onion #1 :22 → хост SSH
|
├── Onion #1 :22 → хост SSH
|
||||||
└── Onion #2 :80 → telegram_shop_prod:3001
|
└── Onion #2 :80 → tg_shop_admin:3000
|
||||||
(через Docker сеть tor_proxy_net)
|
(новая Next.js админка, через Docker сеть tor_proxy_net)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Новая админ-панель (`admin-next/`, Next.js 16 + Prisma + shadcn/ui):
|
||||||
|
- Работает на порту 3000 (контейнер `tg_shop_admin`)
|
||||||
|
- Использует **ту же SQLite БД**, что и бот (`db/shop.db`) — любые изменения мгновенно видны боту и наоборот
|
||||||
|
- Вход по токену `ADMIN_SECRET` / `SUPER_ADMIN_SECRET` (из `.env`)
|
||||||
|
- ИИ-чатбот: настройки в БД (`site_settings` ключи `chatbot_*`), бот обращается к `/api/chat` контейнера админки
|
||||||
|
|
||||||
### Файлы Tor-прокси
|
### Файлы Tor-прокси
|
||||||
|
|
||||||
| Файл | Назначение |
|
| Файл | Назначение |
|
||||||
@@ -158,8 +166,10 @@ Docker автоматически собирает нативные модули
|
|||||||
│ │ telegram_shop_prod │ │ tor-proxy │ │
|
│ │ telegram_shop_prod │ │ tor-proxy │ │
|
||||||
│ │ (node:22-alpine) │ │ (alpine:3.18 + tor) │ │
|
│ │ (node:22-alpine) │ │ (alpine:3.18 + tor) │ │
|
||||||
│ │ │ │ │ │
|
│ │ │ │ │ │
|
||||||
│ │ Port 3001 │◄─┤ HiddenService :80 │ │
|
│ │ Port 3000 ←─────────────┼── Новая админка (Next.js) │ │
|
||||||
│ │ Bot + Admin Panel │ │ HiddenService :22 → SSH│ │
|
│ │ Port 3001 ──────────────┼── Бот + старая админка (Express) │
|
||||||
|
│ │ Bot + Admin Panel │ HiddenService :80 → админка 3000│
|
||||||
|
│ │ │ HiddenService :22 → SSH │
|
||||||
│ │ │ │ │ │
|
│ │ │ │ │ │
|
||||||
│ │ Net: default │ │ Net: default + proxy_net │ │
|
│ │ Net: default │ │ Net: default + proxy_net │ │
|
||||||
│ │ + tor_proxy_net │ │ │ │
|
│ │ + tor_proxy_net │ │ │ │
|
||||||
@@ -260,9 +270,11 @@ src/i18n/
|
|||||||
## Безопасность
|
## Безопасность
|
||||||
|
|
||||||
- `.env` монтируется только для чтения (`:ro`)
|
- `.env` монтируется только для чтения (`:ro`)
|
||||||
- Порт 3001 доступен из LAN и через Tor onion
|
- Порт 3001 (бот + старая админка) и 3000 (новая админка) доступны из LAN и через Tor onion
|
||||||
- Onion-адреса сохраняются в volume (персистентность при перезапуске)
|
- Onion-адреса сохраняются в volume (персистентность при перезапуске)
|
||||||
- Tor hidden services с валидацией env vars
|
- Tor hidden services с валидацией env vars
|
||||||
|
- Новая админка (`admin-next/`): вход по токену, `ADMIN_SECRET`/`SUPER_ADMIN_SECRET` из `.env`
|
||||||
|
- Секреты админки (`admin-next/.env`) исключены из git (`.gitignore`)
|
||||||
- Нативные модули компилируются в builder-стейдже
|
- Нативные модули компилируются в builder-стейдже
|
||||||
- `devDependencies` не попадают в production-образ
|
- `devDependencies` не попадают в production-образ
|
||||||
- Тестовые файлы исключены из Docker-образа (`.dockerignore`)
|
- Тестовые файлы исключены из Docker-образа (`.dockerignore`)
|
||||||
@@ -278,7 +290,7 @@ src/i18n/
|
|||||||
|
|
||||||
```
|
```
|
||||||
├── src/
|
├── src/
|
||||||
│ ├── admin/ # Админ-панель (Express)
|
│ ├── admin/ # Старая админ-панель (Express/EJS)
|
||||||
│ │ ├── routes/ # Роуты админ-панели (вкл. /locales для i18n)
|
│ │ ├── routes/ # Роуты админ-панели (вкл. /locales для i18n)
|
||||||
│ │ ├── views/ # Шаблоны HTML
|
│ │ ├── views/ # Шаблоны HTML
|
||||||
│ │ ├── public/ # Статические файлы (CSS)
|
│ │ ├── public/ # Статические файлы (CSS)
|
||||||
@@ -296,9 +308,14 @@ src/i18n/
|
|||||||
│ ├── migrations/ # Миграции БД
|
│ ├── migrations/ # Миграции БД
|
||||||
│ ├── models/ # Модели данных
|
│ ├── models/ # Модели данных
|
||||||
│ ├── router/ # Роутинг Express
|
│ ├── router/ # Роутинг Express
|
||||||
│ ├── services/ # Бизнес-логика
|
│ ├── services/ # Бизнес-логика (вкл. chatbotService, leadService)
|
||||||
│ ├── utils/ # Утилиты (логирование, валидация, ошибки)
|
│ ├── utils/ # Утилиты (логирование, валидация, ошибки)
|
||||||
│ └── index.js # Точка входа
|
│ └── index.js # Точка входа
|
||||||
|
├── admin-next/ # НОВАЯ админ-панель (Next.js 16 + Prisma + shadcn/ui)
|
||||||
|
│ ├── prisma/schema.prisma # Схема БД (та же SQLite, что у бота)
|
||||||
|
│ ├── src/app/api/ # 45 API-роутов (каталог, заказы, лиды, чатбот)
|
||||||
|
│ ├── src/components/ # 76 UI-компонентов (dashboard, wallets, leads...)
|
||||||
|
│ └── Dockerfile # Multi-stage Next.js standalone
|
||||||
├── tor-proxy/ # Tor прокси для SSH и админки
|
├── tor-proxy/ # Tor прокси для SSH и админки
|
||||||
│ ├── Dockerfile # Alpine + Tor образ
|
│ ├── Dockerfile # Alpine + Tor образ
|
||||||
│ ├── entrypoint.sh # Генерация torrc, валидация env vars
|
│ ├── entrypoint.sh # Генерация torrc, валидация env vars
|
||||||
@@ -309,7 +326,7 @@ src/i18n/
|
|||||||
├── db/ # SQLite база данных (volume)
|
├── db/ # SQLite база данных (volume)
|
||||||
├── uploads/ # Загруженные фото (volume)
|
├── uploads/ # Загруженные фото (volume)
|
||||||
├── Dockerfile # Multi-stage сборка магазина
|
├── Dockerfile # Multi-stage сборка магазина
|
||||||
├── docker-compose.yml # Конфигурация обоих контейнеров
|
├── docker-compose.yml # Конфигурация трёх контейнеров (бот, админка, tor)
|
||||||
├── install.sh # Установщик (POSIX sh)
|
├── install.sh # Установщик (POSIX sh)
|
||||||
├── .dockerignore # Исключения из образа
|
├── .dockerignore # Исключения из образа
|
||||||
├── .env.example # Шаблон переменных
|
├── .env.example # Шаблон переменных
|
||||||
|
|||||||
Reference in New Issue
Block a user