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

11 KiB
Raw Blame History

SKYVERN УСТАНОВЛЕН И РАБОТАЕТ!

Дата установки: 20 февраля 2026 г.
Система: Ubuntu, Python 3.12.3, Node.js v20.19.5
Режим: Source (не Docker) для полной кастомизации


🎯 Что установлено и работает

Backend (FastAPI + Uvicorn) - РАБОТАЕТ

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 года)

x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJvcmdfZGV2ZWxvcG1lbnQiLCJleHAiOjE4MDMxNDc3MDMsImlhdCI6MTc3MTYxMTcwM30.HcAprOMAuMpB-_QSZWiRG642FNezc9fepIQn0OFKH-E

Organization

  • ID: org_development
  • Name: Development Organization

Сохранен в .env

SKYVERN_API_KEY=eyJhbGc...

📡 API Endpoints (проверены и работают)

Создание задачи

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

Проверка статуса

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 (рекомендуется)

# В .env добавить:
HTTP_PROXY=http://your-vpn:port
HTTPS_PROXY=http://your-vpn:port

2. Переключиться на другую LLM модель

# Отключить 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 (если есть ключ)

ENABLE_ANTHROPIC=true
ANTHROPIC_API_KEY=sk-ant-...
LLM_KEY=ANTHROPIC_CLAUDE_SONNET

4. Локальная LLM через Ollama

# Установить 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 (если остановлен)

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

cd /home/vodorod/dorod/skyvern/skyvern-frontend
npm run dev

# Откроется на http://localhost:5173

Запустить Docker сервисы (если остановлены)

cd /home/vodorod/dorod/skyvern
docker compose -f docker-compose.deps.yml up -d

Проверить статус всех сервисов

# 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

tail -f backend.log

Остановить backend

pkill -f "uvicorn skyvern.forge.api_app:app"

Перезапустить PostgreSQL

docker restart skyvern-postgres

Выполнить миграции (если добавлены новые)

source .venv/bin/activate
alembic upgrade head

Создать новую организацию

# В 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 проблемы)

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"
  }'

Заполнение формы

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
  }'

Извлечение структурированных данных

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 задачу:
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"
  }'
  1. n8n получит JSON с результатами после завершения

📚 Дополнительная документация


Чеклист готовности

  • Backend запущен и отвечает на запросы
  • PostgreSQL работает (42 таблицы)
  • Redis работает
  • Playwright Chromium установлен
  • JWT токен сгенерирован и сохранён
  • API endpoints работают (создание/статус задач)
  • Frontend зависимости установлены
  • OpenAI API настроен (нужен VPN/прокси или другая LLM)
  • Frontend запущен (необязательно, можно работать через API)

🚨 Следующие шаги

  1. РЕШИТЬ ПРОБЛЕМУ С OpenAI:

    • Настроить VPN/прокси для OpenAI API
    • OR переключиться на Anthropic/Ollama
    • OR использовать OpenRouter (https://openrouter.ai)
  2. Запустить frontend:

    cd skyvern-frontend && npm run dev
    
  3. Создать первую успешную задачу (после решения п.1)

  4. Настроить интеграцию с n8n для автоматизации

  5. Применить для traktorodetal.ru парсинга


🎉 СИСТЕМА ГОТОВА К РАБОТЕ после решения OpenAI проблемы!