Skip to main content
Nextcloud / ownCloud Integration for Odoo — A build-to-order Odoo integration that keeps your attachments and DMS documents i — 1/1Illustrative preview

A build-to-order Odoo integration that keeps your attachments and DMS documents in sync with a self-hosted

Nextcloud or ownCloud server, mapping each record to its own folder and issuing internal or public share links on demand.

ECOSIRE builds, installs, and supports it on Odoo 17, 18, or 19.

What is Nextcloud / ownCloud Integration for Odoo?

A build-to-order Odoo integration that keeps your attachments and DMS documents in sync with a self-hosted Nextcloud or ownCloud server, mapping each record to its own folder and issuing internal or public share links on demand. ECOSIRE builds, installs, and supports it on Odoo 17, 18, or 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Two-way sync between `ir.attachment` and Nextcloud/ownCloud over the WebDAV (sabre/dav) protocol, reconciling both push and pull directions
Content-hash + modified-time conflict detection so simultaneous edits in Odoo and Nextcloud are flagged instead of silently overwritten
Per-record folder mapping via a configurable path template (e.g. `/Odoo/{model}/{record_name}-{id}`) with automatic folder creation on first sync
Internal vs public shareable links generated through the Nextcloud OCS Share API, with optional password protection and expiry dates
Access-rights-aware visibility enforced through `ir.model.access.csv` and record rules — users only see links for records they can already read
Public-link creation gated to designated security groups so ordinary users can't over-share externally
Background sync scheduled via `ir.cron`, batched and rate-limited to protect your Nextcloud instance, plus a manual `sync now` server action
Sync-state fields (`synced`, `pending`, `error`, `conflict`) exposed as computed status with `@api.depends`, surfaced in list and form views
Service-account credentials stored securely in a settings model / `ir.config_parameter`, never hard-coded in source
Share URLs embeddable in QWeb reports and email templates so quotes, invoices, and notifications can link straight to the file
XML-RPC / JSON-RPC endpoints to trigger syncs and read share metadata from external systems
Full sync log with per-file status, error messages, and retry, so failed transfers are visible and re-runnable
Soft-delete handling: choosing whether removing an Odoo attachment also removes the remote file or just detaches the link
Support for both Nextcloud and ownCloud auth (app passwords / basic auth), configurable per environment

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Teams that self-host their file storage do it on purpose: they want documents on infrastructure they control, not scattered across a vendor's object store. Odoo, though, keeps attachments in ir.attachment — either as base64 blobs in the database or under the filestore directory — with no native concept of syncing those files to an external WebDAV server, no per-record folder structure a user can browse in a Files app, and no way to hand someone a shareable link that respects your access rules. The moment you want a sales order's contracts sitting in a Nextcloud folder your legal team can open directly, or a public link to a datasheet that expires, Odoo core runs out of road and people fall back to manually re-uploading files in two places.

We build a dedicated Odoo module that bridges ir.attachment and the Nextcloud/ownCloud WebDAV + OCS Share API. A configuration model (with credentials stored in ir.config_parameter / a secured settings model, never hard-coded) holds the server URL, service account, and root path. New models.Model records extend the attachment and target document models with fields tracking the remote path, share token, sync state, and last-synced hash, using compute methods with @api.depends to surface a clean status in the UI. Per-record folder mapping is driven by a configurable template (for example /Odoo/{model}/{record_name}-{id}) so every partner, project, sale order, or DMS document gets a deterministic folder created on first sync. Two-way sync reconciles both directions: files added or replaced in Odoo push up over WebDAV, and changes detected on the Nextcloud side are pulled back and re-attached, with conflict handling based on modified-time and content hash so you never silently lose an edit.

Link generation uses the OCS Share API to mint either an internal link (visible only to the mapped Nextcloud group/users) or a public share, with optional password and expiry, exposed on the Odoo record through a QWeb-rendered button and stored so it can be embedded in QWeb reports or emails. Visibility is access-rights-aware: the module ships ir.model.access.csv entries plus record rules so a user only sees links and folders for records they can already read in Odoo, and public-link creation can be gated to specific groups. A scheduled automated action (ir.cron) runs the background sync on an interval you choose, batched and rate-limited to stay friendly to your Nextcloud instance, with a full sync log and a manual "sync now" action for on-demand pushes. Everything is reachable over Odoo's XML-RPC/JSON-RPC API too, so external systems can trigger syncs or read share URLs programmatically.

Because this is a build-to-order module, nothing ships until we agree on scope. We start with a short scoping call to confirm which models you want synced (attachments only, DMS documents, or specific business records), your Nextcloud/ownCloud version and auth method, and your Community-vs-Enterprise edition on Odoo 17.0, 18.0, or 19.0. We then build against a staging copy of your database, validate the two-way sync and link behavior in UAT, and deliver the installable module with a rollback plan. Typical delivery is one working week from confirmed scope. You receive the full source, documentation, a training session, and a post-go-live support window — and the git repository is yours to keep.

What you get

  • Installable Odoo module source code targeting your exact edition and version (17.0, 18.0, or 19.0), with a complete `__manifest__.py` and clean dependency list
  • Installation and configuration on your environment, including Nextcloud/ownCloud connection setup and folder-mapping templates
  • Technical documentation covering models, sync architecture, cron scheduling, and the security model (`ir.model.access.csv` + record rules)
  • End-user guide plus a live training session for admins and everyday users
  • UAT on a staging copy of your database with a documented rollback plan before production go-live
  • Post-go-live support window for bug fixes and configuration adjustments
  • Handover of the complete git repository so you own and can extend the code
  • Configuration reference for credentials, rate limits, and public-link policy

