Enderchest
Documentation

Enderchest documentation

Enderchest is S3-compatible object storage for backups, archives and media libraries. This guide covers setup, client configuration and the supported S3 operations.

Overview

You create buckets, put objects in them, and read them back over the S3 API or from the web console. Every object is encrypted with its own key before it is stored, and every read is verified against the checksum taken at upload.

Limits

ItemLimit
Maximum object size5 TB (via multipart upload)
Maximum single-request upload5 GB; larger objects must use multipart
Multipart part size5 MB to 5 GB, up to 10,000 parts
Bucket names3 to 63 characters: lowercase letters, digits and dashes; unique within your account
Object keysUp to 1024 bytes of UTF-8; / acts as a folder separator in listings
Buckets and access keys per accountUnlimited
Stored capacity50 GB free, then $3 per TB per month. See pricing

Quick start (console)

  1. Create an account and sign in. You land in the console at /app.
  2. Click New bucket, give it a name such as backups, and open it.
  3. Drag files onto the page, or click Upload. Large files upload in parallel parts and resume if the connection drops.
  4. Click a file to see its details, download it, or copy a share link.
  5. Open Access keys in the console to create credentials for your tools, then follow the section for your client below.

Folders in the console are prefixes: a file uploaded into photos/2026/ has the key photos/2026/name.jpg. There is no separate folder object.

Access keys

Tools authenticate with an access key ID and a secret access key, exactly as with S3. Create them in the console under Access keys.

  • Scope: read-write keys can create, upload, list and delete. Read-only keys can list and download only, which is right for media players and mirrors.
  • The secret is shown once, at creation. Store it in your tool's config or a password manager. If it is lost, revoke the key and create a new one.
  • Keys belong to your account and see all of your buckets. Revoking a key takes effect immediately.
  • Give each tool or machine its own key so you can revoke one without touching the others.
A key is a password. Do not paste it into shared scripts, tickets or chat. Rotate it if you suspect it leaked.

Endpoint and region

SettingValue
Endpointhttps://s3.enderchest.store
Regioneu-ams-1. Requests signed with any other region name are also accepted
LocationData is stored in Amsterdam, Netherlands; the gateway runs in Helsinki, Finland
AddressingPath-style: https://s3.enderchest.store/bucket/key
SignatureAWS Signature Version 4, header or presigned query
TLSRequired in production; use the https:// endpoint

Most clients call this "provider: Other", "custom endpoint" or "S3-compatible". Path-style addressing must be enabled: bucket names go in the path, not in the hostname. Every example below sets it.

Clients and tools

Each client has its own page with the exact settings and the everyday commands. All of them use the endpoint and region above with path-style addressing.

Share links

A share link is a download URL for one file that works without an account. Create one from the file's detail panel in the console, choose how long it stays valid (up to 30 days), and send it.

  • The link grants read access to that one file only. It cannot be used to list or reach anything else.
  • Links expire at the time you chose. An expired link returns an error rather than the file.
  • To revoke a link early, delete the file or upload a new version over it; existing links stop working.
  • Range requests work over share links, so a video link seeks normally in a browser or player.

If you need programmatic links, use S3 presigned URLs from your client (see the boto3 example); those are signed with your access key and can also be revoked by revoking the key.

Large files and multipart uploads

Objects above a few hundred megabytes should be uploaded in parts. Every listed client does this automatically; the console does it for anything larger than 64 MB.

  • Parts are 5 MB to 5 GB each, up to 10,000 parts, for a maximum object of 5 TB.
  • Each part is durable the moment its upload returns. If the connection drops, only the part in flight is lost.
  • The console remembers unfinished uploads in your browser and resumes them from the last completed part when you drop the same file again.
  • The parts of an unfinished upload are stored data: they count toward your usage and your storage limit until the upload is completed or aborted.
  • Unfinished multipart uploads that are never completed are cleaned up after 7 days.
  • The ETag of a multipart object is not the MD5 of the whole file. Clients that verify by MD5 (rclone, the AWS CLI) know this and check part-by-part instead.

Data protection

Encryption

