انتقل إلى المحتوى الرئيسي
يتم عرض تفاصيل المنتج باللغة الإنجليزية. الترجمات قريبا.
S3 / External File Storage Offloader for ERPNext — A build-to-order ERPNext app that transparently offloads File attachments  — 1/1معاينة توضيحية

A build-to-order ERPNext app that transparently offloads File attachments to S3-compatible object storage per

folder, cutting server disk usage while keeping downloads seamless via presigned URLs.

ECOSIRE scopes, builds, installs, and supports it for your Frappe/ERPNext v15/v16 site.

ما هو S3 / External File Storage Offloader for ERPNext؟

A build-to-order ERPNext app that transparently offloads File attachments to S3-compatible object storage per folder, cutting server disk usage while keeping downloads seamless via presigned URLs. ECOSIRE scopes, builds, installs, and supports it for your Frappe/ERPNext v15/v16 site. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

الميزات الرئيسية

Per-folder routing rules via a dedicated configuration DocType that maps each Frappe File folder to a specific S3-compatible bucket, prefix, and access policy
Intercepts the `File` DocType through `hooks.py` doc events (`after_insert`, `on_trash`, `validate`) so new attachments are offloaded automatically without changing any existing upload workflow
S3-compatible backend abstraction supporting AWS S3, MinIO, Wasabi, Backblaze B2, and DigitalOcean Spaces via configurable endpoint, region, and path/virtual-host addressing style
Short-lived presigned GET URLs minted by a whitelisted server method, so private files stream directly from object storage instead of proxying bytes through gunicorn workers
Public vs private bucket policies per folder, letting image-heavy DocTypes serve from a public/CDN origin while HR and finance attachments stay strictly private
CDN-friendly delivery with configurable public base URL / origin so `Website Image` and item media resolve to a cache-fronted host
One-time migration tool implemented as a Frappe background/scheduler job that walks existing `File` records folder-by-folder, uploads, verifies, and rewrites `file_url` linkage
Integrity verification on migrate and on upload using content-hash / ETag comparison before the local copy is considered reclaimable
Optional local-disk reclaim pass, run only after a successful verification, with a report of bytes freed per folder
Respects Frappe's native `File` permission model and role profiles — a presigned URL is only issued for attachments the requesting user is already entitled to
Encrypted credential storage in site config (never in the database or committed code), with a connectivity/validation check on configuration save
Scheduler event for orphan detection and retry of any attachment that failed to offload, with an admin-visible log DocType for audit and reprocessing
Server-side streaming multipart upload for large attachments so oversized files don't exhaust worker memory
REST API / whitelisted methods so external systems can resolve or request presigned links programmatically, consistent with the Frappe REST API

مبني حسب الطلب، ننجزه بالكامل لك

لا إعداد يدوي — تطبيق جاهز يبنيه ويثبّته ويدعمه ECOSIRE.

  1. 1

    تطلب

    ابدأ بسعر بناء لمرة واحدة. نحدّد النطاق معك عند الانطلاق.

  2. 2

    نبني ونثبّت

    يقوم ECOSIRE ببنائه وتهيئته وتثبيته على ERPNext الخاص بك.

  3. 3

    الإطلاق + الدعم

    تنطلق خلال أسبوع عمل واحد تقريبًا، مع أسبوعين من الدعم بعد التشغيل. نصلح عيوب الكود الذي نسلّمه مجانًا.

المواصفات التقنية

توافق ERPNext
—
الترخيص
يلزم تأكيد الترخيص
متطلبات Python
Python 3.10+
قاعدة البيانات
MariaDB 10.6+

عن هذا المنتج

Every ERPNext site accumulates attachments — sales order PDFs, item images, expense receipts, quality inspection photos, employee documents — and by default the File DocType writes all of them straight to the bench's local sites/<site>/private/files and public/files directories on the application server. On a high-attachment-volume site that disk fills relentlessly: your frappe-bench volume balloons, backups take longer and cost more, bench migrate and restore windows grow, and eventually you are resizing the server for storage you should never have been paying compute prices for. ERPNext core has no native concept of routing attachments to object storage, no per-folder storage policy, and no built-in migration path — so teams end up bolting on cron rsync hacks or symlinking files/ to a mount, both of which break on bench update, backups, and multi-bench setups.

