# Стабильная настройка: Joplin Mac ↔ телефон

Без облака и без VPN. Mac — WebDAV (rclone), телефон — клиент по HTTP в одной LAN (обычно **хотспот Android**).

---

## Схема

| Устройство | WebDAV URL |
|------------|------------|
| **Mac** | `http://127.0.0.1:8080` (никогда не менять) |
| **Телефон** | `http://<подсеть>.100:8080` — из `joplin-webdav-status.sh` |

На Mac **primary IP** Wi‑Fi = `*.100` через `networksetup -setmanual` (не ifconfig alias). Android маршрутизирует к **primary**; alias `.100` телефон часто не видит.

`.local` / mDNS **с Android-хотспота не работает** — только IP.

---

## Перед каждым синком (чеклист)

1. **Mac на Wi‑Fi хотспота этого телефона** — не домашний Wi‑Fi (отключить auto-join домашней сети).
2. На Mac:
   ```bash
   ./docs/apps/joplin/scripts/joplin-ensure-sync.sh
   ```
3. В выводе: `static IP: OK`, rclone слушает `:8080`.
4. **Телефон:** URL `http://<подсеть>.100:8080` — сначала проверить в **браузере** (логин за 2–3 сек), потом Joplin → синк.
5. В `~/Library/Logs/joplin-webdav/rclone.log` — `GET`/`PUT from <IP шлюза/телефона>`.

Переход на **домашний Wi‑Fi** (без Joplin с телефона):

```bash
./docs/apps/joplin/scripts/joplin-hotspot-alias.sh dhcp
```

---

## Установка (один раз)

```bash
./docs/apps/joplin/scripts/joplin-webdav-install.sh
./docs/apps/joplin/scripts/joplin-hotspot-alias-install.sh      # LaunchAgent
./docs/apps/joplin/scripts/joplin-hotspot-alias-install-sudo.sh # sudo без пароля
```

На телефоне в Joplin → WebDAV — URL из:

```bash
./docs/apps/joplin/scripts/joplin-webdav-status.sh
```

---

## После reconnect / смены подсети

```bash
./docs/apps/joplin/scripts/joplin-ensure-sync.sh
```

| Ситуация | URL на телефоне |
|----------|-----------------|
| Та же подсеть (`10.121.169.x` → `10.121.169.x`) | **Не менять** |
| Подсеть сменилась (`10.74.21.x` → `10.121.169.x`) | **Один раз** новый URL из `status` |
| Mac и телефон в одной домашней Wi‑Fi | `http://192.168.1.100:8080` (пример) |
| Mac на домашнем Wi‑Fi, телефон на мобильном | **Синк невозможен** — Mac к хотспоту телефона |

Если `static IP: MISSING`:

```bash
./docs/apps/joplin/scripts/joplin-hotspot-alias.sh repair
```

Сеть «умерла» после reconnect хотспота:

```bash
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
```

---

## Почему десктоп «синкается», а телефон — нет

Mac ходит на **`127.0.0.1:8080`** — всегда работает. Телефон зависит от:

1. **Одна сеть** — Mac и телефон в одной LAN
2. **Primary `.100`** — `static IP: OK` в status
3. **URL на телефоне = текущая подсеть** — не старый `10.74.21.100`
4. **rclone.log** — есть `GET`/`PUT from <IP>`

Joplin на Mac **скрывает** ошибки — смотреть `rclone.log`, не только UI.

---

## Подсети меняются

Без VPN нельзя иметь **один** URL при любой подсети. Фиксированный **хвост `.100`** минимизирует правки: меняется только префикс (`10.74` → `10.121` → `10.219`).

---

## История рабочих подсетей

| Дата | Подсеть | URL телефона |
|------|---------|--------------|
| 2026-06-09 | `10.219.227.x` | `http://10.219.227.100:8080` (setmanual) |
| 2026-06-19 | `10.74.21.x` | `http://10.74.21.100:8080` |
| 2026-07-04 | `10.121.169.x` | `http://10.121.169.100:8080` — **проверено, синк OK** (setmanual) |

---

## Связанное

- [RUNBOOK.md](./RUNBOOK.md) — диагностика
- [HOTSPOT_NETWORK_EMERGENCY.md](../../HOTSPOT_NETWORK_EMERGENCY.md)