Every object gets its own random 256-bit key. Data is encrypted with AES-256-GCM in authenticated 1 MiB frames before it reaches storage, and each object key is wrapped by a master key held only by the gateway. The storage layer never sees plaintext, file names or your account.

Integrity

The MD5 (as the ETag) and SHA-256 of every upload are recorded. Reads are authenticated frame by frame; a corrupted frame fails the read rather than returning bad bytes.

Deletion

Deleting an object removes its record and destroys its encryption key immediately, so the stored ciphertext can never be read again, by us or anyone else. The ciphertext itself may stay on the storage layer. Overwriting an object replaces it; the previous contents are not kept. There is no versioning and no recycle bin.

Pricing and limits

ItemPrice
Storage$3 per TB per month, charged by the day
Free allowanceThe first 50 GB on every account
Downloads (egress)Free
API requestsFree
  • How usage is measured. We record the largest amount each account stored on each day (UTC). Storage above the free 50 GB is charged at the daily share of the monthly rate, so one terabyte stored for 15 days of a 30-day month costs half of $3.
  • Paying. Add a card on the Billing page of the console. After each month what you stored is added to your balance, and once the balance reaches $5 the card is charged for the whole amount. A smaller balance carries forward. There is no minimum charge and no commitment.
  • Storing more than 50 GB. New accounts are limited to the free allowance. Add a card in the console to lift the limit; accounts with a card have no storage limit.
  • Storage limit. When a free account reaches 50 GB, uploads are refused with the message storage limit reached (HTTP 413 in the console, QuotaExceeded over the S3 API). Delete data or add a card and uploads resume immediately.
  • Downloads are not metered or billed.
  • Your usage and the charge for the current month so far are shown on the Account page of the console.

Supported S3 operations

OperationStatusNotes
ListBucketsSupportedBuckets owned by the key's account
CreateBucketSupportedNames are unique within your account; creating one you already have answers BucketAlreadyOwnedByYou
DeleteBucketSupportedBucket must be empty
HeadBucketSupported
GetBucketLocationSupportedReturns eu-ams-1
ListObjectsV2SupportedPrefix, delimiter, continuation tokens, start-after
ListObjects (v1)SupportedMarker pagination
PutObjectSupportedUp to 5 GB per request; chunked and unsigned payloads accepted
GetObjectSupportedRange requests, conditional headers
HeadObjectSupported
DeleteObjectSupported
DeleteObjectsSupportedUp to 1000 keys per request
CopyObjectSupportedWithin your account; copies data server-side
CreateMultipartUploadSupported
UploadPartSupported5 MB to 5 GB, 10,000 parts
CompleteMultipartUploadSupported
AbortMultipartUploadSupported
ListPartsSupported
ListMultipartUploadsSupported
Presigned URLsSupportedGET and PUT, up to 7 days

Not supported

FeatureStatusNotes
VersioningNoOverwrites and deletes are final
ACLs and bucket policiesNoEverything is private to the account; use share links or presigned URLs
Lifecycle rulesNoUse your client's retention (for example restic forget)
Static website hostingNo
Object Lock and legal holdNo
Object tagging and metadata queriesNoContent-Type is stored; other metadata is ignored
Server-side encryption headersIgnoredEverything is already encrypted at rest; SSE headers are accepted and ignored
Virtual-host addressingNoUse path-style

Unsupported operations return a standard S3 NotImplemented error, which well-behaved clients report clearly.

FAQ and support

My client says "SignatureDoesNotMatch"

The usual causes are path-style addressing being disabled, an endpoint with a trailing slash or the wrong scheme, or a system clock that is more than 15 minutes off. The region can be anything, but it must be the same value in every place the client asks for it.

My client says "AccessDenied" on upload

Either the key is read-only or a free account has reached its storage limit, in which case the message says so. Check the key's scope and your usage in the console.

Listing is slow with a huge flat prefix

Listings return up to 1000 keys per page. Use a delimiter (/) and organise keys into prefixes; listing a prefix costs one lookup per child, not per descendant.

Can I get my data out in bulk?

Yes, at any time: rclone copy enderchest:bucket /local. Downloads are free.

Support

Email [email protected]. Include your account email, the bucket, the client and version, and the exact error. We reply within one business day.