120 lines
4.6 KiB
Markdown
120 lines
4.6 KiB
Markdown
# 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-<date>-<device>.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
|