Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go 1.25) (pull_request) Successful in 20s
Tests / Test (Go stable) (pull_request) Successful in 22s
5.0 KiB
5.0 KiB
type, status, related
| type | status | related | ||
|---|---|---|---|---|
| reference | current |
|
rclone WebDAV mount — OnlyOffice Documents как файловая ФС
deploy/docker-compose.rclone-webdav.yml монтирует WebDAV-дерево OnlyOffice
через rclone. Не systemd, только compose. Контейнер — rclone-webdav.
Что монтируется
- Источник — сайдкар
oo-webdav(ghcr.io/eslider/oo-webdav). - Адрес —
http://172.17.0.1:8098, префикс/webdav. - Basic-auth — креды портала OnlyOffice (те же, что у
oo). - Корень —
Dokumente der Projekte/…(папкаFibu EDLвнутри).
Конфиг
- Образ —
rclone/rclone. - Remote — on-the-fly
:webdav:плюс флаги--webdav-url,--webdav-user,--webdav-pass. - На старте контейнер пишет
/config/rclone/rclone.conf([webdav]), чтобыrclone ls webdav:внутри контейнера работал без флагов. ONLYOFFICE_PASSWORD— plain; rclone сам зовётrclone obscure.- Флаги mount:
--vfs-cache-mode writes,--cache-dir /cache,--dir-cache-time 1m,--allow-other,--allow-non-empty. - FUSE:
cap_add: [SYS_ADMIN],devices: [/dev/fuse],security_opt: apparmor:unconfined. - Тома:
onlyoffice-mnt→/mnt/onlyoffice,rclone-cache→/cache.
env (только имена)
| Переменная | Значение |
|---|---|
ONLYOFFICE_USER |
пользователь портала |
ONLYOFFICE_PASSWORD |
пароль портала (алиас ONLYOFFICE_PASS) |
ONLYOFFICE_WEBDAV_URL |
по умолчанию http://172.17.0.1:8098/webdav |
Команды
# креды (или .env рядом с compose)
set -a; . .secrets/oo.env; set +a
docker compose -f deploy/docker-compose.rclone-webdav.yml up -d
docker compose -f deploy/docker-compose.rclone-webdav.yml ps
docker compose -f deploy/docker-compose.rclone-webdav.yml down
# дерево
docker exec rclone-webdav rclone ls webdav:
docker exec rclone-webdav rclone lsf webdav:
# содержимое точки монтирования
docker exec rclone-webdav ls /mnt/onlyoffice
# чтение/запись как обычная ФС
docker exec rclone-webdav cat "/mnt/onlyoffice/Meine Dokumente/x.txt"
Smoke (проверено 2026-09-16)
$ docker exec rclone-webdav rclone ls webdav:
5357109 Meine Dokumente/ONLYOFFICE-Audiobeispiel.mp3
44805 Meine Dokumente/ONLYOFFICE-Beispiel-Tabellenblatt.xlsx
58988 Meine Dokumente/ONLYOFFICE-Beispieldokument.docx
...
$ TS=20260916-212459
$ docker exec rclone-webdav sh -c "printf 'rclone-webdav round-trip $TS\n' \
> '/mnt/onlyoffice/Meine Dokumente/rclone-smoke-$TS/hello.txt'"
# ждём появления на сервере (host HTTP, мимо монтирования):
GET /webdav/Meine%20Dokumente/rclone-smoke-$TS/hello.txt -> 200 (через 7s)
server bytes: rclone-webdav round-trip 20260916-212459
# читаем обратно через монтирование:
mount read: rclone-webdav round-trip 20260916-212459
MATCH: yes
$ docker exec rclone-webdav rm -f \
"/mnt/onlyoffice/Meine Dokumente/rclone-smoke-$TS/hello.txt"
GET /webdav/Meine%20Dokumente/rclone-smoke-$TS/hello.txt -> 404 (через 1s)
# пустой каталог: rmdir через монтирование на сервер не доходит,
# удаляем напрямую:
$ docker exec rclone-webdav rclone rmdir "webdav:Meine Dokumente/rclone-smoke-$TS"
PROPFIND rclone-smoke-20260916-212459/ -> 404
no rclone-smoke leftovers
Вывод: запись → чтение → удаление файла подтверждены. Файл удалён.
Ограничения
- Нужен FUSE:
SYS_ADMIN+/dev/fuse. На хосте без FUSE не поедет. - Сайдкар слушает docker-bridge
172.17.0.1:8098, публично не выставлен. Только localhost/локальные контейнеры. - Запись идёт через VFS write-back (по умолчанию ~5s). Перед проверкой
«файл на сервере» опрашивать сервер, не доверять сразу после
write. rmdirчерез монтирование НЕ доходит доoo-webdav(пустой каталог остаётся на сервере). Удалять каталоги напрямую:rclone rmdir webdav:<path>илиrclone purge webdav:<path>.- VFS-кэш растёт в томе
rclone-cache; ограничить--vfs-cache-max-size. - Блокировок между редактором OnlyOffice и монтированием нет. Не редактировать один и тот же файл одновременно.
- Данные не шифруются на диске хоста в
rclone-cache(том Docker).