# Syncthing — TrueNAS ↔ Android **Статус:** ✅ контейнер на TrueNAS работает, Caddy настроен, порт 22000 проброшен на OpenWrt, синхронизация работает ## Архитектура ``` Android (Syncthing app) │ P2P sync (QUIC/TCP :22000) ▼ TrueNAS (syncthing контейнер) /var/syncthing/obsidian-vault → /mnt/RED_2TB/storage/obsidian │ ├── Obsidian vault (полная копия на TrueNAS) └── Eagle (Mac) — продолжает через git, Syncthing не участвует ``` ## Доступ - **Web UI:** https://syncthing.mallexxx.duckdns.org - **Авторизация:** встроенная GUI Authentication Syncthing (не Caddy basic_auth) - **Локально на TrueNAS:** `http://localhost:8384` - **Порт синхронизации (WAN):** TCP+UDP 22000 — проброшен на OpenWrt через DNAT на 192.168.2.197:22000 > ⚠️ Для прямой синхронизации через мобильный интернет необходим проброс порта 22000 на роутере. Без него телефон может соединиться только через relay-сервера. ## Контейнер **Compose:** `/mnt/RED_2TB/docker/syncthing/docker-compose.yml` ```yaml services: syncthing: image: syncthing/syncthing:latest container_name: syncthing hostname: syncthing-taiga restart: unless-stopped user: "950:950" environment: - PUID=950 - PGID=950 - TZ=Asia/Novosibirsk volumes: - /mnt/RED_2TB/docker/syncthing/config:/var/syncthing/config - /mnt/RED_2TB/storage/obsidian:/var/syncthing/obsidian-vault ports: - "22000:22000/tcp" - "22000:22000/udp" - "21027:21027/udp" networks: - caddy_default networks: caddy_default: external: true ``` **UID 950** = `truenas_admin` — имеет `FULL_CONTROL` ACL на `/mnt/RED_2TB/storage/obsidian`. ## Caddy В `/mnt/RED_2TB/docker/caddy/Caddyfile`: ``` syncthing.mallexxx.duckdns.org { reverse_proxy syncthing:8384 } ``` Без basic_auth — защита через встроенную GUI Authentication Syncthing. ## Настройка на телефоне 1. Установить Syncthing (F-Droid или Play Market) 2. Добавить устройство сервера (сканировать QR код или ввести Device ID) 3. Нажать на устройство → цепочка/ссылка (Addresses) → вписать: ``` tcp://syncthing.mallexxx.duckdns.org:22000, quic://syncthing.mallexxx.duckdns.org:22000 ``` 4. Добавить папку `obsidian-vault`, указать локальный путь (например `~/Documents/Obsidian`) 5. Настроить File Versioning (рекомендуется `Trash can`, 30 дней) 6. Включить синк ## Настройка после развёрта 1. Открыть https://syncthing.mallexxx.duckdns.org 2. Settings → GUI → установить **GUI Authentication User** и **GUI Authentication Password** 3. Добавить папку: **Add Folder** - Folder Label: `obsidian-vault` - Folder ID: `obsidian-vault` - Folder Path: `/var/syncthing/obsidian-vault` - File Versioning: по желанию (Trash can / Simple) ## Поведение - **Фон:** Syncthing работает через `Foreground Service` — на Samsung One UI стабильно - **Конфликты:** Автоматически — создаёт `.filename.sync-conflict--.md` (скрытые файлы с точкой) - **Настройка конфликтов:** В настройках папки можно убрать точку — `Store conflict files with version extension (not Hidden)` - **Автоудаление конфликтов:** `File Versioning` → `Trash can` → очищать через N дней ## Обслуживание ```bash # Логи docker logs syncthing --tail 20 # Рестарт docker compose -f /mnt/RED_2TB/docker/syncthing/docker-compose.yml restart # Остановка docker compose -f /mnt/RED_2TB/docker/syncthing/docker-compose.yml down ``` ## Связанные заметки - [[obsidian-android-sync]] — git-based синк (альтернатива через Gitea) - [[obsidian-sync]] — общая архитектура sync Eagle ↔ Taiga ↔ Kraken - [[truenas-infrastructure]] — TrueNAS инфраструктура - [[truenas-access]] — доступ к TrueNAS и OpenWrt