Files
Dorod-Sky/SKYVERN-INSTALLATION-SUCCESS.md

379 lines
11 KiB
Markdown
Raw Normal View History

# ✅ SKYVERN УСТАНОВЛЕН И РАБОТАЕТ!
**Дата установки:** 20 февраля 2026 г.
**Система:** Ubuntu, Python 3.12.3, Node.js v20.19.5
**Режим:** Source (не Docker) для полной кастомизации
---
## 🎯 Что установлено и работает
### Backend (FastAPI + Uvicorn) - ✅ РАБОТАЕТ
- **Адрес:** http://localhost:8000
- **Процесс:** background (PID в `ps aux | grep uvicorn`)
- **Логи:** `backend.log` в корне проекта
- **Swagger API:** http://localhost:8000/docs
- **OpenAPI schema:** http://localhost:8000/openapi.json
### Frontend (React + Vite) - ⏹️ ГОТОВ К ЗАПУСКУ
- **Команда:** `cd skyvern-frontend && npm run dev`
- **Адрес:** http://localhost:5173 (после запуска)
- **Зависимости:** 672 пакета установлено
### Database (PostgreSQL 16) - ✅ РАБОТАЕТ
- **Адрес:** localhost:5433
- **Credentials:** skyvern / skyvern
- **Контейнер:** `skyvern-postgres`
- **Таблиц:** 42 (созданы через Alembic migrations)
### Cache (Redis 7) - ✅ РАБОТАЕТ
- **Адрес:** localhost:6380
- **Контейнер:** `skyvern-redis`
- **Статус:** healthy
### Browser Automation - ✅ ГОТОВ
- **Playwright:** установлен (Chromium 145.0.7632.6)
- **Режим:** headless (настраивается в .env)
---
## 🔑 API Аутентификация
### JWT Token (валиден до 2027 года)
```bash
x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJvcmdfZGV2ZWxvcG1lbnQiLCJleHAiOjE4MDMxNDc3MDMsImlhdCI6MTc3MTYxMTcwM30.HcAprOMAuMpB-_QSZWiRG642FNezc9fepIQn0OFKH-E
```
### Organization
- **ID:** `org_development`
- **Name:** Development Organization
### Сохранен в .env
```bash
SKYVERN_API_KEY=eyJhbGc...
```
---
## 📡 API Endpoints (проверены и работают)
### Создание задачи
```bash
curl -X POST http://localhost:8000/v1/run/tasks \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_JWT_TOKEN" \
-d '{
"prompt": "Extract the main heading text",
"url": "https://example.com",
"max_steps": 3,
"proxy_location": "NONE"
}'
```
**Ответ:** JSON с `run_id`, `status`, `app_url`
### Проверка статуса
```bash
curl "http://localhost:8000/v1/runs/{run_id}" \
-H "x-api-key: YOUR_JWT_TOKEN"
```
### Полный список endpoints
- `POST /v1/run/tasks` - создать задачу
- `POST /v1/run/workflows` - запустить workflow
- `GET /v1/runs/{run_id}` - статус выполнения
- `GET /v1/runs/{run_id}/timeline` - timeline задачи
- `POST /v1/runs/{run_id}/cancel` - отменить задачу
- `GET /v1/workflows` - список workflows
- `POST /v1/workflows` - создать workflow (YAML/JSON)
- `GET /v1/browser_sessions` - browser сессии
- `POST /v1/credentials` - сохранить credentials
**Полная документация:** http://localhost:8000/docs
---
## ⚠️ Известная проблема: OpenAI API
### Симптом
```
APIError: OpenAIException - Country, region, or territory not supported
```
### Причина
OpenAI блокирует API запросы из России (даже без прокси).
### Решения
#### 1. **Использовать VPN/прокси для OpenAI API** (рекомендуется)
```bash
# В .env добавить:
HTTP_PROXY=http://your-vpn:port
HTTPS_PROXY=http://your-vpn:port
```
#### 2. **Переключиться на другую LLM модель**
```bash
# Отключить OpenAI в .env:
ENABLE_OPENAI=false
# Включить альтернативу (например, OpenRouter или локальная модель):
OPENAI_COMPATIBLE_API_KEY=your-key
OPENAI_COMPATIBLE_API_URL=https://openrouter.ai/api/v1
LLM_KEY=OPENAI_COMPATIBLE # вместо OPENAI_GPT4_TURBO
```
#### 3. **Использовать Anthropic Claude** (если есть ключ)
```bash
ENABLE_ANTHROPIC=true
ANTHROPIC_API_KEY=sk-ant-...
LLM_KEY=ANTHROPIC_CLAUDE_SONNET
```
#### 4. **Локальная LLM через Ollama**
```bash
# Установить Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Запустить модель
ollama run llama2
# В .env:
OPENAI_COMPATIBLE_API_URL=http://localhost:11434/v1
LLM_KEY=OPENAI_COMPATIBLE
```
---
## 🚀 Запуск системы
### Запустить backend (если остановлен)
```bash
cd /home/vodorod/dorod/skyvern
source .venv/bin/activate
# Через nohup (background)
nohup uvicorn skyvern.forge.api_app:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 &
# OR через скрипт:
./start-backend.sh
```
### Запустить frontend
```bash
cd /home/vodorod/dorod/skyvern/skyvern-frontend
npm run dev
# Откроется на http://localhost:5173
```
### Запустить Docker сервисы (если остановлены)
```bash
cd /home/vodorod/dorod/skyvern
docker compose -f docker-compose.deps.yml up -d
```
### Проверить статус всех сервисов
```bash
# Backend
curl http://localhost:8000/docs | head -5
# Database
docker exec skyvern-postgres psql -U skyvern -d skyvern -c "SELECT 1;"
# Redis
docker exec skyvern-redis redis-cli ping
```
---
## 📂 Структура проекта
```
/home/vodorod/dorod/skyvern/
├── .env # Конфигурация (с JWT токеном)
├── .venv/ # Python virtual environment
├── backend.log # Логи backend (тут смотреть ошибки!)
├── start-backend.sh # Скрипт запуска backend
├── start-frontend.sh # Скрипт запуска frontend
├── docker-compose.deps.yml # PostgreSQL + Redis
├── skyvern/ # Исходники backend
│ ├── forge/ # FastAPI application
│ │ ├── api_app.py # MODIFIED: добавлен app instance
│ │ └── sdk/ # SDK и модели
│ ├── config.py # Настройки приложения
│ └── cli/ # CLI команды
├── skyvern-frontend/ # React + Vite frontend
│ ├── src/
│ ├── package.json
│ └── node_modules/ (672 pkgs)
├── alembic/ # Database migrations
└── INSTALLATION-COMPLETE.md # Документация установки
```
---
## 🔧 Полезные команды
### Проверить логи backend
```bash
tail -f backend.log
```
### Остановить backend
```bash
pkill -f "uvicorn skyvern.forge.api_app:app"
```
### Перезапустить PostgreSQL
```bash
docker restart skyvern-postgres
```
### Выполнить миграции (если добавлены новые)
```bash
source .venv/bin/activate
alembic upgrade head
```
### Создать новую организацию
```python
# В Python venv:
python3 << EOF
import jwt, time
secret_key = "dev-secret-key-change-in-production" # Из .env
payload = {
'sub': 'org_your_new_org',
'exp': int(time.time()) + (365 * 24 * 3600),
'iat': int(time.time())
}
token = jwt.encode(payload, secret_key, algorithm='HS256')
print(f"New JWT: {token}")
EOF
# Затем в PostgreSQL:
docker exec skyvern-postgres psql -U skyvern -d skyvern -c "
INSERT INTO organizations (organization_id, organization_name, created_at, modified_at)
VALUES ('org_your_new_org', 'Your Organization', NOW(), NOW());
INSERT INTO organization_auth_tokens (id, organization_id, token_type, token, valid, created_at, modified_at)
VALUES ('token_new', 'org_your_new_org', 'api', 'YOUR_JWT_TOKEN', true, NOW(), NOW());
"
```
---
## 🎓 Примеры использования
### Простой парсинг (после решения OpenAI проблемы)
```bash
curl -X POST http://localhost:8000/v1/run/tasks \
-H "Content-Type: application/json" \
-H "x-api-key: $SKYVERN_API_KEY" \
-d '{
"prompt": "Go to hackernews.com and extract titles of top 5 posts",
"url": "https://news.ycombinator.com",
"max_steps": 5,
"proxy_location": "NONE"
}'
```
### Заполнение формы
```bash
curl -X POST http://localhost:8000/v1/run/tasks \
-H "Content-Type: application/json" \
-H "x-api-key: $SKYVERN_API_KEY" \
-d '{
"prompt": "Fill the contact form with name John, email john@example.com",
"url": "https://example.com/contact",
"max_steps": 10
}'
```
### Извлечение структурированных данных
```bash
curl -X POST http://localhost:8000/v1/run/tasks \
-H "Content-Type: application/json" \
-H "x-api-key: $SKYVERN_API_KEY" \
-d '{
"prompt": "Extract product information",
"url": "https://amazon.com/dp/B08N5WRWNW",
"data_extraction_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"price": {"type": "number"},
"rating": {"type": "number"}
}
}
}'
```
---
## 🔗 Интеграция с n8n
### Webhook trigger в n8n
1. Создать webhook node в n8n
2. Получить URL: `https://your-n8n.com/webhook/skyvern-callback`
3. Добавить в Skyvern задачу:
```bash
curl -X POST http://localhost:8000/v1/run/tasks \
-H "Content-Type: application/json" \
-H "x-api-key: $SKYVERN_API_KEY" \
-d '{
"prompt": "Extract data",
"url": "https://target-site.com",
"webhook_url": "https://your-n8n.com/webhook/skyvern-callback"
}'
```
4. n8n получит JSON с результатами после завершения
---
## 📚 Дополнительная документация
- **Официальная документация:** https://www.skyvern.com/docs
- **GitHub:** https://github.com/Skyvern-AI/skyvern
- **Discord:** https://discord.gg/skyvern-ai
---
## ✅ Чеклист готовности
- [x] Backend запущен и отвечает на запросы
- [x] PostgreSQL работает (42 таблицы)
- [x] Redis работает
- [x] Playwright Chromium установлен
- [x] JWT токен сгенерирован и сохранён
- [x] API endpoints работают (создание/статус задач)
- [x] Frontend зависимости установлены
- [ ] OpenAI API настроен (нужен VPN/прокси или другая LLM)
- [ ] Frontend запущен (необязательно, можно работать через API)
---
## 🚨 Следующие шаги
1. **РЕШИТЬ ПРОБЛЕМУ С OpenAI:**
- Настроить VPN/прокси для OpenAI API
- OR переключиться на Anthropic/Ollama
- OR использовать OpenRouter (https://openrouter.ai)
2. **Запустить frontend:**
```bash
cd skyvern-frontend && npm run dev
```
3. **Создать первую успешную задачу** (после решения п.1)
4. **Настроить интеграцию с n8n** для автоматизации
5. **Применить для traktorodetal.ru парсинга**
---
**🎉 СИСТЕМА ГОТОВА К РАБОТЕ после решения OpenAI проблемы!**