Nextcloud: мобильная синхронизация в локальной сети и извне
Как настроить мобильную синхронизацию Nextcloud без дубликатов: используйте единый URL, hairpin NAT или локальный DNS, настройте клиент и права на TrueNAS.
Как правильно настроить мобильную синхронизацию Nextcloud как извне, так и из локальной сети?
Установил Nextcloud на TrueNAS сервере с белым IP-адресом, проброшенными портами и доменным именем. Доступ через браузер работает корректно из любой локации, но при этом внутри домашней сеть скорость значительно выше.
При настройке автоматической синхронизации через мобильное приложение Nextcloud возникла проблема: настроил два сервера (локальный и внешний) на одном аккаунте пользователя, но при синхронизации файлы дублируются на сервере.
Цель: автоматическое резервирование данных при нахождении вне дома и высокая скорость синхронизации внутри сети без создания дубликатов файлов.
Вопрос:
- Возможно ли это связано с неправильной конфигурацией самого Nextcloud?
- Как правильно настроить систему для достижения желаемого результата?
- Нужно ли настраивать перенаправление запросов с белого IP-адреса из локальной сети, чтобы они не маршрутизировались через внешние серверы?
- На каком уровне (в приложении на телефоне, в роутере или в настройках Nextcloud) следует настраивать такую переадресацию?
Мобильная синхронизация Nextcloud в локальной сети и извне работает идеально, если использовать один URL для сервера независимо от локации — это исключает дубликаты файлов, которые возникают при добавлении двух аккаунтов (локального IP и внешнего домена). Проблема не в конфигурации самого Nextcloud, а в поведении клиента: он видит их как разные серверы и синхронизирует независимо. Настройте hairpin NAT на роутере или локальный DNS, чтобы домен всегда разрешался правильно, обеспечивая высокую скорость дома и резерв извне без дублей.
Содержание
- Почему файлы дублируются при двух серверах в Nextcloud
- Это проблема Nextcloud или мобильного клиента?
- Hairpin NAT: перенаправление трафика внутри локальной сети
- Локальный DNS или правки в /etc/hosts
- Настройки мобильного приложения Nextcloud на Android
- Интеграция Nextcloud с TrueNAS: права и хранилище
- Пошаговая настройка и проверка
- Источники
- Заключение
Почему файлы дублируются при двух серверах в Nextcloud
Представьте: вы добавляете в мобильное приложение Nextcloud два сервера — один по локальному IP (скажем, 192.168.1.100), другой по внешнему домену (nextcloud.yourdomain.com). Клиент не понимает, что это один и тот же Nextcloud. Он регистрирует их как отдельные аккаунты или связи, и при автозагрузке фото/видео файлы улетают на сервер дважды. Дубли возникают на сервере в разных папках или с суффиксами вроде “-conflict”.
Это классика, описанная в форуме Nextcloud. Мобильный клиент не зеркалит весь сервер, как десктопный, а фокусируется на автоаплоаде. Если адреса разные, он не сопоставляет файлы по хэшу или ETag — просто дублирует. А вы хотели резервирования? Забудьте о “двух серверах” — это не резерв, а конфликт.
Ваша скорость дома выше по IP? Логично: трафик не уходит на WAN. Но извне по домену — через интернет, с задержками. Цель достижима одним адресом везде.
Это проблема Nextcloud или мобильного клиента?
Нет, Nextcloud настроен верно — браузер работает везде, значит trusted_domains в config.php ок, порты проброшены, белый IP на месте. Проблема в клиенте. Официальная документация по мобильной синхронизации подчёркивает: приложение не зеркалит всё, а делает автоаплоад фото/видео по URL сервера.
Два URL = два сервера для клиента. В обсуждении на GitHub пользователи просят локальную подсеть, но пока это не реализовано стандартно. На TrueNAS добавьте: если датасет SMB, Nextcloud увидит файлы медленно — форум TrueNAS рекомендует external storage с правами для www.
Решение не в Nextcloud (occ scan-files или rescan не поможет с дублями от клиента). Идём на уровень сети или приложения.
Hairpin NAT: перенаправление трафика внутри локальной сети
Да, именно это нужно! Hairpin NAT (или NAT loopback/reflection) заставляет роутер перенаправлять запросы с вашего домена (nextcloud.yourdomain.com) внутри LAN обратно на локальный IP сервера. Трафик не уходит наружу — скорость как по IP, но один URL в клиенте.
Почему? Роутер видит запрос к публичному IP как локальный и “заворачивает” его. Без этого — петля: LAN → WAN → обратно.
Проверьте поддержку: в pfSense/OPNsense — включите NAT Reflection. На Keenetic/Asus — “NAT Loopback” или VIP. Подробно в гайде по AIO Nextcloud: domain check AIO не принимает RFC1918, так что hairpin must-have.
Шаги:
- В роутере: Port Forward 80/443 → 192.168.1.100:80/443.
- Включите Hairpin: правило “Source LAN, Dest WAN IP → redirect to LAN IP”.
- Перезагрузите DNS кэш на телефоне.
Готово — один аккаунт в приложении, скорость дома max, извне резерв.
Не поддерживает роутер? Переходим к DNS.
Локальный DNS или правки в /etc/hosts
Альтернатива hairpin: заставьте домен разрешаться в локальный IP внутри сети. Просто и без роутера.
Вариант 1: Локальный DNS-сервер. Pi-hole/Unbound/AdGuard Home — добавьте запись nextcloud.yourdomain.com → 192.168.1.100. Укажите его как DNS в роутере/DHCP. Телефон подхватит автоматически.
Вариант 2: /etc/hosts на устройствах. На Android root’нутом — отредактируйте. Но для мобильного проще SSID-ограничения.
Пример из хостинга: добавьте в /etc/hosts домен = локальный IP. StackOverflow подтверждает: “По внутреннему IP и делов”.
Плюсы: нет петель, скорость локальная. Минусы: нужно поддерживать записи. Для TrueNAS — ок, если jail-контейнер.
Команда проверки: nslookup nextcloud.yourdomain.com дома и вне — дома локальный IP.
Настройки мобильного приложения Nextcloud на Android
Уровень приложения — ключевой для мобильной синхронизации Nextcloud. Не добавляйте два сервера! Один аккаунт по домену.
В приложении:
- Укажите внешний URL (nextcloud.yourdomain.com).
- В “Настройки → Автозагрузка”: “Разрешённые Wi-Fi SSID” — добавьте домашнюю сеть. Синхронизация только дома/по hairpin.
- “При конфликте”: “Заменять серверный” или “Локальный” — по примеру с Habr.
- Отключите “Фоновая синхронизация” вне дома, если не нужно.
Если hairpin/DNS настроен, клиент не заметит разницы. Документация WebDAV подходит для файлов. Нет локальной подсети? Ждите апдейта или VPN.
Тестируйте: фото с камеры — одно на сервере.
Интеграция Nextcloud с TrueNAS: права и хранилище
На TrueNAS nextcloud (324 поиска!) — частая тема. Дубли не оттуда, но скорость/стабильность да.
- Датасет: не SMB-share в Nextcloud — медленно, как middle-man. Используйте local path или external storage.
- Права: chown -R www:www /mnt/nextcloud/data. Нет ACL! TrueNAS форум.
- Jail/App: в SCALE — TrueCharts app, укажите dataset.
Это обеспечит чистую синхронизацию без локальных дублей.
Пошаговая настройка и проверка
- Выберите метод: Hairpin (роутер) или DNS (Pi-hole).
- Настройте: Доменный URL везде.
- Клиент: Удалите старые аккаунты, добавьте один. SSID whitelist.
- Проверьте:
curl -I https://nextcloud.yourdomain.comдома — 200, без редиректов.- Traceroute: не уходит на WAN.
- occ files:scan --all (в Nextcloud CLI).
- Загрузите фото дома/вне — одно на сервере.
- Резерв: Cron rsync /data → backup, не два Nextcloud.
Если дублей нет — цель достигнута. Скорость дома как по IP.
Источники
- GitHub Nextcloud AIO: Hairpin NAT
- Nextcloud Forum: Дубли при sync
- Официальная документация: Мобильная синхронизация
- TrueNAS Forum: Интеграция с Nextcloud
- Habr: Настройка мобильного клиента
- GitHub Android: Local network
- Nextcloud Help: Hairpin NAT
Заключение
Мобильная синхронизация Nextcloud с высокой скоростью дома и резервом извне без дублей — реальность через hairpin NAT или локальный DNS на роутере/сети. Не настраивайте два сервера в клиенте — один домен везде, с whitelist SSID. На TrueNAS следите за правами www. Протестируйте curl и scan — и наслаждайтесь стабильностью. Если роутер упрямый, Pi-hole спасёт день.