Files
Dorod-Sky/SKYVERN-INSTALLATION-SUCCESS.md
Vodorod 6b69159550
Some checks failed
Run tests and pre-commit / Run tests and pre-commit hooks (push) Has been cancelled
Run tests and pre-commit / Frontend Lint and Build (push) Has been cancelled
Publish Fern Docs / run (push) Has been cancelled
Update OpenAPI Specification / update-openapi (push) Has been cancelled
feat: Add Russian i18n translations and fix CORS + API endpoint issues
- Implemented full Russian translation (ru) for 8 major pages
- Added LanguageSwitcher component with language detection
- Translated: Navigation, Settings, Workflows, Credentials, Banner, Examples
- Fixed API endpoint path: changed to use sans-api-v1 client for /v1/ endpoints
- Fixed CORS: added http://localhost:8081 to ALLOWED_ORIGINS
- Added locales infrastructure with i18next and react-i18next
- Created bilingual JSON files (en/ru) for 4 namespaces
- 220+ translation keys implemented
- Backend CORS configuration updated in .env
- Documentation: I18N implementation guides and installation docs
2026-02-21 08:29:21 +03:00

379 lines
11 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.
# ✅ 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 проблемы!**