Persist settings in CA, expose /admin/vpn and /internal/vpn, and route Telegram (and optional web/nlp) traffic through mihomo SOCKS when enabled. Co-authored-by: Cursor <cursoragent@cursor.com>
5.0 KiB
5.0 KiB
Локальная разработка
Требования
- Docker + Docker Compose
- Файл
.env(из.env.example) - Для Telegram:
data/telegram.session+TELEGRAM_API_ID/TELEGRAM_API_HASH - Опционально:
DEEPSEEK_API_KEYдляextract_mode: llm(воркеры) и Generate профиля наca-api
Быстрый старт
cp .env.example .env
# заполнить TELEGRAM_* (и при необходимости DEEPSEEK_*)
mkdir -p data
# положить telegram.session в data/
docker compose up --build
UI: http://localhost:8080
Health: curl http://localhost:8080/api/health
Сервисы
| Сервис | Порт снаружи | Когда нужен |
|---|---|---|
ca-frontend |
8080 | всегда (UI) |
ca-api |
внутренний 8000 | всегда |
ca-db / redis |
— | всегда |
cp-workers |
— | Telegram |
cp-workers-web |
— | Crawl4AI |
cp-workers-nlp |
— | VIINA |
cp-vpn |
внутренний 1080 | SOCKS из subscription (вкладка VPN) |
Пересборка одного воркера:
docker compose up --build cp-workers-web
Проверка compose-файла:
docker compose config
Telegram-сессия
- Путь в контейнере:
/data/telegram.session(TELEGRAM_SESSION_PATH) - Локально:
./dataмонтируется вcp-workers - Файл не коммитить (
.gitignore) - API id/hash в
.envдолжны совпадать с теми, под которыми создавалась сессия
VPN / прокси (вкладка VPN)
Основной путь: UI → VPN (/vpn).
- Включите «Прокси включён».
- Способ Subscription URL — вставьте ссылку подписки (не коммитьте её в git).
- Отметьте источники (
telegram, при необходимостиcrawl4ai/viina). - Сохраните. Сервис
cp-vpn(mihomo) подтянет подписку и отдаст SOCKS наcp-vpn:1080; воркеры читают/internal/vpn.
Режимы SOCKS5 / HTTP задают host:port напрямую (без cp-vpn для Telegram).
Fallback: локальный Happ/xray (без вкладки VPN)
Если VPN в UI выключен, воркеры используют TELEGRAM_PROXY_* из .env:
- Остановите Telegram-воркер, чтобы не делить session-файл:
docker compose stop cp-workers - В
.env:TELEGRAM_PROXY_TYPE=socks5,TELEGRAM_PROXY_HOST=127.0.0.1,TELEGRAM_PROXY_PORT=10808(Happ/xray). - Проброс SOCKS в Docker (xray слушает только
127.0.0.1:10808):Для auth из контейнера с host-сетью:socat TCP-LISTEN:11080,bind=0.0.0.0,fork,reuseaddr TCP:127.0.0.1:10808 &TELEGRAM_PROXY_HOST=127.0.0.1. - Авторизация (интерактивно, код из Telegram):
docker run --rm -it --network host \ --env-file .env \ -e TELEGRAM_SESSION_PATH=/data/telegram.session \ -e TELEGRAM_PROXY_HOST=127.0.0.1 \ -v "$PWD/data:/data" \ -v "$PWD/scripts:/scripts:ro" \ mapmil-cp-workers \ python /scripts/telegram_auth.py docker compose up -d cp-workers
Без сессии batch/listener Telegram не авторизуются; остальные адаптеры могут работать.
Полезные curl
Создать telegram-парсер:
curl -X POST http://localhost:8080/admin/jobs \
-H 'Content-Type: application/json' \
-d '{"source_type":"telegram","source_config":{"channel":"example","limit":50}}'
Срез ПИ (подставьте ключ из seed / UI):
curl -H "Authorization: Bearer test-pi-api-key-change-me" \
"http://localhost:8080/api/v1/events"
Логи
docker compose logs -f ca-api
docker compose logs -f cp-workers
docker compose logs -f cp-workers-web
Типичные проблемы
| Проблема | Действие |
|---|---|
| Frontend 000 / нет контейнеров | docker compose up -d (без --build, если registry недоступен, но образы уже есть) |
| Job не берётся | Смотреть ENABLED_ADAPTERS / WORKER_FAMILIES нужного сервиса |
| LLM не работает | DEEPSEEK_API_KEY в .env, перезапуск cp-workers / cp-workers-web |
| Generate профиля 503 | DEEPSEEK_API_KEY в .env + env_file у ca-api, перезапуск ca-api |
| Изменения UI не видны | Пересобрать ca-frontend |
Границы при разработке
- Не добавлять прямой доступ к БД из CP workers.
- Не коммитить
.env,data/, API-ключи. - Изменение формы данных — через
contracts/(см. contracts.md).