121 lines
4.0 KiB
Markdown
121 lines
4.0 KiB
Markdown
---
|
||
tags:
|
||
- syncthing
|
||
- truenas
|
||
- android
|
||
- obsidian
|
||
- sync
|
||
- how-to
|
||
created: '2026-05-29'
|
||
updated: '2026-05-29'
|
||
status: active
|
||
---
|
||
# Syncthing — TrueNAS ↔ Android
|
||
|
||
**Статус:** ✅ контейнер на TrueNAS работает, Caddy настроен
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
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`
|
||
|
||
## Контейнер
|
||
|
||
**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. Открыть 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)
|
||
4. На телефоне Android: установить Syncthing (из F-Droid или Play Market)
|
||
- Добавить устройство (сканировать QR код сервера или ввести Device ID)
|
||
- Добавить ту же папку `obsidian-vault`, указать локальный путь (например `~/Documents/Obsidian`)
|
||
- Настроить File Versioning (рекомендуется `Trash can`, 30 дней)
|
||
- Включить синк
|
||
|
||
## Поведение
|
||
|
||
- **Фон:** 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 инфраструктура
|