$ 115.67
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Documents (documents) |
| Community Apps Dependencies | Show |
| Lines of code | 8661 |
| Technical Name |
nextcloud_sync |
| License | OPL-1 |
| Website | https://praetorx.net |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Documents (documents) |
| Community Apps Dependencies | Show |
| Lines of code | 8661 |
| Technical Name |
nextcloud_sync |
| License | OPL-1 |
| Website | https://praetorx.net |
Nextcloud Sync
Bidirectional File Synchronization between Odoo Documents and Nextcloud via WebDAV
Map Odoo Documents workspaces to Nextcloud folders and keep them in sync — automatically. AES-256 encrypted credentials, ETag-based conflict detection, configurable sync modes, and a setup wizard that gets you running in under five minutes.
praetorx.net | Syntax & Sabotage
Sync Engine
Three sync modes per library: bidirectional, Odoo → Nextcloud, or Nextcloud → Odoo. Each library maps one Odoo Documents workspace to one Nextcloud folder. Subfolder structure is replicated automatically.
Every sync compares the remote ETag against the last-known value. If both local and remote changed since the last sync, a conflict record is created with four resolution strategies: keep local, keep remote, keep newest, or keep both.
Four built-in cron jobs: sync queue processing (every 5 min), failed sync retry (every 15 min), stale sync cleanup (daily), and full bidirectional sync (hourly). All configurable via Odoo’s Scheduled Actions.
Six configurable policies per library when a file is deleted from Nextcloud: ignore, mark as orphaned, create conflict, move to trash with audit log, archive, or delete. Trash log tracks every action for potential recovery.
Security & Authentication
App passwords are encrypted at rest using Fernet symmetric encryption (AES-256-CBC). Per-company encryption keys are stored in ir.config_parameter. The cryptography library is a hard requirement — the module refuses to store unencrypted credentials.
Service account model with dedicated Nextcloud app passwords (recommended over user passwords). HTTPS is enforced — the URL validation rejects non-HTTPS connections.
Record rules enforce company boundaries on all models — connections, libraries, folders, conflicts, trash logs, and version cache. Each company has its own encryption key.
Two access tiers: all internal users get read-only access to sync status. The Nextcloud Sync Manager group grants configuration, library management, and conflict resolution permissions.
Library Mapping & WebDAV
Each library maps one Odoo Documents workspace to one Nextcloud folder path. Multiple libraries per Nextcloud connection are supported. Remote folder browsing and subfolder scanning are built in.
Files below the configurable threshold upload directly via WebDAV PUT. Larger files use Nextcloud’s chunked upload v2 (WebDAV-based, all NC versions). TUS protocol auto-detected on NC 26+. Graceful fallback on failure.
On-demand version fetching via the Nextcloud Versions API. Caches up to 5 versions per document (24h expiry). View, download, or restore any cached version directly from the conflict resolution view.
Nextcloud version detection, edition discovery, and server capabilities are fetched via the OCS API and cached. Feature flags for TUS upload support and direct edit are computed automatically from the NC major version.
User Interface
Dedicated OWL-powered dashboard under Documents → Nextcloud Sync → Dashboard showing aggregate sync statistics, connection status, and library health at a glance.
Four-step wizard under Configuration → Setup Wizard: choose sync direction, select or create a Nextcloud connection, map workspace to folder, review and create. Creates the library, connector, and remote folder in one go.
OWL widget showing the current sync state (pending, syncing, synced, failed, conflict, orphaned) inline on document records. Status tracked via mail.tracking for full audit history.
Dedicated views for pending syncs, active conflicts, and deleted items (trash log). Accessible under Documents → Nextcloud Sync → Operations.
Technical Reference
| Model | Purpose |
|---|---|
| nextcloud.auth | Connection config — URL, encrypted app password, NC version detection, OCS capabilities, connection testing, rate limiting |
| nextcloud.library | Workspace-to-folder mapping — sync mode, enable/disable, remote deletion policy, sync lock, statistics |
| nextcloud.connector | WebDAV client — PROPFIND, GET, PUT, MKCOL, DELETE, MOVE, COPY, chunked upload, retry logic |
| nextcloud.folder | Remote folder cache — path, ETag, permissions, parent/child hierarchy, subfolder scanning |
| nextcloud.conflict | Conflict tracking — type (both_modified, deleted_locally, deleted_remotely, type_mismatch), resolution, auto-resolve |
| nextcloud.version.cache | On-demand version history — 5 versions, 24h cache, content download, restore action |
| nextcloud.trash.log | Deletion audit trail — document name, path, action taken (trashed/archived/deleted/restored), restore action |
| nextcloud.setup.wizard | 4-step transient wizard — source of truth, connection, mapping, review |
| documents.document | Extended with nc_file_id, nc_etag, nc_remote_path, nc_sync_status, nc_library_id, SHA256 checksum, sync lock |
Screenshots
Screenshots will be added in a future update. Install the module to explore the full UI.
Setup Guide
- Odoo 19.0 Enterprise (requires the
documentsmodule) - Python 3.10+
- Required Odoo modules:
base,documents,mail,praetorx_base - Required Python packages:
webdavclient3,requests,cryptography - Nextcloud 25 or later (NC 26+ recommended for chunked uploads)
- A Nextcloud service account with an app password
Enterprise required. The documents module is an Odoo Enterprise module. This module does not work on Community Edition.
Install the required Python libraries in your Odoo environment:
pip install webdavclient3 requests cryptography
On Odoo.sh, add these to your requirements.txt file.
The cryptography package is mandatory — the module will not store credentials without it.
- Log into Nextcloud as the service account user
- Go to Settings → Security → Devices & sessions
- Enter a name (e.g., “Odoo Sync”) and click Create new app password
- Copy the generated password — you will not see it again
Tip: Use a dedicated service account rather than a personal account for production deployments.
- Navigate to Documents → Nextcloud Sync → Configuration → Setup Wizard
- Step 1 — Source of Truth: Choose sync direction (Odoo, Nextcloud, or Bidirectional)
- Step 2 — Connection: Create a new connection or select an existing one. Enter URL, username, and app password. Click Test Connection.
- Step 3 — Mapping: Select an Odoo Documents workspace and enter the Nextcloud folder path (e.g.,
/Documents/Odoo Sync) - Step 4 — Review: Confirm the library name and click Create Library
The wizard creates the connection, connector, library, and optionally the remote folder in one operation.
- Open the newly created library under Documents → Nextcloud Sync → Sync Management → Libraries
- Click Sync Now to trigger the first manual sync
- Check the Dashboard for sync statistics and status
- Documents in the mapped workspace will show a sync status badge (pending → syncing → synced)
After the first sync, the cron jobs handle ongoing synchronization automatically.
Internal User: Read-only access to connections, libraries, folders, sync status, conflicts, and trash logs.
Nextcloud Sync Manager: Full CRUD on connections, libraries, folders, conflicts, version cache, and trash logs. Can run the setup wizard and resolve conflicts.
System (Settings): Full access including deletion of connections and system-level configuration.
FAQ
documents, which is an Odoo Enterprise module. It works on Enterprise on-premise and Odoo.sh, but not on Community Edition.ir.config_parameter. The module requires the cryptography Python library and will refuse to store credentials if it is not installed. We recommend using a dedicated Nextcloud app password (not your main password) for an additional layer of isolation.Release History
v19.0.1.0.11 — Current
Current Release
- Incremental improvements and bug fixes since v19.0.1.0.8
v19.0.1.0.8 — February 2026
- Extracted
_get_connector()helper onnextcloud.authto centralize connector lookup - Refactored folder and wizard connector creation to use auth helper
- Aligned lock timeouts: document lock 300s, library lock 600s, stale sync cutoff 3600s
- Restricted setup wizard CRUD: base users no longer have read access
v19.0.1.0.0 — January 2026
Initial Release
- Bidirectional sync between Odoo Documents and Nextcloud via WebDAV
- OCS API integration for version detection and capabilities caching
- AES-256 encrypted credential storage (Fernet, per-company keys)
- App password authentication with HTTPS enforcement
- Library mapping: workspace-to-folder with three sync modes
- ETag-based conflict detection with four resolution strategies
- On-demand version history caching (5 versions, 24h expiry)
- Trash log for remote deletion audit trail with restore action
- OWL dashboard and sync status badge widget
- 4-step setup wizard for guided configuration
- Smart upload with chunked upload fallback for large files
- 4 cron jobs: sync queue, retry failed, cleanup stale, full bidirectional
- Multi-company record rules on all models
- Nextcloud Sync Manager security group
You May Also Like
Intelligent document classification, routing rules, and retention policies for Odoo Documents.
€199AI provider management, health monitoring, and shared infrastructure for PraetorX modules.
FreeReusable technical patterns, shared security groups, and menus for PraetorX modules. Required dependency.
FreeBranded backend theme with sidebar, home tiles, activity dashboard, and per-role color theming.
FreeMade with ♥ by Syntax & Sabotage
© 2026 Syntax & Sabotage, Lars Weiler. All rights reserved. OPL-1.
Impressum · support@syntaxandsabotage.io
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module