We build a proper Frappe app (installable via bench get-app / bench install-app) with its own module that intercepts file writes through hooks.py doc events on the File DocType — after_insert, on_trash, and validate — so that attachments in the folders you designate are streamed to an S3-compatible bucket (AWS S3, MinIO, Wasabi, Backblaze B2, DigitalOcean Spaces, or any endpoint that speaks the S3 API) instead of the local disk. Routing is driven by a configuration DocType where you map Frappe File folders to target buckets and policies, so, for example, Home/Attachments/Item Images can go to a public CDN-backed bucket while Home/Attachments/HR stays in a strictly private bucket. Credentials live in encrypted site config, never in the database or code, and every storage backend is validated on save.

File access stays transparent to end users. When a private attachment is requested, the app issues a short-lived presigned URL through a whitelisted method rather than proxying bytes through the Frappe worker, so downloads don't tie up gunicorn/worker processes and large files stream directly from the object store. Public-bucket files can be served straight from a CDN origin for image-heavy DocTypes. A one-time migration tool — implemented as a Frappe scheduler/background job so it doesn't block the request cycle — walks existing File records folder by folder, uploads each object, verifies integrity, rewrites the file_url / content_hash linkage, and (optionally, after a verification pass) reclaims the local disk. Permissions are unchanged: the app respects Frappe's existing File permission model, role profiles, and the private/public distinction, so a presigned URL is only ever minted for a user who is already entitled to that attachment.

Because this is build-to-order, we don't hand you a generic plugin and wish you luck. We start with a short scoping call to confirm your ERPNext version (v15 or v16), attachment volume, which folders and DocTypes need offloading, your target object store, and whether you need public/CDN delivery, private-only, or a mix. We then build your version of the app, test it on a staging copy of your site including a dry-run of the migration against a snapshot of your real files, run UAT with you, and cut over with a documented rollback plan. Typical delivery is one working week from confirmed scope. You receive the full source and git repository so you are never locked to us.

ما تحصل عليه

  • Installable Frappe app source code for your version (installable via `bench get-app` and `bench install-app`), targeting your confirmed ERPNext v15 or v16
  • Installation and configuration on your environment, including bucket/endpoint setup, folder-to-bucket routing rules, and encrypted credential wiring in site config
  • Technical documentation: architecture, DocTypes, hooks, whitelisted methods, scheduler events, config reference, and backup/restore implications
  • End-user and administrator guide plus a live training session for your team covering routing configuration and the migration tool
  • Post-go-live support window for defect fixes and configuration adjustments after cutover
  • UAT on a staging copy of your site including a dry-run migration against a snapshot of your real files, with a documented, tested rollback plan
  • Full git repository handover so you own the code and are never locked to ECOSIRE
  • Migration runbook and a per-folder reclaim report showing files moved and local disk space recovered

لمن هذا

ERP administrator on a disk-constrained bench

Runs a busy ERPNext site where the bench volume keeps filling with attachments. Needs to move file storage off the application server without rewriting workflows or risking existing links, and wants a clean migration for the files already on disk.

DevOps / infrastructure engineer

Owns the Frappe deployment and hates the rsync/symlink hacks that break on `bench update` and complicate backups. Wants attachments in S3-compatible object storage with proper credentials handling, presigned access, and a solution that survives migrations and multi-bench setups.

Image and media-heavy ERPNext operator

Runs catalog, manufacturing, or field-service processes with thousands of item images and inspection photos. Needs public/CDN-backed delivery for images while keeping HR and finance documents private, all routed per folder.

Compliance-conscious operations lead

Handles sensitive employee and financial attachments and needs storage segregated into private buckets with the existing Frappe permission model intact, plus an auditable log of what was offloaded and where.

كيف يقارن S3 / External File Storage Offloader for ERPNext.

