# Telegram через SOCKS (RU-прокси → DigitalOcean) На Mac поднимается **SOCKS5** на **127.0.0.1:1081**. Для выхода в интернет с **IP DO** используется **только** цепочка **Mac → 149.154.64.19 → DO (209.38.32.21)** (`telegram-socks-via-do`). Без доступа к RU автоматический SOCKS «напрямую в DO» **не** поднимается. Подробности: [PROXY_GUIDE.md](./PROXY_GUIDE.md). Все пути ниже — от корня репозитория **local_machine**. --- ## Быстрые команды ### Туннель вручную (основной: только Mac→RU→DO) ```bash export TELEGRAM_SOCKS_VIA_DO=1 ./docs/connectivity/scripts/telegram-socks-tunnel.sh start ./docs/connectivity/scripts/telegram-socks-tunnel.sh stop ./docs/connectivity/scripts/telegram-socks-tunnel.sh status ``` ### Проверка порта и API Telegram ```bash lsof -i :1081 -sTCP:LISTEN curl -x socks5h://127.0.0.1:1081 -sI --connect-timeout 10 https://api.telegram.org | head -5 ``` ### Автозапуск после перезагрузки (via-DO + авто-fallback) Скрипт **`~/Library/Application Support/hunab/telegram-socks-launch.sh`** ставится из репо командой ниже. ```bash ./docs/connectivity/launchd/install-via-do.sh ./docs/connectivity/launchd/uninstall-via-do.sh launchctl list | grep telegram-socks launchctl kickstart -k "gui/$(id -u)/com.hunab.telegram-socks-via-do" ``` Лог агента: `tail -50 /tmp/telegram-socks-tunnel-via-do.log` ### Ключи в связку (один раз после смены ключей / сбоя SSH) ```bash ssh-add --apple-use-keychain ~/.ssh/id_ed25519 ssh-add --apple-use-keychain ~/.ssh/hunab_deploy_key ``` ### Прокси в Telegram (обязательно) | Поле | Значение | |------|----------| | Тип | **SOCKS5** | | Сервер | **127.0.0.1** | | Порт | **1081** | | Логин / пароль | *пусто* | **Настройки → Данные и память → Прокси** — добавить, сохранить, **включить**. --- ## Регламент Документ задаёт **обязательные** правила и **порядок действий**. Отклонения — только осознанно (обрывы, DPI, конфликт портов). ### 1. Назначение - Выход в интернет через **DO**; предпочтительно через **`hsites-ahau`**, при его недоступности — **прямой** SSH к DO (автоматически). - Исключить работу Telegram **мимо** туннеля и конкуренцию на порту **1081**. ### 2. Обязательные нормы (всегда) | № | Требование | |---|------------| | N1 | **Основной** сценарий: **`TELEGRAM_SOCKS_VIA_DO=1`** и/или LaunchAgent **`com.hunab.telegram-socks-via-do`**, не «только RU без DO», если с RU TLS до Telegram нестабилен. | | N2 | В Telegram — **SOCKS5**, **127.0.0.1**, **1081**, без логина/пароля (см. таблицу в «Быстрые команды»). | | N3 | На **1081** только наш `ssh -D`. Другие прокси (Shadowsocks, v2ray и т.п.) на этот порт **не ставить**. | | N4 | В `~/.ssh/config` есть **`Host telegram-socks-via-do`** (с jump **`hsites-ahau`**) и **`hsites-ahau`** — [PROXY_GUIDE.md](./PROXY_GUIDE.md). | | N5 | Ключи **id_ed25519** и **hunab_deploy_key** доступны SSH после входа: **связка ключей** (`ssh-add --apple-use-keychain`). | | N6 | Для работы после перезагрузки: plist **`~/Library/LaunchAgents/com.hunab.telegram-socks-via-do.plist`** загружен. Ручной `start` без агента перезагрузку **не переживает**. | | N7 | Не держать **два** LaunchAgent на **1081**: `com.hunab.telegram-socks` (только RU) и `com.hunab.telegram-socks-via-do` — **ровно один** вариант. | ### 3. Первоначальная настройка (один раз) Порядок фиксирован (детальнее и варианты — раздел «Развёртывание с нуля»). 1. Проверка SSH (см. быстрые проверки в сценарии 1). 2. `~/.ssh/config`: **`Host telegram-socks-via-do`** по [PROXY_GUIDE.md](./PROXY_GUIDE.md). 3. `ssh-add --apple-use-keychain` для обоих ключей. 4. Снять старый агент only-RU при необходимости: `./docs/connectivity/launchd/uninstall.sh`. 5. `./docs/connectivity/launchd/install-via-do.sh`. 6. Настроить прокси в Telegram (таблица выше). 7. Контрольные проверки (п. 6). ### 4. Повседневная эксплуатация | Ситуация | Действие | |----------|----------| | Обычный день | Ничего не запускать: туннель поднимает LaunchAgent после входа. | | Ручной перезапуск туннеля | `stop` → `export TELEGRAM_SOCKS_VIA_DO=1` → `start` (см. быстрые команды). | | После смены plist / обновления репо | `install-via-do.sh` или `kickstart` (см. быстрые команды). | ### 5. Норматив: клиент Telegram Соответствует таблице в разделе **«Быстрые команды»**. Иначе нарушение N2. ### 6. Контрольные проверки ```bash test -f "$HOME/Library/LaunchAgents/com.hunab.telegram-socks-via-do.plist" && echo "plist OK" || echo "FAIL: нет plist" launchctl list | grep telegram-socks lsof -i :1081 -sTCP:LISTEN curl -x socks5h://127.0.0.1:1081 -sI --connect-timeout 10 https://api.telegram.org | head -5 ``` Лог: `/tmp/telegram-socks-tunnel-via-do.log`. ### 7. Запреты и конфликты - Не занимать **1081** сторонним ПО (N3). - Не два LaunchAgent на 1081 (N7). - Не отключать прокси в Telegram и ожидать тот же доступ «через туннель» (N2). | Порт | Назначение | |------|------------| | **1081** | Telegram SOCKS | | **10809** | Cursor IDE SOCKS | ### 8. Действия при сбое 1. П. 6 (контрольные проверки). 2. `tail -80 /tmp/telegram-socks-tunnel-via-do.log`. 3. **`Too many open files`**: обновить plist из репозитория, снова `install-via-do.sh`. 4. **`channel … open failed`**: часто сеть или следствие п.3; перезапуск туннеля после правок. 5. После правок `~/.ssh/config`: `stop` → `TELEGRAM_SOCKS_VIA_DO=1` → `start` или `kickstart`. 6. Прокси в Telegram по-прежнему включён (п. 5). 7. **`Connection timed out during banner exchange`** к RU: без доступа к **149.154.64.19** цепочка Mac→RU→DO **невозможна** — восстановите доступ к RU или временно используйте только-RU агент (`install.sh`) / другую сеть; автоматического SOCKS «напрямую в DO» нет. ### 9. Снятие автозапуска и откат - Via-DO: `./docs/connectivity/launchd/uninstall-via-do.sh`. - Переход на только-RU: `./docs/connectivity/launchd/install.sh` — см. **сценарий 2** ниже. --- ## Развёртывание с нуля (по сценариям) Общие требования: **macOS**; репозиторий **local_machine**; SSH без пароля к **209.38.32.21:2222** (hunab, `hunab_deploy_key`) и к **149.154.64.19** (ahau) — для SOCKS через DO нужен **оба** hop (Mac→RU→DO). ### Сценарий 1: основной — macOS, автозапуск (только Mac→RU→DO) Рекомендуемый вариант (регламент N1, N6). 1. Проверка SSH (для via-DO нужны **оба**): ```bash ssh -o BatchMode=yes -o ConnectTimeout=10 ahau@149.154.64.19 "echo OK" ssh -o BatchMode=yes -o ConnectTimeout=15 -i ~/.ssh/hunab_deploy_key -p 2222 hunab@209.38.32.21 "echo OK" ``` 2. Добавить в `~/.ssh/config` блок **`Host telegram-socks-via-do`** — [PROXY_GUIDE.md](./PROXY_GUIDE.md). 3. `ssh-add --apple-use-keychain` для `id_ed25519` и `hunab_deploy_key`. 4. Если ранее стоял агент только-RU: `./docs/connectivity/launchd/uninstall.sh`. 5. `./docs/connectivity/launchd/install-via-do.sh`. 6. В Telegram — прокси по таблице в **«Быстрые команды»**. 7. Проверки из п. 6 регламента. ### Сценарий 2: только RU-прокси (без DO) Если прямой выход с **149.154.64.19** до Telegram устойчив или для диагностики. **Не** ставить одновременно с via-DO на 1081 (N7). **Ручной туннель:** ```bash ./docs/connectivity/scripts/telegram-socks-tunnel.sh start ``` **Автозапуск:** `./docs/connectivity/launchd/install.sh` **Снятие:** `./docs/connectivity/launchd/uninstall.sh` Перед переходом на сценарий 1 — `uninstall.sh`, затем сценарий 1 с шага 5. ### Сценарий 3: без LaunchAgent, только ручной туннель (via-DO) Для отладки; после перезагрузки нужно снова поднимать вручную. ```bash export TELEGRAM_SOCKS_VIA_DO=1 ./docs/connectivity/scripts/telegram-socks-tunnel.sh start ``` Убедиться, что `~/.ssh/config` и ключи настроены как в сценарии 1 (шаги 1–3). Прокси в Telegram — как в таблице. ### Сценарий 4: смена с via-DO на only-RU или обратно - **На only-RU:** `./docs/connectivity/launchd/uninstall-via-do.sh`, затем `./docs/connectivity/launchd/install.sh`. - **Обратно на via-DO:** `./docs/connectivity/launchd/uninstall.sh`, затем `./docs/connectivity/launchd/install-via-do.sh`. Каждый раз проверять: один plist на 1081, `launchctl list | grep telegram-socks`. ### Сценарий 5: Linux (без LaunchAgent) Репозиторий и скрипт `docs/connectivity/scripts/telegram-socks-tunnel.sh`; автозапуск — **systemd**, **cron @reboot**, или ручной `start` как в сценарии 3. Plist macOS на Linux не используется. --- ## Ссылки - [PROXY_GUIDE.md](./PROXY_GUIDE.md) — прокси ru.hunab.app, `Host telegram-socks-via-do`, scp. - [launchd/README.md](./launchd/README.md) — LaunchAgent, логи, порты.