Об этом проекте

PKV Sync позволяет вам запустить собственную службу синхронизации для хранилищ Obsidian, не полагаясь на управляемое облако. Он распространяется как единый бинарный файл, который хранит метаданные в одной базе данных SQLite и каждое хранилище как голый репозиторий git, поэтому не требуется кластер, объектное хранилище или управляемая служба. README написан на английском языке, а проект лицензирован под AGPL-3.0-only. Основные возможности, описанные в README: - Многопользовательская, многохранилищная синхронизация через аутентифицированные устройства, с блокировками push на уровне хранилища и идемпотентными повторными попытками. - Обновление в реальном времени: небольшие правки доставляются за доли секунды через Server-Sent Events, с сохранением опроса в качестве резервного варианта. - Git как источник истины: каждое хранилище является голым репозиторием git, что обеспечивает историю по файлам, унифицированный диф и восстановление отдельных файлов как в плагине, так и в административной панели. - Обработка конфликтов: плагин не перезаписывает локальные правки молча; конфликты появляются как файлы .conflict-* с одно-кнопочным разрешением. - Административная панель доступна на пяти языках (английский, упрощенный китайский, традиционный китайский, японский, корейский) для пользователей, токенов устройств, хранилищ, приглашений, активности и сборки мусора BLOB, с диалогами подтверждения для разрушительных действий. - Инструменты чтения/записи MCP доступны через stdio, автономный Streamable HTTP или встроенный маршрут /mcp на процессе сервера, ориентированные на читаемые ИИ хранилища. - Настройки безопасности по умолчанию: политика паролей уровня настройки для созданных администратором паролей, одноразовые секреты токенов, ограничения размера на загрузки и ответы MCP, а также повторная проверка отозванных токенов на активных потоках SSE. Развертывание: рекомендуемый путь — Docker Compose с Caddy в deploy/caddy/, завершающий HTTPS через Let's Encrypt, в то время как сервер слушает на 127.0.0.1:6710 внутри сети compose. Настройка требует домена с записями A/AAAA и доступных портов 80 и 443. Шаги включают генерацию ключа развертывания с помощью команды genkey, создание config.toml с разделами server, storage, network и MCP, редактирование Caddyfile для вашего домена, запуск docker compose up -d, затем создание первого администратора по URL /setup и установку zip-файла плагина в папку .obsidian/plugins/pkv-sync/ хранилища. Нативные установки, настройка обратного прокси (Caddy, Nginx, Traefik), семантика public_host, резервное копирование/восстановление и шифрование диска описаны в руководстве по укреплению развертывания. Режимы MCP: встроенный режим включается через флаг конфигурации, который монтирует /mcp на основной порт сервера, разделяя завершение TLS, обратный прокси, ключ развертывания и принудительное использование токена bearer; автономный режим запускает отдельный процесс, привязанный к выбранному адресу, что полезно для изолированных установок или независимого масштабирования. Плагин Obsidian: локальные файлы остаются источником истины, и плагин читает и записывает обычное хранилище на диске. Нечувствительные настройки и индексы синхронизации хранятся в data.json плагина внутри хранилища, в то время как состояние входа, активный токен устройства bearer, ключ развертывания и идентификатор устройства находятся в локальном хранилище устройства Obsidian. Токены устройств обновляются при использовании, истекают через 90 дней бездействия и имеют абсолютный срок жизни 365 дней; повторный вход на то же устройство вращает активный токен. Ежедневные функции включают командную палитру, историю файлов, диф бок-о-бок, разрешение конфликтов, выборочную синхронизацию .obsidian, управление устройствами и самообновление, документированные в руководстве пользователя. Статус шифрования: в README указано, что версия 1.0 еще не поставляется с нативным сквозным шифрованием, и сервер может читать содержимое хранилища. Нативное шифрование E2EE на уровне хранилища запланировано как опциональный режим на дорожной карте 1.x, поскольку шифрование лишает серверных функций, таких как диф истории, трехстороннее автоматическое слияние, встроенные полезные данные SSE и чтение/запись MCP. В качестве обходного пути можно использовать git-crypt, чтобы помеченные пути доходили до сервера в виде зашифрованных BLOB-объектов, в то время как имена файлов остаются открытым текстом на сервере; стандартный git clone и команда materialize по-прежнему работают для клиентов, имеющих ключ. README также рекомендует HTTPS, ограниченные trusted_proxies, зашифрованные диски данных и зашифрованные резервные копии для реальных развертываний. Релизы и статус: в README перечислены документы по использованию плагина, администрированию сервера, справочнику CLI, заметкам об обновлении, укреплению развертывания, спецификации OpenAPI, настройке MCP, рабочему процессу вики, поддерживаемому LLM, и миграции с Obsidian Sync. Каждый релиз GitHub публикует бинарные файлы для Linux amd64/arm64, Windows x64, многоархитектурный образ GHCR Docker, zip-файл плагина Obsidian и SHA256SUMS. Версия 1.5.1 описывается как визуальный редизайн административной панели и плагина, а также согласование документации с защитой CI; 1.5.0 охватывает исправление аудита и работу по производительности, включая удержание BLOB-объектов, привязанное к живости объектов git, проверку путей, ограничения скорости, неблокирующее завершение SSE, разрешенную синхронизацию .obsidian и пакетное чтение git. Публичный REST API, CLI, макет хранилища, пакет плагина и образ Docker имеют версию вместе под semver, со спецификацией OpenAPI в качестве контракта совместимости; базы данных SQLite из 0.x не могут быть обновлены на месте до 1.0.0. Команды разработки охватывают cargo fmt, clippy и test, а также проверку типов плагина, vitest и сборку, с CI, запускающим матрицу Rust на Linux и Windows, проверки плагина, сборку Docker и тесты дымового сигнала релиз-бинарника.