Сети

Nextcloud: мобильная синхронизация в локальной сети и извне

Как настроить мобильную синхронизацию Nextcloud без дубликатов: используйте единый URL, hairpin NAT или локальный DNS, настройте клиент и права на TrueNAS.

Как правильно настроить мобильную синхронизацию Nextcloud как извне, так и из локальной сети?

Установил Nextcloud на TrueNAS сервере с белым IP-адресом, проброшенными портами и доменным именем. Доступ через браузер работает корректно из любой локации, но при этом внутри домашней сеть скорость значительно выше.

При настройке автоматической синхронизации через мобильное приложение Nextcloud возникла проблема: настроил два сервера (локальный и внешний) на одном аккаунте пользователя, но при синхронизации файлы дублируются на сервере.

Цель: автоматическое резервирование данных при нахождении вне дома и высокая скорость синхронизации внутри сети без создания дубликатов файлов.

Вопрос:

  1. Возможно ли это связано с неправильной конфигурацией самого Nextcloud?
  2. Как правильно настроить систему для достижения желаемого результата?
  3. Нужно ли настраивать перенаправление запросов с белого IP-адреса из локальной сети, чтобы они не маршрутизировались через внешние серверы?
  4. На каком уровне (в приложении на телефоне, в роутере или в настройках Nextcloud) следует настраивать такую переадресацию?

Мобильная синхронизация Nextcloud в локальной сети и извне работает идеально, если использовать один URL для сервера независимо от локации — это исключает дубликаты файлов, которые возникают при добавлении двух аккаунтов (локального IP и внешнего домена). Проблема не в конфигурации самого Nextcloud, а в поведении клиента: он видит их как разные серверы и синхронизирует независимо. Настройте hairpin NAT на роутере или локальный DNS, чтобы домен всегда разрешался правильно, обеспечивая высокую скорость дома и резерв извне без дублей.


Содержание


Почему файлы дублируются при двух серверах в 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.

Шаги:

  1. В роутере: Port Forward 80/443 → 192.168.1.100:80/443.
  2. Включите Hairpin: правило “Source LAN, Dest WAN IP → redirect to LAN IP”.
  3. Перезагрузите 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. Не добавляйте два сервера! Один аккаунт по домену.

В приложении:

  1. Укажите внешний URL (nextcloud.yourdomain.com).
  2. В “Настройки → Автозагрузка”: “Разрешённые Wi-Fi SSID” — добавьте домашнюю сеть. Синхронизация только дома/по hairpin.
  3. “При конфликте”: “Заменять серверный” или “Локальный” — по примеру с Habr.
  4. Отключите “Фоновая синхронизация” вне дома, если не нужно.

Если 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.

Это обеспечит чистую синхронизацию без локальных дублей.


Пошаговая настройка и проверка

  1. Выберите метод: Hairpin (роутер) или DNS (Pi-hole).
  2. Настройте: Доменный URL везде.
  3. Клиент: Удалите старые аккаунты, добавьте один. SSID whitelist.
  4. Проверьте:
  • curl -I https://nextcloud.yourdomain.com дома — 200, без редиректов.
  • Traceroute: не уходит на WAN.
  • occ files:scan --all (в Nextcloud CLI).
  • Загрузите фото дома/вне — одно на сервере.
  1. Резерв: Cron rsync /data → backup, не два Nextcloud.

Если дублей нет — цель достигнута. Скорость дома как по IP.


Источники

  1. GitHub Nextcloud AIO: Hairpin NAT
  2. Nextcloud Forum: Дубли при sync
  3. Официальная документация: Мобильная синхронизация
  4. TrueNAS Forum: Интеграция с Nextcloud
  5. Habr: Настройка мобильного клиента
  6. GitHub Android: Local network
  7. Nextcloud Help: Hairpin NAT

Заключение

Мобильная синхронизация Nextcloud с высокой скоростью дома и резервом извне без дублей — реальность через hairpin NAT или локальный DNS на роутере/сети. Не настраивайте два сервера в клиенте — один домен везде, с whitelist SSID. На TrueNAS следите за правами www. Протестируйте curl и scan — и наслаждайтесь стабильностью. Если роутер упрямый, Pi-hole спасёт день.

Авторы
Проверено модерацией
Модерация
Nextcloud: мобильная синхронизация в локальной сети и извне