Track day metrics/anamnesis HARD rules under .cursor/rules and personal docs so each screening updates days/{KIN}, dynamics, and big-data ledger.
Co-authored-by: Cursor <cursoragent@cursor.com>
115 lines
4.3 KiB
Markdown
115 lines
4.3 KiB
Markdown
# Стабильная настройка: 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)
|