Android-приложение: доступ к файлам и автобэкап через dixsu-туннель¶
CIFS Documents Provider (dix.su) — форк wa2c/cifs-documents-provider (MIT) с нативной поддержкой dixsu-туннеля. Позволяет открывать файлы устройства прямо в системном файловом пикере Android (как Google Диск/Яндекс Диск) и настраивать автоматический бэкап (фото и т.д.) — встроенными средствами приложения или через сторонние приложения синхронизации — без Termux, без root, без ручной настройки ProxyCommand.
- Исходники: gitlab.com/dixsu/applications/android/cifs-documents-provider (зеркало на GitHub)
- Скачать APK: v2.4.0-dixsu.12 — подписан production-ключом dix.su (не debug)
applicationId:su.dix.cifsdocumentsprovider— устанавливается независимо от оригинального приложения wa2c, конфликтов нет
RuStore / F-Droid
Публикация в RuStore и F-Droid в процессе. Пока единственный канал — GitHub Releases выше.
Установка¶
- Скачай APK: v2.4.0-dixsu.12 → файл
CIFSDocumentsProvider-*-release.apkв Assets. - Открой скачанный файл — Android попросит разрешить установку из этого источника (стандартный запрос при первой установке).
- Если раньше стояла старая тестовая сборка под другим
applicationId— удали её вручную, автообновление между разнымиapplicationIdневозможно.
Настройка SFTP-соединения через dixsu-туннель¶
- Добавь новое соединение → Storage: SSH FTP (Apache Commons).
- Включи тумблер «dixsu tunnel».
- В поле Slug укажи имя устройства на dix.su (то, что до
.dix.suв его адресе) — Host/Port подставятся и заблокируются автоматически (<slug>.dix.su:2222). - «Do not check SSH trusted hosts» включится автоматически — так и должно быть: проверка ключа хоста иначе шла бы против локального конца туннеля, а не против реального устройства.
- Укажи обычные User/Password (или SSH-ключ) устройства — это учётные данные самого устройства, к dix.su как сервису отношения не имеют.
- Check connection (иконка папки со стрелкой вверху экрана) → Save.
Дальше файлы устройства доступны через системный пикер Android в любом SAF-совместимом файловом
менеджере: Total Commander (плагин content/SAF в списке File system plugins → системный
пикер → выбрать соединение → постоянный доступ к папке), X-plore, Material Files,
стандартное приложение «Файлы».
Локальный SFTP-прокси — автобэкап фото и другие приложения¶
Системный пикер (SAF) — это просто способ, которым другие приложения видят хранилище, а не протокол передачи данных и не механизм фонового пуш-синка. Чтобы получить автобэкап вроде Google Photos, приложению нужен обычный прямой SFTP-доступ, в обход SAF.
В форме SFTP-соединения с включённым dixsu tunnel есть секция «Local SFTP proxy»:
- Чекбокс «Keep proxy running (auto-restart if stopped)» поднимает локальный TCP-порт
127.0.0.1:<port>на телефоне. Любое приложение, умеющее подключаться по обычному SFTP (например, FolderSync, Autosync), может подключиться к этому адресу с теми же логином/паролем, что в самом соединении. - Порт детерминированный (вычисляется из ID соединения) — не меняется между запусками прокси, один раз настроенный адрес в стороннем приложении не «протухает».
- Copy address — копирует
127.0.0.1:<port>в буфер обмена. - Пока чекбокс включён, прокси держится в фоне (постоянное уведомление), переживает сворачивание приложения и сам переподнимается при каждом запуске процесса приложения, если упал — ничего вручную делать не нужно. Снятие галочки останавливает прокси.
Обязательный шаг — отключить оптимизацию батареи
Если приложение не исключено из оптимизации батареи, Android (особенно не-stock прошивки вроде MIUI) рано или поздно заморозит фоновый процесс — прокси перестанет отвечать, хотя само приложение не крашится. В той же секции есть кнопка «Disable battery optimization» — тап открывает системный диалог «Let app always run in background?»; после Allow предупреждение пропадает автоматически.
Автопереподнятие не переживает полную перезагрузку телефона без единого открытия приложения
Переподнятие срабатывает при каждом запуске процесса приложения — как ручном открытии, так и когда систему поднимает обращение стороннего приложения к DocumentsProvider. Но если сразу после полной перезагрузки телефона ни разу не открыть приложение и ни одно другое приложение к нему не обратится — процесс не запустится, и прокси не поднимется, пока приложение не будет открыто хотя бы раз. Полноценный автозапуск с самой загрузки системы потребовал бы отдельного BOOT_COMPLETED-разрешения, которого сейчас в приложении нет.
Встроенный бэкап (без стороннего приложения)¶
Помимо прокси, в самом приложении есть два режима бэкапа — секция «Backup» в форме соединения (работает для любого типа хранилища, не только dixsu tunnel). Не нужен ни прокси, ни FolderSync — только это приложение.
Select folder to back up — обычный системный SAF-пикер, выбираешь локальную папку один раз.
- «Sync now» — рекурсивно обходит папку и подпапки по кнопке, грузит новые (по имени) файлы, пропуская уже существующие. Надёжно, но работает только пока экран соединения открыт.
- «Auto backup» — чекбокс рядом; раз в ~15 минут (минимальный интервал, который Android вообще разрешает для фоновых периодических задач) делает то же самое в фоне, без необходимости держать приложение открытым. Включается/выключается по нажатию Save. Как и для прокси, для надёжного расписания нужно исключить приложение из оптимизации батареи (кнопка в той же форме) — и точно так же не переживает полную перезагрузку телефона без единого запуска приложения после неё.
По умолчанию файлы грузятся в корень соединения; конкретную целевую подпапку можно выбрать (или создать новую кнопкой «+») в поле «Folder» формы соединения.
Что выбрать — встроенный бэкап или прокси + FolderSync
Нужен только бэкап на dixsu-устройство без лишних приложений — используй встроенный. Нужна более тонкая настройка (двусторонняя синхронизация, фильтры, мгновенный старт по появлению файла) — используй прокси + FolderSync/Autosync ниже, они умеют больше.
Настройка автобэкапа фото через FolderSync¶
Шаг 0. В приложении: открой соединение → включи «Keep proxy running» → Copy address
(например, 127.0.0.1:42495 — у каждого соединения свой порт).
Шаг 1 — Account в FolderSync:
- Accounts → + → тип SFTP.
- Server:
127.0.0.1, Port: скопированное число (не 22/2222 — именно порт прокси). - Username / Password: те же, что в самом SFTP-соединении в приложении.
- Test connection (в этот момент в приложении должно быть видно «Proxy running»).
- Сохранить.
Шаг 2 — Folderpair:
- Folderpairs → + → выбрать созданный Account.
- Local folder: например
DCIM/Camera. - Remote folder: путь на удалённом устройстве (браузер откроется через тот же прокси).
- Sync type: Local to Remote.
- Schedule: по таймеру или Instant Sync (сразу при новом файле, больше расход батареи).
Диагностика проблем¶
| Симптом | Причина | Решение |
|---|---|---|
| Прокси постоянно «падает» / приложение синхронизации теряет соединение | Android/OEM убивает фоновый процесс без разрешения на работу в фоне | Кнопка «Disable battery optimization» в секции прокси → Allow |
| Test connection в FolderSync не проходит | Прокси не запущен, или скопирован не тот порт | Убедиться, что в приложении видно «Proxy running: 127.0.0.1:XXXXX», использовать именно этот порт |
| После нового соединения адрес изменился | Порт зависит от ID соединения — новое соединение = новый ID = новый порт | Ожидаемо для нового соединения; для одного и того же сохранённого соединения порт стабилен |
| В файловом менеджере не видно соединения | Менеджер не поддерживает SAF/DocumentsProvider | Использовать SAF-совместимый менеджер (Total Commander с content-плагином, X-plore, Material Files) |
| «Sync now» / «Auto backup» грузит не все файлы | Файл с таким же именем уже существует на удалённой стороне | Так и задумано — существующие файлы не перезаписываются автоматически |
| «Auto backup» срабатывает нерегулярно | Android откладывает фоновые задачи без исключения из оптимизации батареи | Кнопка «Disable battery optimization» → Allow |
Ссылки¶
- Исходники (основной): gitlab.com/dixsu/applications/android/cifs-documents-provider
- Зеркало на GitHub (релизы): github.com/ramanzes/dix.su.cifsdocumentsprovider
- CHANGELOG проекта
- FAQ проекта
- Оригинальное приложение (без dixsu-туннеля): wa2c/cifs-documents-provider