メインコンテンツにスキップ
商品詳細は英語で表示されます。翻訳は近日公開予定です。
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

    本番稼働 + サポート

    約1週間(営業日ベース)で稼働し、本番稼働後2週間のサポートが付きます。納品したコードの不具合は無償で修正します。

技術仕様

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 の比較方法

基準エコシエールカスタムビルド競合他社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 のご要望をお知らせください。価格、ライセンスの選択肢、貴社に合わせたご提案を、通常1営業日以内にお送りします。

今すぐのお支払いはありません。これはチームへの見積もり依頼を送信します。価格と次のステップをメールでご案内します。