# Cursor из РФ на Windows — туннель через прокси ru.hunab.app

Пошаговая инструкция для тех, кто впервые настраивает Cursor за пределами «обычного» интернета. Все действия выполняются на компьютере Windows.

---

## Зачем это нужно

В России Cursor иногда выдаёт ошибку **PING timed out**: связь с серверами Cursor обрывается или не устанавливается. Чтобы обойти это, трафик Cursor пускают через **прокси-сервер** ru.hunab.app (149.154.64.19). С вашего Windows до этого сервера создаётся зашифрованный **туннель** по SSH. Cursor тогда подключается к интернету не напрямую, а через этот туннель — и ошибка пропадает.

**Что вы сделаете по шагам:**  
1) проверите/установите программу для туннеля (OpenSSH) и ключ доступа к прокси;  
2) запустите туннель (одна команда или скрипт);  
3) настроите Cursor так, чтобы он использовал этот туннель;  
4) при желании настроите автозапуск туннеля при входе в Windows.

---

## Небольшой словарик

| Термин | По-простому |
|--------|-------------|
| **Туннель (SOCKS)** | Канал «ваш компьютер → прокси-сервер». Весь трафик Cursor к интернету идёт через этот канал. |
| **Порт 10809** | Номер «входа» на вашем же компьютере. Cursor подключается к `127.0.0.1:10809` — то есть к себе же, но к программе туннеля, которая пересылает данные на прокси. |
| **PowerShell** | Программа в Windows для ввода текстовых команд. Открыть: поиск в Пуске «PowerShell» или Win+X → «Windows PowerShell». |
| **%USERPROFILE%** | Папка вашего пользователя Windows, например `C:\Users\Иван`. В PowerShell то же: `$env:USERPROFILE`. |
| **Корень репо** | Папка, в которой лежит проект local_machine (внутри есть папки `docs`, `scripts` и т.д.). |

---

## Что нужно до начала

- **SSH-ключ** уже установлен на Windows и проверен (подключение к ahau@149.154.64.19 без пароля). Если ещё нет — сначала сделайте по инструкции [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md).
- **Cursor** установлен на Windows.
- Настроено **подключение к интернету** (туннель будет идти через него до прокси).

---

## Содержание