Who this is for

Privacy-focused operations team

Runs a self-hosted Nextcloud/ownCloud on infrastructure they control and refuses to duplicate documents into a third-party cloud. They need Odoo attachments to live in their own storage automatically, with a clear per-record folder structure their non-Odoo colleagues can browse.

Odoo administrator / internal IT

Owns the Odoo instance and wants sync that respects existing access rules, runs on a predictable cron, and doesn't hammer the Nextcloud server. Values secured credential storage, a sync log they can audit, and a git repo they can maintain.

Compliance and legal function

Needs contracts, signed documents, and datasheets stored in a governed location with controlled sharing — internal links for staff, expiring password-protected public links for outside parties — all traceable back to the originating Odoo record.

Client-facing sales or project team

Wants a one-click shareable link to the right document embedded in quotes, invoices, or project records via QWeb, without leaving Odoo or emailing files as attachments.

How Nextcloud / ownCloud Integration for Odoo Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
File storage locationYour self-hosted Nextcloud/ownCloud, synced from OdooWherever you build it to goOften a fixed provider or basic WebDAV pushOdoo database blob or local filestore only
Sync directionTwo-way with hash + mtime conflict detectionDepends on in-house effortFrequently one-way push onlyNone — no external sync at all
Per-record foldersConfigurable path template, auto-created per recordBuildable but you design itFlat or limited folder logicNo folder mapping concept
Shareable linksInternal vs public via OCS API, password + expiryMust implement OCS calls yourselfBasic public links, limited controlsNo external share links
Access-rights awarenessRecord rules + `ir.model.access.csv`, group-gated public linksOnly if you build the security layerOften bypasses Odoo record rulesN/A — no sharing feature
Version supportBuilt for your Odoo 17.0 / 18.0 / 19.0, Community or EnterpriseWhatever you targetMay lag new Odoo releasesShips with core, no integration
Ownership & supportFull git repo handover + support windowYou own it and maintain it entirelyVendor-locked, per-seat or annual feesCommunity support only
Delivery modelBuild-to-order, one working week from confirmed scopeLong in-house build and QA cycleInstant download but generic fitAlready installed, but no capability

Frequently Asked Questions about Nextcloud / ownCloud Integration

How long does delivery take?

This is a build-to-order module, so nothing is pre-packaged for instant download. After a confirmed scope from the initial call, typical delivery is one working week depending on how many models you sync and the complexity of your Nextcloud/ownCloud setup. We build on a staging copy, run UAT with you, then deploy to production.

What happens after go-live for support and updates?

Every build includes a post-go-live support window for bug fixes and configuration tweaks. Because you receive the full git repository, your team can maintain it, and we offer ongoing support or version-migration engagements (for example when you move from Odoo 17 to 18 or 19) as a separate scope.

Does this work with both Nextcloud and ownCloud?

Yes. Both expose the WebDAV protocol for files and the OCS Share API for links, which is what the module builds on. We confirm your specific server version and authentication method (app passwords / basic auth) during scoping and target that exact environment.

Will it work on Odoo Community, or do I need Enterprise?

The integration is built on standard Odoo primitives — `ir.attachment`, models, cron, `ir.model.access.csv`, and record rules — so it runs on both Community and Enterprise. If your workflow depends on the Enterprise Documents (DMS) app, we map to that; on Community we map to attachments or your chosen records. We confirm the edition in the scoping call.

How is sharing kept secure so users can't over-share files?

Visibility is access-rights-aware: record rules and `ir.model.access.csv` ensure a user only sees links for records they can already read in Odoo. Public-link creation is gated to specific security groups, and public shares support passwords and expiry dates via the OCS Share API, so external exposure is deliberate and controlled.

What happens if the same file is edited in both Odoo and Nextcloud?

The sync compares content hashes and modified timestamps. When it detects a divergence it flags the record as a conflict rather than silently overwriting, and surfaces it in the sync log so someone can resolve it. You decide the default policy (Odoo-wins, remote-wins, or manual) during scoping.

Can external systems trigger a sync or read the share links?

Yes. The module is reachable over Odoo's XML-RPC / JSON-RPC API, so external applications can trigger a sync, read a record's remote folder path, or fetch its share URL programmatically — useful for integrating with portals or automation outside Odoo.

Request a quote

Nextcloud / ownCloud Integration

A build-to-order Odoo integration that keeps your attachments and DMS documents in sync with a self-hosted Nextcloud or ownCloud server, mapping each record to its own folder and issuing internal or public share links on demand. ECOSIRE builds, installs, and supports it on Odoo 17, 18, or 19.

  • Two-way sync between `ir.attachment` and Nextcloud/ownCloud over the WebDAV (sabre/dav) protocol, reconciling both push and pull directions
  • Content-hash + modified-time conflict detection so simultaneous edits in Odoo and Nextcloud are flagged instead of silently overwritten
  • Per-record folder mapping via a configurable path template (e.g. `/Odoo/{model}/{record_name}-{id}`) with automatic folder creation on first sync
  • Internal vs public shareable links generated through the Nextcloud OCS Share API, with optional password protection and expiry dates

Request a Quotation

Tell us about your Nextcloud / ownCloud Integration requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.