المعيارECOSIREبناء مخصصمنافسERPNext الأصلي
Attachment storage locationPer-folder routing to any S3-compatible bucketWherever you code it, if you finish itUsually a single fixed bucketLocal bench disk only
Per-folder / public-vs-private policyConfigurable rules per Frappe folderPossible but you build the config layerRarely folder-granularNone
Migrating existing filesVerified background-job migration + reclaim reportYou write and test the migration yourselfOften new-files-only, no migration toolManual rsync/symlink hacks
Private file accessPermission-checked short-lived presigned URLsDepends on your implementationSometimes proxied through workersLocal private/files serving
Fit to your ERPNext versionBuilt and tested for your v15/v16 siteWhatever you targetGeneric; version support variesN/A
Source & ownershipFull source + git repo handoverYou own itOften closed or license-boundCore, not customizable for this
Testing & rollbackStaging UAT + dry-run migration + rollback planYour responsibilityInstall-at-your-own-riskN/A
Support after go-livePost-go-live support window from ECOSIRENone unless you staff itForum/community, variableCommunity only

الأسئلة المتداولة حول S3 / External File Storage Offloader

How long does delivery take?

This is a build-to-order app, not an instant download. After a short scoping call to confirm your ERPNext version, folders, and target object store, typical delivery is one working week from confirmed scope. That includes building your version, testing on a staging copy of your site, a dry-run migration against a snapshot of your real files, UAT, and cutover with a rollback plan.

Which object storage backends are supported?

Any S3-compatible endpoint — AWS S3, MinIO (self-hosted), Wasabi, Backblaze B2, and DigitalOcean Spaces are all supported via configurable endpoint, region, and addressing style. If your provider speaks the S3 API, we can target it. We confirm the exact backend during scoping.

Will existing attachments and links break?

No. The migration tool rewrites each `File` record's `file_url` linkage as it moves the object, and file access stays transparent through presigned URLs, so existing document attachments keep resolving. We verify integrity with content-hash/ETag comparison before any local copy is reclaimed, and we run the whole migration as a dry-run on staging first with a tested rollback plan.

Does it work with Frappe/ERPNext v15 and v16?

Yes. We build and test against your confirmed version — v15 or v16 — using the current Frappe app conventions (hooks doc events on the `File` DocType, whitelisted methods, scheduler events). We target one version for your build; if you plan to upgrade, tell us during scoping so we can account for it.

How is file access secured for private attachments?

Private files are never made publicly readable. They're served via short-lived presigned URLs minted by a whitelisted method only after the request passes Frappe's existing `File` permission checks, so a user who cannot see an attachment in ERPNext cannot obtain a link to it. Bucket credentials are stored encrypted in site config, never in the database or code.

What about support and updates after go-live?

Every engagement includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full source and git repository, your own team can also maintain it. We offer ongoing support and version-upgrade work (for example, an ERPNext major-version bump) as a separate arrangement — just ask during scoping.

Can images be served from a CDN while documents stay private?

Yes. Routing is per folder, so you can send item images and website media to a public, CDN-fronted bucket for fast cached delivery while HR, finance, and other sensitive folders route to strictly private buckets that only ever resolve through presigned URLs.

طلب عرض سعر

S3 / External File Storage Offloader

A build-to-order ERPNext app that transparently offloads File attachments to S3-compatible object storage per folder, cutting server disk usage while keeping downloads seamless via presigned URLs. ECOSIRE scopes, builds, installs, and supports it for your Frappe/ERPNext v15/v16 site.

  • Per-folder routing rules via a dedicated configuration DocType that maps each Frappe File folder to a specific S3-compatible bucket, prefix, and access policy
  • Intercepts the `File` DocType through `hooks.py` doc events (`after_insert`, `on_trash`, `validate`) so new attachments are offloaded automatically without changing any existing upload workflow
  • S3-compatible backend abstraction supporting AWS S3, MinIO, Wasabi, Backblaze B2, and DigitalOcean Spaces via configurable endpoint, region, and path/virtual-host addressing style
  • Short-lived presigned GET URLs minted by a whitelisted server method, so private files stream directly from object storage instead of proxying bytes through gunicorn workers

طلب عرض سعر

أخبرنا باحتياجاتك من S3 / External File Storage Offloader وسنرسل لك الأسعار وخيارات الترخيص وعرضًا مخصصًا، عادةً خلال يوم عمل واحد.

لا حاجة للدفع الآن. يؤدي هذا إلى إرسال طلب عرض سعر إلى فريقنا — وسنتواصل معك عبر البريد الإلكتروني بالأسعار والخطوات التالية.