🔄 Синхронизация Obsidian: Linux + Android через WebDAV
Полное руководство по настройке синхронизации заметок Obsidian между компьютером (Linux) и мобильным устройством (Android) с использованием собственного веб-сервера.
📋 Варианты синхронизации
Перед началом настройки я рассмотрел несколько вариантов синхронизации:
| Способ | Плюсы | Минусы | Сложность |
|---|---|---|---|
| Obsidian Sync (официальный) | Работает из коробки, шифрование, версии | Платный ($4/мес) | ⭐ |
| iCloud Drive | Бесплатно, просто для Apple | Только Apple, | ⭐⭐ |
| WebDAV + Remotely Save | Бесплатно, свой сервер, кроссплатформа | Требует настройки сервера | ⭐⭐⭐ |
| Syncthing | Бесплатно, приватно, P2P | Оба устройства должны быть онлайн | ⭐⭐⭐⭐ |
| Git + Obsidian Git | Полный контроль, версии | Требует знаний Git, нет realtime | ⭐⭐⭐⭐⭐ |
✅ Выбор: Остановился на WebDAV + Remotely Save, так как уже был настроен веб-сервер на Debian 12, а синхронизация должна работать между Linux и Android без дополнительных затрат.
🛠 Часть 1: Настройка Nginx + WebDAV
Шаг 1: Установка Nginx с модулем WebDAV
sudo apt update
sudo apt install nginx nginx-extras
Проверьте наличие модуля WebDAV:
nginx -V 2>&1 | grep -i dav
🔍 Дебаг #1: Если модуль не найден — установите
nginx-extras. В моём случае модуль --with-http_dav_module уже был встроен.Шаг 2: Создание папки для хранилища
sudo mkdir -p /var/www/obsidian/vadivan
sudo chown -R www-data:www-data /var/www/obsidian/vadivan
sudo chmod -R 755 /var/www/obsidian/vadivan
Шаг 3: Создание пользователя для авторизации
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.dav-password vadivan
Введите пароль дважды при запросе.
Шаг 4: Настройка конфигурации Nginx
sudo nano /etc/nginx/sites-available/obsidian-webdav
Вставьте следующий конфиг:
server {
listen 80;
server_name _;
charset utf-8;
charset_types text/plain text/css application/json application/javascript text/xml application/xml;
location /webdav/ {
alias /var/www/obsidian/vadivan/;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.dav-password;
autoindex on;
autoindex_format html;
autoindex_localtime on;
add_header DAV "1";
add_header MS-Author-Via "DAV";
client_max_body_size 0;
client_body_timeout 60s;
send_timeout 60s;
}
}
🔍 Дебаг #2: Директива
charset utf-8; решает проблему с отображением русских имён файлов в браузере. Без неё будут "кракозябры".🔍 Дебаг #3:
autoindex on; разрешает просмотр списка файлов в браузере. Без этой директивы будет ошибка 403.Активируйте конфиг и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/obsidian-webdav /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl restart nginx
⚠️ Важно: Удалите конфиг
default из sites-enabled, иначе он будет перехватывать запросы и вызывать ошибку 404.Шаг 5: Проверка работы WebDAV
curl -u vadivan http://ВАШ_IP/webdav/ -X PROPFIND -v
Ожидаемый результат: HTTP/1.1 207 Multi-Status
🔍 Дебаг #4: Если получаете 403 — проверьте права на папку и файл с паролями:
ls -la /var/www/obsidian/vadivan/Файл паролей должен быть читаем для пользователя
ls -la /etc/nginx/.dav-password
www-data.🔌 Часть 2: Настройка плагина Remotely Save
Шаг 1: Установка плагина на ПК (Linux)
- Откройте Obsidian → Settings → Community plugins
- Отключите Restricted mode
- Найдите и установите плагин Remotely Save
- Включите плагин
Шаг 2: Настройка подключения
| Параметр | Значение |
|---|---|
| Service type | WebDAV |
| WebDAV URL | http://ВАШ_IP/webdav/ |
| Username | vadivan |
| Password | ваш пароль |
| Change The Remote Base Directory | vadivan (имя папки хранилища!) |
🔍 Дебаг #5 (КРИТИЧНО): Плагин на ПК автоматически создаёт подпапку с именем vault на сервере. В логах это видно как
PROPFIND /webdav/vadivan/. На Android нужно указать то же самое значение в Change The Remote Base Directory, иначе синхронизация будет работать с пустой папкой. Либо хранилища должны называться одинаково на всех устройствах.Шаг 3: Настройка на Android
- Установите Obsidian из Google Play
- Создайте новый пустой Vault локально
- Установите плагин Remotely Save (через Community plugins)
- Введите те же настройки, что и на ПК
- Нажмите Check → появится сообщение "Great! The webdav server can be accessed."
⚠️ Важно для Android: Дайте приложению Obsidian разрешение на доступ ко всем файлам в настройках системы. На Android 11+ доступ к некоторым папкам ограничен.
Шаг 4: Настройка автосинхронизации
В настройках плагина на обоих устройствах:
- Включите Sync on startup (синхронизация при запуске)
- Опционально: Auto sync interval (например, каждые 5 минут)
Шаг 5: Бекап локальной базы
💾 Важно: Перед началом синхронизации сделайте резервную копию вашей локальной базы Obsidian. Для этого просто скопируйте весь каталог с хранилищем в безопасное место:
cp -r ~/path/to/your/vault ~/backup/vault-backup-$(date +%Y%m%d)Это позволит восстановить данные в случае непредвиденных проблем при синхронизации.
🧪 Проверка синхронизации
- На ПК создайте тестовую заметку
Test.md - На ПК нажмите кнопку синхронизации в Remotely Save
- На Android нажмите синхронизацию
- Проверьте, что заметка появилась на телефоне
✅ Успех: Если заметка синхронизировалась в обе стороны — настройка завершена!
📊 Мониторинг и отладка
Полезные команды для диагностики:
# Логи Nginx в реальном времени
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
# Проверка прав на папку
ls -la /var/www/obsidian/vadivan/
# Проверка подключения
curl -u vad http://ВАШ_IP/webdav/ -X PROPFIND -v
# Перезагрузка Nginx
sudo nginx -t && sudo systemctl restart nginx
⚠️ Важные правила
| Правило | Причина |
|---|---|
| Не редактируйте одну заметку одновременно на двух устройствах | Будет конфликт версий |
| Не используйте две системы синхронизации для одного vault | Приведёт к потере данных |
| Всегда делайте синхронизацию перед закрытием Obsidian | Чтобы не потерять изменения |
| Периодически проверяйте логи сервера | Для раннего обнаружения проблем |
🔒 Рекомендации по безопасности
Сейчас данные передаются по HTTP. Для продакшена рекомендуется:
- Настройте HTTPS через Let's Encrypt:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ваш-домен.ru - Ограничьте доступ по IP в конфиге Nginx
- Настройте регулярные бэкапы папки vault на сервере
✅ Финальный чек-лист
- Nginx установлен и запущен
- WebDAV настроен и проверен через curl
- Файлы с русскими именами отображаются корректно
- Сделан бекап локальной базы Obsidian
- Плагин Remotely Save установлен на ПК и Android
- Change The Remote Base Directory одинаковый на всех устройствах
- Первая синхронизация прошла успешно
- Автосинхронизация настроена
- Тестовая заметка синхронизировалась в обе стороны
Время настройки: ~1 час | Сложность: средняя | Стоимость: бесплатно