DropBox Odoo Integration v.12
The tool to automatically synchronize Odoo attachments with DropBox files in both ways
Synchronization is bilateral. All Odoo attachments are put in DropBox regularly. DropBox files create attachments in Odoo in case they are placed in a correct folder. Look at the sections From Odoo to DropBox and From DropBox to Odoo
Integration is automatic in both ways. Based on scheduled jobs, Odoo send attachments to DropBox and retrieve files from there
Any Odoo document might be synced: customers, opportunities, sale or purchase orders, tasks or issues, employees or users, etc. You decide by your own which records should be in DropBox, and which should be left in Odoo
Synchronization works for any DropBox tariff, including Personal DropBox (Basic, Plus, Family) and business DropBox (Professional, Standard, Advanced)
The tool works fine with the Odoo Enterprise Documents module. For full compatibility and to reflect new module directories structure use the app Cloud Sync for Enterprise Documents. Look also at the section Odoo Enterprise Documents
All synced files are easily accessible though clicking on an attachment. You might also open a whole document folder by clicking on 'Open folder' on the attachment widget. This feature migth be optionally turned off: look at the section DropBox URLs
All sync activities might be logged. Control over files and folders creations, moves, name changes and removals. Just turn on the option 'Log sync activities' and access history through the button 'Sync logs'
New For each document of this type you may create a default directories' structure. When this folder is firstly synced, Odoo would generate default folders. For example, for all employees you may have pre-defined folders 'Scans', 'Scans/Official', 'Photos', etc.
The tool is compatible with Odoo reporting and mailing apps. If such an app faces a synced file, it retrieves a real content from DropBox. In particular, the reports 'always reload' feature and messages & mass mailing attachments work properly
Integration is based on a single user endpoint. It means that a single user login/password of DropBox is used. Afterwards for integrations Odoo would use that credentials disregarding an actual Odoo user
- Prepare and keep updated folders' structure in DropBox
- Upload new attachments to a correct folder
Odoo creates a convenient directory structure in DropBox: Odoo / Document type name / Document name / Files, where:
- Odoo is a central directory for Odoo Sync in your cloud storage.
- Document type is a synced Odoo model, for example, 'Sale orders', 'Opportunities', 'Customers'
- You select document types by yourself. It might be any document type
- Moreover, you might have a few folders for a single document type. Use Odoo domains to have not global 'Partners, but 'Customers' and 'Suppliers', not just 'Sale orders' but 'Commercial offers', 'To deliver', and 'Done orders'
- With each sync Odoo would try to update document types' folders. Add a new document type at any moment. It will appear in DropBox with a next sync
- You are welcome to introduce or change document types folder names at any moment in Odoo. Take into account: renaming in DropBox will be recovered to Odoo names
- If you remove a model from integration, it will not be deleted from DropBox to keep already synced files safe. However, new documents of this type would not be synced
- In case you removed a directory in DropBox, but it is still configured in Odoo, with a next sync a folder structure is going to be recovered (not files, surely).
- Document is an exact object to sync. For instance, 'Agrolait' or 'SO019'
- Documents are synced in case they relate to a synced document type and satisfy its filters. For example, you are not obliged to sync all partners, you may integrate only 'Customers' and 'Vendors' or only 'Companies', not 'Contacts'
- Odoo would generate a folder in DropBox for each suitable document even for documents without attachments. It is needed for a backward sync to easily add new files
- DropBox folder name equals a real document name. It relies upon Odoo name_get method. Thus, Odoo 'Michael Fletcher' (a contact of 'Agrolait') would be DropBox 'Agrolait, Michael Fletcher'
- If an exact document changes its document type (e.g. a quotation is now confirmed), Odoo will automatically relocate its related folder to a proper parent directory (in the example: from 'Commercial offers' to 'To deliver')
- In case a document relates to a few types (for instance, you have 'Vendors' and 'Customers', while Agrolait is both), this document folder would be put into the most prioritized document type. A document type priority is higher as closer to the top in Odoo interfaces it is
- If an Odoo document is removed, the next sync will remove a corresponding DropBox directory
- In case you remove a directory in DropBox, but it still exists in Odoo, DropBox folder structure would be recovered (while files would be unlinked in both Odoo and DropBox)
- Folders renaming in DropBox will be replaced with Odoo names, Odoo document names are more important
- Files are real files taken from Odoo attachments
The resulted path would be, for example, 'Odoo / Quotations / SO019 / commercial offer.png'.
The only exclusion of the rule are stand alone attachments which do not relate to any Odoo documents (their document type is 'ir.attachment'). Such attachments' path is 'Odoo / Stand Alone Attachments / image.png'.
The direct sync might take quite a long, since a lot of folders should be created. It is not recommended to make sync too frequent: once an hour or two hours is fine.
FilesWith each direct sync, Odoo tries to find not yet synced attachments. If such attachments suit any document type to sync, a file will be uploaded to DropBox to a proper folder. In Odoo such attachments will become of 'url' type (look also at the section DropBox URLs). It means that a file is not any more kept in Odoo server space, but now it is in DropBox. Until sync is done, Odoo attachment remains binary and stores an actual file. Such approach helps Odoo to work faster.
If you unlinked an attachment from Odoo, it would be deleted in DropBox as well.
Take into account that file names should be managed in DropBox: each backward sync would recover DropBox names, Odoo is here less important.
- If a new file is added to a proper document folder (e.g. to 'Odoo / Customers / Agrolait'), the same attachment will be added to Odoo document (in the example - to 'Agrolait')
- In document folders you can put not only files but also child folders. In that case a link for this folder (not its content) is kept in attachments
- In case you rename a file in DropBox, it will be renamed in Odoo as well
- Files' removal from DropBox leads to related Odoo attachments' removal
- If you move a file to another document folder, in Odoo a related attachment would be re-attached to this new document. Take into account: if you move a file for a not document folder, this Odoo attachment will be deleted as it has been removed from DropBox
- If you deleted a document type or document folder, their child files are deleted as well. Thus, Odoo would remove related attachments. The folders, however, will be recovered with a next direct sync. Folders' move to another directory is also considered as a removal. Avoid such situations by following the simple rule: folders are managed mostly by Odoo, files - mostly by DropBox.
Backward DropBox might take quite much time, since each folder should be checked (the more folders, the more time the backward sync requires). It is recommended to make frequency oftener than once an hour or two hours.
DropBox has a specific way to generate links for existing files and folders. In particular, there are no concepts of internal or private URLs. Instead, each DropBox item might get so-called shared URLs. Such shared links are either public or team-only. Moreover, the latter feature is available only for DropBox business account.
This tool relies upon share links' mechanics. It means, that each attachment link is either public (all personal DropBox accounts) or team-only (all business DropBox accounts).
Sometimes it is considered to be not fully safe. Although website URLs will be hardly known by external users, there is a slight chance that they become available as a result of some user actions. Besides, sharing links generation is not super fast and might make a sync process slower. That is why the feature to switch off sharing urls is introduced.
If checked, all DropBox urls in Odoo will be of type https://www.dropbox.com/home/Odoo/[PATH]. Such links will not work in quite a many cases. Thus, if you need to open DropBox files / folders from Odoo, do not switch off the feature 'No links to DropBox from Odoo'.
- Try to avoid the following symbols in folders' and files' names: *, ?, ", ', :, <, >, |, +, %, !, @, \, /,. Direct sync will replace such symbols with '-'. It is done to avoid conflicts with file systems.
This tool is not in conflict with the 'documents' module provided by the Enterprise license. Attachments related to Enterprise folders would be synced as any other files: according to a document they relate to. In the most cases it means they would be linked to stand-alone attachments.
It is not always comfortable, and you might be interested in reflecting directories' structure introduced by the module 'Documents'. To this end the extension Cloud Sync for Enterprise Documents (its standard price is 44 Euros) is developed. This tool has the following features:
- The documents hierarchy is reflected within the folder 'Odoo / Odoo Docs'
- Each Odoo folder has a linked cloud folder. Take into account that folders created in the cloud storage will be synced as Odoo attachments. The key principle is: folders are managed by Odoo, files are managed by the cloud client
- All files are synced with the same logic as usual attachments. Files created in Odoo will be added to the cloud storage and will be replaced with links in Odoo. Files created in cloud storage will generate attachments within a paired directory
- Please do not name synced models as 'Odoo Docs'. This is the reserved name for Odoo Enterprise Documents
Configuration and Login
- Follow the url https://www.dropbox.com/developers/apps/create
- Choose an API as 'Scoped access'
- Choose the type of access as 'Full Dropbox'
- Select any suitable name for the app and push the button 'Create app'
- Add the redirect URI as YOURODOOSITENAME]/dropbox_token (e.g. https://faotools.com/dropbox_token). A valid SSL certificate (https) is required
- Grant permissions to the app: 'Account Info (Read)', 'Files and folders Metadata (Write)', 'Files Content (Write)', 'Collaboration (Write)'. For team DropBox assign also 'Team Data Members', 'Members (Read)'. Make sure no other permissions are assigned.
- Submit App
- Go to Odoo general settings - DropBox
- Copy App Key, App secret, and redirect URI to the Odoo configuration page
-
For team DropBoxes only
- Check the box 'DropBox Team'
- Set an email of DropBox user. Inside this user folder all Odoo related items would be created and only after that they are shared to all other users. Under this user all files and folders are created, changed, moved, and deleted
- Choose a suitable name for the root Odoo folder, e.g. 'Odoo' or 'ERP'
- Press Save
- Press 'Login and Confirm'
Create a DropBox app
Set up DropBox App: redirection URL
DropBox permissions for personal accounts
DropBox permissions for business accounts
Set up Odoo for DropBox integration
Odoo server configuration and cron job configuration
To make sure the synchronization works correctly apply proper timeouts to the Odoo configuration file: LIMIT_TIME_CPU, LIMIT_TIME_REAL should be more than 900 seconds.
For Odoo.sh this should not be done, since timeouts are predefined and are not configurable.
Then, timeout should be entered to your Odoo. To that goal find the section 'Settings' on the app configuration page and copy the number there.
Afterwards, it is needed to make the cron jobs suit the applied timeouts. In the debug mode go to the Settings > Technical > Automation > Scheduled Jobs:
- Set up the job 'Synchronize attachments with cloud' as (a) frequency - 2*timeout; (b) the next execution as the next hour +timeout. For example, for 900seconds timeout: frequency - as 30minutes; the next execution - at 08:15
- Set up the job 'Synchronize attachments from cloud' as (a) frequency - 2*timeout; (b) the next execution as the next hour + timeout*2. For example, for 900seconds timeout: frequency - as 30minutes; the next execution- at 08:30.
Soalan lazim tentang DropBox Odoo Integration Odoo v.12
Bolehkah saya menukar kekerapan kerja penyegerakan?
Ya, anda boleh. Untuk itu:
Hidupkan mod nyahpepijat
Pergi ke tetapan teknikal > Automasi > Kerja berjadual
Cari kerja 'Synchronize attachments with cloud' dan 'Update attachments from cloud'.
Jangan jadikannya terlalu kerap. Lebih baik kerja ini siap sebelum yang seterusnya bermula. Konfigurasi bergantung pada berapa banyak item yang perlu disegerakkan. Biasanya kekerapan adalah antara 15 minit hingga 4 jam.
Pastikan juga anda menetapkan had masa yang mencukupi dalam fail konfigurasi Odoo. Parameter LIMIT_TIME_CPU dan LIMIT_TIME_REAL mestilah sama atau lebih besar daripada masa kerja cron yang dirancang. Bermula versi 13, pertimbangkan juga parameter LIMIT_TIME_REAL_CRON.
Nota penting untuk klien Odoo.sh: masa maksimum kerja cron mungkin ditetapkan 15 minit sahaja.
Bolehkah saya konfigur struktur direktori disegerak yang berbeza daripada yang diandaikan oleh segerak?
Tidak, ciri ini hanya tersedia dari versi 15. Sebelum versi itu, modul berfungsi dengan struktur folder yang telah ditetapkan:
Odoo - folder teras untuk segerak
Models - folder untuk setiap jenis dokumen Odoo. Contohnya, 'Projects', 'Partners'. Dibeza mengikut domain, mungkin ada folder yang lebih khusus: cth., 'Customer 1 Projects', 'Projects of the Customer 2', 'Internal Projects', dll.
Objects - folder untuk setiap dokumen, cth. 'Project 1' atau 'Customer 1'
Fail dan folder berkaitan dokumen Odoo ini yang akan disegerakkan.
Hasilnya, anda mungkin mempunyai contohnya:
Odoo / Projects / Project 1 / fail dan folder berkaitan project 1
Odoo / Customer 1 Projects / Project 1; Odoo / Customer 2 Projects / Project 3, ...
Odoo / Customers / Customer 1 / fail dan folder berkaitan customer 1
Struktur ini sentiasa rata, bermaksud hanya ada tahap hierarki tersebut. Jadi betul bahawa pelbagai jenis dokumen tidak boleh berada dalam struktur yang sama. Dalam folder 'Customer 1' kita tidak boleh menyimpan fail yang berkaitan sekaligus dengan pesanan jualan, invois dan projek. Setiap jenis dokumen itu mempunyai folder sendiri (atau beberapa folder sendiri). Jika tidak, kita tidak dapat membuat segerak undur kerana tiada kriteria untuk dipegang.
Perlukah saya sediakan akses pengguna tertentu dalam Odoo?
Tidak, alat bergantung pada satu titik akhir pengguna. Semua proses penyegerakan dilakukan di bawah satu pentadbir awan (aplikasi). Hak akses folder / fail yang dicipta tidak diautomasikan. Anda harus mentadbir hak itu dalam penyelesaian storan awan.
Medan disegerak disimpan di mana? Adakah ia diduplikasikan ke Odoo dan clouds?
Aplikasi mengandaikan kandungan binari lampiran disimpan dalam Cloud Client, bukan pada pelayan Odoo. Lampiran sedemikian dalam Odoo menjadi jenis URL, dan anda boleh membukanya pada bila-bila masa dari kotak lampiran atau dari Cloud Client.
Selepas persediaan, tiada tindakan manual diperlukan kerana penyegerakan sepenuhnya automatik. Tentukan jenis dokumen Odoo yang perlu disegerakkan dan sediakan model berkaitan untuk setiap satunya (Pelanggan, pesanan jualan atau belian, Tugasan, Projek, dll.).
Bolehkah saya mempunyai beberapa folder untuk jenis dokumen yang sama? Contohnya, projek dalaman dan projek pelanggan?
Ya, anda boleh. Untuk itu sediakan peraturan untuk setiap satu, kemudian gunakan penapis: contohnya mengikut jenis projek.
Cuba jadikan penapis saling eksklusif supaya dokumen dapat ditetapkan dengan pasti. Contohnya 'pelanggan tetapi bukan pembekal', 'pembekal tetapi bukan pelanggan'. Jika tidak, folder dokumen tertentu akan meloncat dari satu model ke model lain.
Adakah saya hanya memerlukan aplikasi Cloud Storage Solution?
Tidak, alat ini hanya teras teknikal. Anda juga memerlukan penyambung untuk cloud client anda.
Adakah tidak mengapa jika saya ada banyak objek untuk disegerakkan, contohnya 10000?
Ya, walaupun jika banyak folder/lampiran perlu disegerakkan prosesnya mungkin perlahan. Pada masa yang sama, pelanggan melaporkan persekitaran dengan >10k rakan dan ~5k varian produk untuk disegerakkan, dan prosesnya masih diterima.
Beberapa perkara yang perlu ditekankan:
- Penyegerakan dibina supaya setiap item disegerakkan dan tidak hilang, walaupun mungkin tidak pantas. Ini dijamin oleh baris gilir first-in-first-out dan setiap kerja yang dikomit.
- Bilangan objek boleh dihadkan secara logik. Konfigurasi model membolehkan anda menyekat penyegerakan item lapuk (cth. tiada gunanya menyegerakkan rakan yang diarkibkan atau pesanan 2 tahun lalu).
Bolehkah penyegerakan dibuat masa nyata?
Tidak. Kami mempunyai alasan kukuh untuk mengelak penyegerakan masa nyata:
Isu prestasi. Jika penyegerakan masa nyata, setiap muat naik fail akan memaparkan skrin muat.
Isu konflik. Jika 2 pengguna menukar item secara serentak, situasi yang tidak selesai mungkin timbul. Dengan kerja berkala kami boleh membetulkannya kemudian; pada masa nyata ia perlu disimpan sebagai baris gilir, yang lebih mengelirukan pengguna.
Isu fungsi. Khususnya menamakan semula dan menyusun semula item. Dalam penyegerakan undur, alat bergantung ketat pada logik direktori, dan setiap penyegerakan 100% item diperiksa. Jika dilakukan selepas setiap kemas kini, akan ada beribu permintaan sesaat. Jika tidak: perubahan akan hilang.
Bolehkah saya segerakkan lampiran ke beberapa klien awan
Tidak, ciri ini hanya tersedia dari versi 15.
Kami menggunakan editor khas dalam awan kami (cth. OnlyOffice, Office 365, dll.). Adakah fail dibuka dalam editor itu?
Ya, bergantung pada konfigurasi cloud client anda.
Apakah dasar kemas kini alat anda?
Mengikut dasar Odoo Apps Store semasa:
- Setiap modul yang dibeli untuk versi 12.0 dan sebelumnya memberi akses ke semua versi sehingga 12.0.
- Bermula versi 13.0, setiap versi modul perlu dibeli berasingan.
- Tanpa mengira versi, pembelian memberi hak kepada semua kemas kini dan pembetulan pepijat dalam versi utama.
Sila ambil perhatian bahawa pasukan faOtools tidak mengawal dasar itu. Untuk soalan, hubungi terus wakil Odoo Apps Store.
Bagaimana memasang aplikasi anda di Odoo.sh?
Pendekatan paling terus ialah menggunakan aliran kerja terbina dalam kedai Odoo:
1. Buka halaman modul dan klik butang Deploy on odoo.sh
2. Selepas itu anda akan dihalakan ke halaman GitHub. Log masuk ke akaun, kemudian klik 'Create a new repo' atau guna yang sedia ada. Pastikan repositori bersifat peribadi. Tidak dibenarkan menerbitkan aplikasi di bawah lesen OPL-1. Jika perlu, cipta repo baharu untuk projek Odoo.sh
3. Kemudian pergi ke odoo.sh dan klik butang Deploy. Dalam tetingkap pop timbul, hantar keputusan dan klik 'Continue.' Tindakan ini akan mencetuskan pemasangan.
Langkah ini akan memasang aplikasi pada cabang pengeluaran projek. Jika anda mahu men-deploy aplikasi ke cabang lain atau mengemas kini modul, lakukan tindakan berikut:
1. Muat naik kod sumber aplikasi dari kedai Odoo
2. Commit modul ke repositori GitHub yang diperlukan. Pastikan tiada folder/fail aplikasi diabaikan (iaitu tidak termasuk dalam .gitignore repo). Repositori dicipta secara automatik oleh odoo.sh dan secara lalai mungkin termasuk item penting (cth., /lib). Muat naik semua direktori, subdirektori dan fail modul tanpa pengecualian
3. Deploy cabang sasaran projek odoo.sh atau, jika tetapan anda mengandaikan demikian, tunggu sehingga ia dibina secara automatik.
Bagaimana memasang aplikasi anda pada pelayan saya sendiri?
2. Mulakan semula pelayan Odoo;
3. Hidupkan mod pembangun (tetapan teknikal);
4. Kemas kini senarai aplikasi (menu aplikasi);
5. Cari aplikasi dan tekan 'Activate'/'Install';
6. Ikuti garis panduan pada halaman aplikasi jika ada.
Saya perasan aplikasi anda ada add-on tambahan. Boleh beli kemudian?
Ya, sudah tentu. Pada masa yang sama Odoo secara automatik menambah semua kebergantungan ke troli, jadi anda harus kecualikan alat yang sudah dibeli untuk elak bayaran berganda.
Saya menyebarkan aplikasi anda di Odoo.sh dan nampak amaran/ralat dalam ujian
Amaran merah/oren tidak mempengaruhi ciri aplikasi. Malangnya, modul kami kadang-kadang tidak lulus ujian automatik standard kerana ujian itu mengandaikan tingkah laku yang bercanggah dengan matlamat aplikasi. Contohnya kami mengubah pengiraan harga, manakala ujian modul Odoo standard membandingkan harga akhir dengan algoritma standard.
Pertama sekali, semak ciri pangkalan data yang dilancarkan. Adakah semuanya berfungsi dengan betul?
Jika anda masih menganggap amaran mempengaruhi ciri sebenar, hubungi kami dan hantar log pemasangan penuh serta senarai penuh modul yang dilancarkan (termasuk teras dan pihak ketiga).
Bolehkah saya membeli aplikasi terus daripada syarikat anda?
Tidak, kami hanya mengedarkan alat melalui kedai aplikasi Odoo rasmi.
Saya ingin mendapat diskaun
Malangnya, kami tidak mempunyai cara teknikal untuk memberikan harga individu.
Bolehkah saya memasang aplikasi pada pangkalan data Odoo Online (SaaS) saya?
Tidak, aplikasi pihak ketiga tidak boleh digunakan di Odoo Online. Malangnya Odoo SaaS menyekat kemungkinan itu.
Alat anda bergantung pada aplikasi lain. Patutkah saya membelinya?
Ya, alat memerlukan semua modul yang ditanda dalam kebergantungan untuk berfungsi dengan betul. Harga pada halaman aplikasi sudah merangkumi semua kebergantungan yang diperlukan.
Berapakah harga modul dalam dolar AS? Mengapa ia berubah?
Harga modul kami ditetapkan dalam euro. Kedai Odoo menukar harga ke mata wang lain mengikut kadar pertukaran dalamannya. Jadi harga dalam dolar AS mungkin berubah apabila kadar dikemas kini.
Teks aplikasi dan laman web dalam bahasa selain Inggeris dibantu AI dan diselaraskan dengan terjemahan rasmi Odoo. Jika anda nampak kesilapan, hantar tiket ketepatan terjemahan dan kami akan membetulkannya.
Pelaporan pepijat
Jika anda menemui pepijat atau tingkah laku tidak konsisten, sila hubungi kami. Kami jamin pembetulan dalam 60 hari selepas belian dan masih berminat menambah baik alat selepas tempoh itu.
Anda tidak memerlukan nombor telefon atau kad kredit untuk menghubungi kami. Hanya pendaftaran e-mel ringkas yang tidak mengambil lebih daripada 30 saat.
Sertakan sebanyak mungkin butiran dalam permintaan: tangkapan skrin, log pelayan Odoo, penerangan penuh cara menghasilkan semula masalah, dan sebagainya. Biasanya mengambil beberapa hari bekerja untuk menyediakan pelan kerja (jika pepijat disahkan) atau memberi garis panduan apa yang perlu dilakukan (jika tidak).
Permintaan ciri awam dan idea modul (pembangunan percuma)
Kami sangat bermotivasi untuk menambah baik alat kami dan berterima kasih atas sebarang maklum balas. Jika keperluan anda berguna secara awam dan boleh dilaksanakan dengan cekap, pasukan akan memasukkannya ke senarai tugasan kami.
Senarai tugasan sebegini diproses secara berkala dan tidak melibatkan yuran tambahan. Walaupun kami tidak dapat menjanjikan tarikh akhir dan reka bentuk muktamad, ini mungkin cara baik untuk mendapat ciri yang diingini tanpa pelaburan dan risiko.
Anda tidak memerlukan nombor telefon atau kad kredit untuk menghubungi kami. Hanya pendaftaran e-mel ringkas yang tidak mengambil lebih daripada 30 saat.
Alat untuk menyimpan kata laluan dengan selamat dalam Odoo untuk kegunaan bersama. Peti besi dikongsi
198€Alat untuk membina pangkalan pengetahuan yang mendalam dan berstruktur untuk penggunaan dalaman dan luaran. Knowledge System. KMS. Semakan seperti wiki.
398€Alat pengurusan perkhidmatan berasaskan masa dari tempahan temu janji hingga jualan dan ulasan
Alat untuk menetapkan sasaran KPI dan mengawal pemenuhannya mengikut tempoh. Papan pemuka KPI. Pereka papan pemuka. Carta KPI
198€Alat untuk mengurus Odoo dari sembang AI kegemaran melalui MCP. Claude. Mana-mana AI yang menyokong MCP.
198€Alat untuk menyusun lampiran Odoo secara fleksibel dalam folder dan menyegerakkan direktori dengan klien awan: Google Drive, OneDrive/SharePoint, Nextcloud/ownCloud, Dropbox, Amazon S3, Box dan NAS. DMS. Pengurus Fail. Sistem pengurusan dokumen
Alat untuk menyegerakkan lampiran Odoo secara automatik dengan fail OneDrive secara dua hala
Alat untuk menyegerakkan lampiran Odoo secara automatik dengan fail Google Drive secara dua hala
Alat untuk menyegerakkan lampiran Odoo secara automatik dengan fail ownCloud/Nextcloud secara dua hala