1. [Шаг 1: Проверить OpenSSH и ключ](#-шаг-1-проверить-openssh-и-ключ)
2. [Шаг 2: Запустить туннель](#-шаг-2-запустить-туннель)
3. [Шаг 3: Настроить Cursor](#-шаг-3-настроить-cursor)
4. [Порядок работы каждый раз](#-порядок-работы-каждый-раз)
5. [Автозапуск туннеля при входе в Windows](#-автозапуск-туннеля-при-входе-в-windows)
6. [Если что-то не работает](#-если-что-то-не-работает)

---

## Шаг 1: Проверить OpenSSH и ключ

### 1.1 Открыть PowerShell

- Нажмите клавишу **Win** (или кнопку «Пуск») и начните вводить **PowerShell**.
- Выберите **Windows PowerShell** (лучше не «от имени администратора», если не требуется).

Откроется синее окно с текстом вроде `PS C:\Users\ВашеИмя>`. В нём вы будете вводить команды.

### 1.2 Проверить, установлен ли OpenSSH

Введите команду и нажмите Enter:

```powershell
ssh -V
```

**Хороший результат:** появляется строка с версией, например `OpenSSH_for_Windows_8.1` или похоже.

**Если пишет «не распознано» или «command not found»:**  
Нужно установить клиент OpenSSH:

1. Откройте **Параметры Windows** (Win+I).
2. Зайдите в **Приложения** → **Дополнительные компоненты** (или «Опциональные компоненты»).
3. Нажмите **Добавить компонент**.
4. Найдите в списке **OpenSSH-клиент** и нажмите **Установить**.

После установки закройте и снова откройте PowerShell и снова выполните `ssh -V`.

### 1.3 Убедиться, что ключ на месте и работает

Ключ должен лежать в папке вашего пользователя, в подпапке `.ssh`, с именем `id_ed25519`. То есть полный путь:

`C:\Users\**ВашеИмя**\.ssh\id_ed25519`

Проверка одной командой (скопируйте целиком и вставьте в PowerShell):

```powershell
ssh -i $env:USERPROFILE\.ssh\id_ed25519 ahau@149.154.64.19 "echo OK"
```

При первом запуске может спросить про доверие хосту — введите **yes**.  
**Ожидаемый результат:** в следующей строке выводится **OK**, пароль не запрашивается.

Если получили **OK** — переходите к [Шагу 2](#-шаг-2-запустить-туннель).  
Если ошибка (например, «Permission denied», «No such file») — вернитесь к [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md) и доведите установку ключа до конца.

---

## Шаг 2: Запустить туннель

Туннель — это программа, которая держит соединение с прокси и «слушает» на вашем компьютере порт 10809. Cursor потом будет подключаться к этому порту. Окно, в котором запущен туннель, **лучше не закрывать** (можно свернуть).

### Вариант A: Запуск скриптом (если у вас есть папка с репо local_machine)

1. Откройте PowerShell.
2. Перейдите в **корень репо** (папка, где лежат `docs`, `scripts`). Пример:
   ```powershell
   cd C:\Users\ВашеИмя\code\local_machine
   ```
   Подставьте свой путь к папке проекта.
3. Разрешить выполнение скриптов (достаточно один раз):
   ```powershell
   Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
   ```
   На вопрос ответьте **Y**.
4. Запустите туннель:
   ```powershell
   .\docs\cursor\scripts\cursor-socks-tunnel.ps1 start
   ```
5. **Ожидаемый вывод:** `... -> telegram-socks-via-do (DO exit)` — только цепочка **Mac→RU→DO**; если **hsites-ahau** недоступен, скрипт завершится с ошибкой (прямой Mac→DO не поднимается). Нужен `Host telegram-socks-via-do` в `~/.ssh/config`, см. [PROXY_GUIDE.md](./PROXY_GUIDE.md). Только выход с RU: `$env:CURSOR_SOCKS_VIA_DO="0"; .\docs\cursor\scripts\cursor-socks-tunnel.ps1 start`. Окно можно свернуть.

Проверить, что туннель работает: в **другом** окне PowerShell выполните:

```powershell
.\docs\cursor\scripts\cursor-socks-tunnel.ps1 status
```

Должно написать, что SOCKS слушает на порту 10809.

Остановить туннель (когда не нужен):

```powershell
.\docs\cursor\scripts\cursor-socks-tunnel.ps1 stop
```

### Вариант B: Запуск одной командой (без скрипта)

1. Откройте PowerShell.
2. Выход через **DO** (как скрипт по умолчанию):

```powershell
ssh -D 10809 -o ServerAliveInterval=60 -o ServerAliveCountMax=4 telegram-socks-via-do
```

Только **RU** (без DO в цепочке выхода):

```powershell
ssh -D 10809 -o ServerAliveInterval=30 -o ServerAliveCountMax=6 ahau@149.154.64.19
```

3. При первом запуске может спросить про доверие хосту — введите **yes**. Пароль спрашивать не должно (работает ключ).
4. **Окно не закрывайте** — пока оно открыто, туннель работает. В заголовке окна может ничего не меняться — это нормально. Можно свернуть окно.

Проверка: откройте **второе** окно PowerShell и выполните:

```powershell
netstat -an | findstr "10809"
```

Должна появиться строка, где есть `127.0.0.1` и `10809` и состояние **LISTENING**.

Чтобы остановить туннель — закройте то окно PowerShell, в котором была запущена команда `ssh -D 10809 ...`.

---

## Шаг 3: Настроить Cursor

Нужно один раз сказать Cursor использовать туннель как прокси.

1. Откройте **Cursor**.
2. Откройте настройки:
   - либо меню **File** → **Preferences** → **Settings** (или **Файл** → **Параметры** → **Настройки**);
   - либо нажмите **Ctrl+,** (запятая).
3. Вверху в поиске настроек введите: **proxy**.
4. Найдите пункт **Http: Proxy** (или **Http: Proxy Support** и т.п.) и в поле значения введите **ровно**:
   ```text
   socks5://127.0.0.1:10809
   ```
5. Если есть отдельное поле **Https: Proxy** — введите туда то же самое: `socks5://127.0.0.1:10809`.
6. Убедитесь, что **Cursor > General: Disable Http2** выключен (галочка снята). HTTP/2 должен быть включён — так Cursor будет стабильнее работать через туннель.

**Альтернатива через JSON-настройки:**

- В Cursor откройте палитру команд: **Ctrl+Shift+P**.
- Введите: **Open User Settings (JSON)** и выберите этот пункт.
- В открывшийся файл добавьте (или допишите к существующему объекту) строки:

```json
"http.proxy": "socks5://127.0.0.1:10809",
"https.proxy": "socks5://127.0.0.1:10809"
```

Сохраните файл. Настройки применятся автоматически.

---

## Порядок работы каждый раз

1. **Сначала** запустите туннель (скриптом или командой `ssh -D 10809 ...`). Дождитесь, что он поднялся (проверка через `status` или `netstat`).
2. **Потом** откройте Cursor и работайте как обычно. Cursor будет отправлять трафик через туннель на порт 10809.

Если туннель не запущен, Cursor может снова показывать PING timeout или не подключаться к серверам.

---

## Автозапуск туннеля при входе в Windows

Чтобы не запускать туннель вручную каждый раз, можно настроить его старт при входе в систему.

### Способ 1: Планировщик заданий

1. Нажмите **Win+R**, введите **taskschd.msc** и нажмите Enter. Откроется **Планировщик заданий**.
2. Справа нажмите **Создать задачу…** (не «Создать простую задачу»).
3. Вкладка **Общие**:
   - Имя: например **Cursor SOCKS tunnel**.
   - Отметьте «Выполнять для всех пользователей» при необходимости; «Выполнять с наивысшими правами» можно не ставить.
4. Вкладка **Триггеры** → **Создать**:
   - Начать задачу: **При входе в систему**.
   - Пользователь: ваш пользователь Windows. ОК.
5. Вкладка **Действия** → **Создать**:
   - Действие: **Запуск программы**.
   - Программа или сценарий: **powershell.exe**.
   - Добавить аргументы:
     - Если используете скрипт из репо (подставьте свой путь к папке local_machine):
       ```text
       -NoProfile -WindowStyle Hidden -File "C:\Users\ВашеИмя\путь\к\local_machine\docs\cursor\scripts\cursor-socks-tunnel.ps1" start
       ```
     - Или без скрипта (фон; только Mac→RU→DO, нужен доступ к RU):
       ```text
       -NoProfile -WindowStyle Minimized -Command "ssh -D 10809 -o ServerAliveInterval=60 -o ServerAliveCountMax=4 telegram-socks-via-do"
       ```
   Нажмите ОК.
6. ОК по задаче. При следующем входе в Windows туннель должен запускаться сам.

### Способ 2: Ярлык в папке «Автозагрузка»

1. Нажмите **Win+R**, введите **shell:startup** и нажмите Enter. Откроется папка автозагрузки вашего пользователя.
2. В этой папке создайте ярлык (правый клик → Создать → Ярлык).
3. В качестве расположения объекта укажите, например (подставьте свой путь к репо):
   ```text
   powershell.exe -NoProfile -WindowStyle Normal -File "C:\Users\ВашеИмя\code\local_machine\docs\cursor\scripts\cursor-socks-tunnel.ps1" start
   ```
4. Имя ярлыка: например **Cursor tunnel**. Готово. При каждом входе в Windows будет запускаться PowerShell и подниматься туннель.

---

## Если что-то не работает

| Ситуация | Что проверить и сделать |
|----------|-------------------------|
| **Cursor не подключается, ошибки в чате** | 1) Туннель действительно запущен: в PowerShell `.\docs\cursor\scripts\cursor-socks-tunnel.ps1 status` или `netstat -an \| findstr 10809`. 2) В настройках Cursor указано ровно `socks5://127.0.0.1:10809`. 3) Перезапустите Cursor (полностью закрыть и открыть снова). |
| **Всё ещё PING timed out** | Убедитесь, что в настройках Cursor **Disable Http2** выключен (HTTP/2 включён). Перезапустите туннель и Cursor. |
| **Порт 10809 занят** | Другой программой уже занят. Можно сменить порт: например 10810. Тогда в команде туннеля замените 10809 на 10810 и в Cursor укажите `socks5://127.0.0.1:10810`. |
| **Туннель обрывается через время** | В команде SSH должны быть параметры `ServerAliveInterval=30` и `ServerAliveCountMax=6` — в скрипте они уже есть; при ручном запуске используйте команду из Варианта B. |
| **Ошибка при запуске скрипта .ps1** | Выполните один раз: `Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned` и ответьте Y. |
| **SSH просит пароль** | Ключ не подхватывается. Проверьте, что файл лежит по пути `C:\Users\ВашеИмя\.ssh\id_ed25519` и в команде указан `-i $env:USERPROFILE\.ssh\id_ed25519`. При необходимости заново установите ключ по [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md). |

Логи Cursor на Windows лежат в папке:  
`%APPDATA%\Cursor\logs\` (файл `main.log`). В проблемных местах ищите слова ERROR, PING, timeout, ECONNREFUSED, ETIMEDOUT.

---

## Ссылки

| Документ | Для чего |
|----------|----------|
| [WINDOWS_SSH_KEY_INSTALL.md](./WINDOWS_SSH_KEY_INSTALL.md) | Установка SSH-ключа на Windows (если ещё не сделано). |
| [PROXY_GUIDE.md](./PROXY_GUIDE.md) | Общее описание прокси ru.hunab.app. |
| [README.md](./README.md) | Содержимое папки connectivity. |
